Функция ВыгрузитьПоПравилу() в КД 2. Запуск произвольной конвертации данных
Применение функции ВыгрузитьПоПравилу()
-
В алгоритмах выгрузки начальных остатков. Например, сформировали таблицу значений ТаблицаОстатков. Каждая ее строка - это данные по одной из организаций. В отдельной колонке хранится табличная часть Товары, например.
Выгрузка остатков в этом случае будет выглядеть так (код располагайте в ПВД):
Для Каждого Строка Из ТаблицаОстатков Цикл
ВыгрузитьПоПравилу(Строка, , , , “ВводОстатковТоваров”);
КонецЦикла;Здесь ВводОстатковТоваров - это имя ПКО для документа ввода остатков товаров (он в разных конфигурациях 1С называется по-разному).
- Когда один вид объекта необходимо конвертировать сразу в два объекта. Например, в переносе УПП - ERP нужно документ Авансовый отчет (УПП) одновременно записывать и как документ Авансовый отчет (ERP) и как Приобретение товаров и услуг (ERP) с видом операции Приобретение подотчетным лицом.
-
Для оптимизации алгоритмов выгрузки. Например, нам надо выгружать номенклатуру по сложному “тяжелому” алгоритму и одновременно для каждой позиции номенклатуры выгружать все ее упаковки. Или не все, а не архивные. Чтобы это не делать в процессе выгрузки. А ведь на каждый элемент номенклатуры может быть очень много ссылок. Чтобы эти “тяжелые” алгоритмы не выполнять снова и снова, можно использовать некое облегченное ПКО. В момент его вызова пополнять массив элементов номенклатуры. И в глобальном обработчике конвертации ПослеВыгрузкиОбъектов уже запустить полноценный алгоритм выгрузки со всеми тяжелыми алгоритмами.
Примерно так он может выглядеть:
Для Каждого Элемент Из Параметры.МассивНоменклатуры Цикл
ВыгрузитьПоПравилу(Элемент, , , , “Номенклатура”);
КонецЦикла;
Рекомендации специалисту 1С по вызову “ВыгрузитьПоПравилу”
- Далее приводим информацию из ИТС по этой функции. Но в большинстве случаев в ней используются только первые пять параметров и синтаксис вызова выглядит так:
ВыгрузитьПоПравилу(Источник, , ВходящиеДанные, ИсходящиеДанные, ИмяПКО);
И в большинстве случае даже это необязательно, вызывают:
ВыгрузитьПоПравилу(Источник, , , , ИмяПКО);
- Переменная Источник может быть произвольного типа. Обычно это ссылка на объект или структура или строка табличной части или элемент выборки запроса.
- Помните, что обычно в ПКС если вы заполняете ИсходящиеДанные, то внутри того ПКО, которые вы вызвали из ПКС, это будет уже переменная ВходящиеДанные. То есть исходящие превращаются во входящие. Так вот тут все не так. Какую переменную тут передадите во ВходящиеДанные, та в обработчиках вызванного ПКО и будет входящими данными.
- Для быстрой выгрузки набора записей регистров (за один вызов, а не в цикле) лучше использовать функцию ВыгрузитьРегистр. Рекомендации и пример кода с ней читайте в отдельной статье: https://moscowsoft.com/statii/programmirovanie_na_1s_predpriyatie/funktsiya_vygruzitregistr_v_konvertatsii_dannykh/
Документация ИТС для функции ВыгрузитьПоПравилу()
Параметры функции
Все параметры функции являются необязательными. Но все-таки обычно нужно заполнить либо Источник, либо ВходящиеДанные. И также ИмяПКО тоже заполняют, не оставляют пустым этот параметр.
Функция ВыгрузитьПоПравилу(
Источник = Неопределено,
Приемник = Неопределено,
ВходящиеДанные = Неопределено,
ИсходящиеДанные = Неопределено,
ИмяПКО = "",
УзелСсылки = Неопределено,
ТолькоПолучитьУзелСсылки = Ложь,
ПКО = Неопределено,
ВыгружатьСсылкиУПодчиненныхОбъектов = Истина,
ВыгрузкаСтрокиНабораЗаписейРегистра = Ложь,
УзелПредка = Неопределено,
ИмяКонстантыДляВыгрузки = "",
ЭтоВыгружаетсяОбъект = Неопределено,
ЭтоПравилоСГлобальнойВыгрузкойОбъектов = Ложь,
НеИспользоватьПравилоСГлобальнойВыгрузкойИНеЗапоминатьВыгруженные = Ложь,
СтекВыгрузкиОбъекта = Неопределено) Экспорт
Параметры
- Источник - Произвольный - произвольный источник данных.
- Приемник - ЗаписьXML - xml-узел объекта приемника.
- ВходящиеДанные - Произвольный - вспомогательные данные, передаваемые правилу для выполнения конвертации.
- ИсходящиеДанные - Произвольный - произвольные вспомогательные данные, передаваемые правилам конвертации свойств.
- ИмяПКО - Строка - имя правила конвертации, согласно которому осуществляется выгрузка.
- УзелСсылки - ЗаписьXML - xml-узел ссылки объекта приемника.
- ТолькоПолучитьУзелСсылки - Булево - если Истина, то выгрузка объекта не производится, только формируется xml-узел ссылки.
- ПКО - СтрокаТаблицыЗначений - строка таблицы правил конвертации.
- ВыгружатьСсылкиУПодчиненныхОбъектов - Булево - если Истина то выгружаются ссылки у подчиненных объектов.
- ВыгрузкаСтрокиНабораЗаписейРегистра - Булево - если Истина то происходит выгрузка строки набора записей.
- УзелПредка - ЗаписьXML - xml-узел предка объекта приемника.
- ИмяКонстантыДляВыгрузки - Строка - значение, которое следует записать в атрибут ИмяКонстанты.
- ЭтоВыгружаетсяОбъект - Булево - признак того что выгружается объект.
- ЭтоПравилоСГлобальнойВыгрузкойОбъектов - Булево - признак глобальной выгрузки объектов.
- НеИспользоватьПравилоСГлобальнойВыгрузкойИНеЗапоминатьВыгруженные - Булево - не используется.
- СтекВыгрузкиОбъекта - Массив из ЛюбаяСсылка - содержит сведения о вышестоящих объектах выгрузки.