Выгрузка табличной части документа в Регистр сведений при помощи КД 2.0
В этой статье мы рассмотрим, как с помощью конфигурации «Конвертация данных 2.0» можно передать данные из табличной части документа в регистр сведений. Сделать это достаточно просто, используя процедуру «ВыгрузитьПоПравилу». Статья рассчитана на тех, кто минимально уже знаком с КД 2.0 и не будет включать общих инструкций по созданию правил обмена и функционалу данной конфигурации.
Contents
Шаг 1. Создать правило конвертации объекта (ПКО) и добавить правила конвертации свойств (ПКС)
Для начала нам необходимо создать ПКО, где Источник останется пустым, а в приемнике будет указан наш Регистр сведений:
Далее добавим в конвертации свойств необходимые для выгрузки ПКС. Как и в ПКО, Источник будет пустым, а в приёмнике будут указаны поля Регистра сведений. Если будут передаваться поля ссылочного типа, необходимо создать для них соответствующие правила конвертации, например: «Номенклатура», «Контрагент» и т.д.
Шаг 2. Создать запрос для выборки и передачи данных
Вторым шагом будет создание запроса на вкладе «Алгоритмы\Запросы», с помощью которого мы произведем выборку необходимых нам данных из табличной части документа для их последующей передачи. Поля в запросе нужно назвать соответственно полям приемника и добавить условие на ссылку документа.
Шаг 3. Создать правило выгрузки данных
После создания запроса всё, что нам остается сделать – это создать правило выгрузки данных. Объектом выборки будет документ, из табличной части которого мы отбираем данные для выгрузки. Правило конвертации можно оставить пустым, так как его мы укажем непосредственно в процедуре «ВыгрузитьПоПравилу». В обработчике «Перед выгрузкой» мы устанавливаем Параметр «Отказ» в значение Истина, для того чтобы сами наши документы в выгрузке не участвовали.
Отказ = Истина;
Далее, если нужно сделать дополнительный отбор по документам, который необходимо обработать, прописываем необходимые условия:
Если Объект.Проведен И Объект.ВидОперации = Перечисления.ВидыОперацийВозвратТоваровПоставщику.ПеремещениеНаДоработку Тогда
//Код выполнения запроса и выгрузки данных
КонецЕсли;
Выполняем наш запрос с установленными параметрами, в нашем случае это только ссылка документа, из которого необходимо получить нужные нам данные:
Запросы.ЗапросДанныхВТП.УстановитьПараметр("Ссылка",Объект.Ссылка);
Результат = Запросы.ЗапросДанныхВТП.Выполнить();
И наконец, выполнив запрос, обходим в цикле результат запроса и каждую итерацию выгружаем по нашему созданному ПКО:
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка, , , , "ЦОБ_ОчередьШассиНаДоработу");
КонецЦикла;
Если перед выгрузкой результат запроса необходимо как-то обработать, то мы можем создать структуру со свойствами, соответствующими свойствам из созданных нами ранее правил конвертации.
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Парам = Новый Структура;
Парам.Вставить("Номенклатура", Выборка.Номенклатура);
Парам.Вставить("ХарактеристикаНоменклатуры", Лев(Выборка.ХарактеристикаНоменклатуры, СтрНайти(Выборка.ХарактеристикаНоменклатуры, "/")-2));
Парам.Вставить("Грузополучатель", Выборка.Грузополучатель);
Парам.Вставить("Контрагент", Выборка.Контрагент);
Парам.Вставить("Комментарий", Выборка.Комментарий);
Парам.Вставить("ДатаВозврата", Выборка.ДатаВозврата);
ВыгрузитьПоПравилу(Парам, , , , "ЦОБ_ОчередьШассиНаДоработу");
КонецЦикла;
Готово!
Comments
So empty here ... leave a comment!