Top.Mail.Ru

Выгрузка табличной части документа в Регистр сведений при помощи КД 2.0

В этой статье мы рассмотрим, как с помощью конфигурации «Конвертация данных 2.0» можно передать данные из табличной части документа в регистр сведений. Сделать это достаточно просто, используя процедуру «ВыгрузитьПоПравилу». Статья рассчитана на тех, кто минимально уже знаком с КД 2.0 и не будет включать общих инструкций по созданию правил обмена и функционалу данной конфигурации.

Шаг 1. Создать правило конвертации объекта (ПКО) и добавить правила конвертации свойств (ПКС)

Для начала нам необходимо создать ПКО, где Источник останется пустым, а в приемнике будет указан наш Регистр сведений:

Правило конвертации объекта
Правило конвертации объекта

Далее добавим в конвертации свойств необходимые для выгрузки ПКС. Как и в ПКО, Источник будет пустым, а в приёмнике будут указаны поля Регистра сведений. Если будут передаваться поля ссылочного типа, необходимо создать для них соответствующие правила конвертации, например: «Номенклатура», «Контрагент» и т.д.

Правило конвертации объекта
Правила конвертации свойств

Шаг 2. Создать запрос для выборки и передачи данных

Вторым шагом будет создание запроса на вкладе «Алгоритмы\Запросы», с помощью которого мы произведем выборку необходимых нам данных из табличной части документа для их последующей передачи. Поля в запросе нужно назвать соответственно полям приемника и добавить условие на ссылку документа.

Запрос получения необходимых данных для выгрузки из табличной части документа
Запрос получения необходимых данных для выгрузки из табличной части документа

Шаг 3. Создать правило выгрузки данных

После создания запроса всё, что нам остается сделать – это создать правило выгрузки данных. Объектом выборки будет документ, из табличной части которого мы отбираем данные для выгрузки. Правило конвертации можно оставить пустым, так как его мы укажем непосредственно в процедуре «ВыгрузитьПоПравилу». В обработчике «Перед выгрузкой» мы устанавливаем Параметр «Отказ» в значение Истина, для того чтобы сами наши документы в выгрузке не участвовали.

Отказ = Истина;

Далее, если нужно сделать дополнительный отбор по документам, который необходимо обработать, прописываем необходимые условия:

Если Объект.Проведен И Объект.ВидОперации = Перечисления.ВидыОперацийВозвратТоваровПоставщику.ПеремещениеНаДоработку Тогда
//Код выполнения запроса и выгрузки данных
КонецЕсли;

Выполняем наш запрос с установленными параметрами, в нашем случае это только ссылка документа, из которого необходимо получить нужные нам данные:

Запросы.ЗапросДанныхВТП.УстановитьПараметр("Ссылка",Объект.Ссылка);
	
Результат = Запросы.ЗапросДанныхВТП.Выполнить();

И наконец, выполнив запрос, обходим в цикле результат запроса и каждую итерацию выгружаем по нашему созданному ПКО:

Выборка = Результат.Выбрать(); 
Пока Выборка.Следующий() Цикл 
	ВыгрузитьПоПравилу(Выборка, , , , "ЦОБ_ОчередьШассиНаДоработу");  
КонецЦикла;

Если перед выгрузкой результат запроса необходимо как-то обработать, то мы можем создать структуру со свойствами, соответствующими свойствам из созданных нами ранее правил конвертации.

Выборка = Результат.Выбрать(); 
Пока Выборка.Следующий() Цикл 
	Парам = Новый Структура;
	Парам.Вставить("Номенклатура", Выборка.Номенклатура);
	Парам.Вставить("ХарактеристикаНоменклатуры", Лев(Выборка.ХарактеристикаНоменклатуры, СтрНайти(Выборка.ХарактеристикаНоменклатуры, "/")-2));
	Парам.Вставить("Грузополучатель", Выборка.Грузополучатель);
	Парам.Вставить("Контрагент", Выборка.Контрагент);
	Парам.Вставить("Комментарий", Выборка.Комментарий);
	Парам.Вставить("ДатаВозврата", Выборка.ДатаВозврата);
		
	ВыгрузитьПоПравилу(Парам, , , , "ЦОБ_ОчередьШассиНаДоработу");  
КонецЦикла;
Общий вид правил выгрузки
Общий вид правил выгрузки

Готово!

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar