![]() |
|
Конвертация данных по произвольному алгоритму | ☑ | ||
---|---|---|---|---|
0
Игорь_МММ
17.03.16
✎
17:34
|
делаю выгрузку из самописной конфы в БП. Сделал ПВД со способом выборки "произвольный алгоритм", результат запроса записал в ВыборкаДанных.
Как теперь создать ПКС? откуда взять поля источника - они же в ВыборкеДанных? |
|||
1
mikecool
17.03.16
✎
17:35
|
(0) оттуда и бери и не забудь убрать у пко признак "не запоминать выгруженные"
|
|||
2
Cyberhawk
17.03.16
✎
17:36
|
ПКС создаешь кнопкой (командой) "Создать", источник не указываешь
|
|||
3
Игорь_МММ
17.03.16
✎
17:40
|
(1) (2) а как сопоставляться будут данные? не нужно тогда в запросе псевдонимы указывать как-то специально?
|
|||
4
hhhh
17.03.16
✎
17:42
|
(3) да, псевдонимы в запросе указывай.
|
|||
5
Cyberhawk
17.03.16
✎
17:43
|
(3) Поля в результирующем запросе должны совпадать с именами свойств приемника в ПКС
|
|||
6
Игорь_МММ
17.03.16
✎
17:46
|
выгружаю спецификации номенклатуры. Нужно выгрузить Владельца, Количество присвоить =1 и заполнить ИсходныеКомплектующие.
Запрос такой: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказыПокупателейТовары.Товар, | ЗаказыПокупателейТовары.Количество, | ПотребностьПоСпецификацииПереченьЗаказа.Номенклатура, | ПотребностьПоСпецификацииПереченьЗаказа.Количество КАК Количество1 |ПОМЕСТИТЬ таблица |ИЗ | Справочник.ЗаказыПокупателей.Товары КАК ЗаказыПокупателейТовары | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПотребностьПоСпецификации КАК ПотребностьПоСпецификации | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПотребностьПоСпецификации.ПереченьЗаказа КАК ПотребностьПоСпецификацииПереченьЗаказа | ПО ПотребностьПоСпецификации.Ссылка = ПотребностьПоСпецификацииПереченьЗаказа.Ссылка | ПО ЗаказыПокупателейТовары.Спецификация = ПотребностьПоСпецификации.ИмяСпецификации |ГДЕ | ЗаказыПокупателейТовары.Выгружать = ИСТИНА |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | таблица.Товар, | таблица.Количество * таблица.Количество1 КАК Количество, | таблица.Номенклатура |ИЗ | таблица КАК таблица"; ВыборкаДанных = Запрос.Выполнить().Выбрать(); Владельца как обозвать? прям вот таблица.Товар КАК Владелец? |
|||
7
mikecool
17.03.16
✎
17:46
|
(6) да
|
|||
8
Игорь_МММ
17.03.16
✎
17:48
|
(4) (5) (7) спасибо
|
|||
9
Игорь_МММ
17.03.16
✎
17:56
|
одинаковое наименование реквизита Количество в табличной части и в основных реквизитах. Тогда как именовать?
|
|||
10
Игорь_МММ
17.03.16
✎
18:02
|
В СпецификацииНоменклатуры есть реквизит Количество и в ТЧ ИсходныеКомплектующие есть реквизит Количество
|ВЫБРАТЬ | таблица.Товар КАК Владелец, | 1 КАК Количество | таблица.Количество * таблица.Количество1 КАК Количество2, | таблица.Номенклатура |ИЗ | таблица КАК таблица"; ВыборкаДанных = Запрос.Выполнить().Выбрать(); Как правильно обозвать Количество2 ? |
|||
11
Cyberhawk
17.03.16
✎
18:04
|
Одинаково его обозвать...
ВыборкаДанных = Новый ТаблицаЗначений; ВыборкаДанных.Колонки.Добавить("Дата"); ВыборкаДанных.Колонки.Добавить("Организация"); ВыборкаДанных.Колонки.Добавить("Склад"); ВыборкаДанных.Колонки.Добавить("Партнер"); ВыборкаДанных.Колонки.Добавить("Контрагент"); ВыборкаДанных.Колонки.Добавить("Договор"); ВыборкаДанных.Колонки.Добавить("Товары"); ВыборкаДанных.Колонки.Добавить("Серии"); ВыборкаДанных.Колонки.Добавить("Комментарий"); РезультатыЗапроса = Запрос.Выполнить(); ВыборкаПоОрганизациям = РезультатыЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоОрганизациям.Следующий() Цикл ВыборкаПоСкладам = ВыборкаПоОрганизациям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаПоСкладам.Следующий() Цикл НоваяСтрока = ВыборкаДанных.Добавить(); НоваяСтрока.Дата = ДатаНачала; НоваяСтрока.Организация = ВыборкаПоОрганизациям.Организация; НоваяСтрока.Склад = ВыборкаПоСкладам.Склад; НоваяСтрока.Комментарий = НСтр("ru = 'БП 2.0 -> ЕРП 2.0: ТМЦ (счет 10)'"); НоваяСтрока.Товары = Новый ТаблицаЗначений; НоваяСтрока.Товары.Колонки.Добавить("Номенклатура"); НоваяСтрока.Товары.Колонки.Добавить("Характеристика"); НоваяСтрока.Товары.Колонки.Добавить("Качество"); НоваяСтрока.Товары.Колонки.Добавить("Количество"); НоваяСтрока.Товары.Колонки.Добавить("КоличествоУпаковок"); НоваяСтрока.Товары.Колонки.Добавить("Цена"); НоваяСтрока.Товары.Колонки.Добавить("Сумма"); НоваяСтрока.Товары.Колонки.Добавить("СуммаРегл"); НоваяСтрока.Товары.Колонки.Добавить("СтавкаНДС"); НоваяСтрока.Товары.Колонки.Добавить("СуммаБезНДС"); НоваяСтрока.Товары.Колонки.Добавить("СуммаНДС"); НоваяСтрока.Товары.Колонки.Добавить("НДСРегл"); НоваяСтрока.Товары.Колонки.Добавить("НомерГТД"); НоваяСтрока.Серии = Новый ТаблицаЗначений; НоваяСтрока.Серии.Колонки.Добавить("Номенклатура"); НоваяСтрока.Серии.Колонки.Добавить("Характеристика"); НоваяСтрока.Серии.Колонки.Добавить("Качество"); НоваяСтрока.Серии.Колонки.Добавить("Серия"); НоваяСтрока.Серии.Колонки.Добавить("Количество"); НоваяСтрока.Серии.Колонки.Добавить("КоличествоУпаковок"); ВыборкаДетальныеЗаписи = ВыборкаПоСкладам.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл СтрокаСообщения = ""; Если ВыборкаДетальныеЗаписи.Количество < 0.00 Тогда СтрокаСообщения = "Обнаружен отрицательный остаток на складе ""%1"" по товару ""%2"" при выгрузке по правилу: ""%3"""; ИначеЕсли ВыборкаДетальныеЗаписи.Сумма <= 0.00 Или ВыборкаДетальныеЗаписи.Количество = 0.00 Тогда СтрокаСообщения = "Обнаружен некорректный суммовой остаток на складе ""%1"" по товару ""%2"" при выгрузке по правилу: ""%3"""; КонецЕсли; Если ЗначениеЗаполнено(СтрокаСообщения) Тогда СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "%1", ВыборкаПоСкладам.Склад); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "%2", ВыборкаДетальныеЗаписи.Номенклатура); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "%3", "ТМЦ (счет 10)"); Сообщить(СтрокаСообщения, СтатусСообщения.ОченьВажное); Продолжить; КонецЕсли; НоваяСтрокаТовары = НоваяСтрока.Товары.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, ВыборкаДетальныеЗаписи); Если НЕ ЗначениеЗаполнено(НоваяСтрокаТовары.СтавкаНДС) Тогда НоваяСтрокаТовары.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС; КонецЕсли; НоваяСтрокаТовары.Цена = ВыборкаДетальныеЗаписи.Сумма / ВыборкаДетальныеЗаписи.Количество; НоваяСтрокаТовары.КоличествоУпаковок = ВыборкаДетальныеЗаписи.Количество; СтавкаНДСЧислом = УчетНДС.ПолучитьСтавкуНДС(ВыборкаДетальныеЗаписи.СтавкаНДС) / 100; НоваяСтрокаТовары.СуммаНДС = НоваяСтрокаТовары.Сумма / (СтавкаНДСЧислом + 1) * СтавкаНДСЧислом; НоваяСтрокаТовары.НДСРегл = НоваяСтрокаТовары.Сумма / (СтавкаНДСЧислом + 1) * СтавкаНДСЧислом; НоваяСтрокаТовары.СуммаБезНДС = НоваяСтрокаТовары.Сумма - НоваяСтрокаТовары.СуммаНДС; НоваяСтрокаТовары.СуммаРегл = НоваяСтрокаТовары.Сумма - НоваяСтрокаТовары.НДСРегл; Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.НомерГТД) Тогда НоваяСтрокаТовары.НомерГТД = Новый Структура; НоваяСтрокаТовары.НомерГТД.Вставить("Владелец", ВыборкаДетальныеЗаписи.Номенклатура); НоваяСтрокаТовары.НомерГТД.Вставить("СтранаПроисхождения", ВыборкаДетальныеЗаписи.СтранаПроисхождения); //НоваяСтрокаТовары.НомерГТД.Вставить("ПометкаУдаления", ВыборкаДетальныеЗаписи.ПометкаУдаления); НоваяСтрокаТовары.НомерГТД.Вставить("Код", ВыборкаДетальныеЗаписи.НомерГТД); КонецЕсли; КонецЦикла; КонецЦикла; КонецЦикла; |
|||
12
Игорь_МММ
17.03.16
✎
18:10
|
(11) да, смысл понял
а ВыборкаДанных = ТаблицаЗначений - это ОК? то есть на будущее, это одно и тоже ВыборкаДанных = Запрос.Выполнить().Выбрать(); и ВыборкаДанных = Запрос.Выполнить().Выгрузить(); |
|||
13
Cyberhawk
17.03.16
✎
18:53
|
(12) Это имя параметра обработчика "Перед обработкой" у ПВД.
"ВыборкаДанных - Запрос, Результат запроса, Выборка из результата запроса или произвольная коллекция выгружаемых объектов." ТЗ туда запросто можно подсовывать. Структура ТЗ должна повторять структуру твоего объекта-приемника. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |