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

Кроме того, для ссылочных реквизитов можно указать правило конвертации объектов, которое необходимо применить для переноса значения данного реквизита.
Поиск объекта при загрузке по данному свойству — флаг определяющий нужно ли по данному свойству производить поиск объектов в информационной базе приемнике. Если сразу у нескольких реквизитов установлено свойство поиска данных, то условия поиска объединяются по «И». В этом случае правило поиска звучит следующим образом: Найти объект у которых все реквизиты поиска совпадают с источником. (ВНИМАНИЕ. Поиск по уникальному идентификатору, который может быть установлен у правила конвертации объектов более приоритетный, то есть если он установлен то поиск будет выполнен по этому идентификатору).
Отключить обработку данного правила — флаг, позволяет отключить обработку данного свойства, не удаляя его из правил конвертации объектов.
Не замещать значение данного свойства у существующих объектов ИБ — флаг, позволяет отключить обработку данного для объектов информационной базы приемника, которые были найдены по уникальному идентификатору или по полям поиска.
Автоматически приводить значение к длине приемника — флаг, позволяет включить автоматическое приведение Номера или Кода справочника соответствующему значению в приемнике по длине. При этом префиксы сохраняются, а числовые части преобразуются под длину поля в приемнике.
ТОЛЬКО ДЛЯ ОБМЕНА V8 — V8
Функционал, позволяющий передавать дополнительные параметры в информационную базу приемник из источника.
Передавать данные в приемник — флаг определяет куда будут помещены данные при загрузке. Непосредственно в найденный для изменения объект.
Передавать данные в параметр — флаг определяет куда будут помещены данные при загрузке. В отдельное соответствие для данного объекта, но не в сам объект. Этот подход удобен когда нужно передать какое либо значение в приемник, но нет реквизита куда нужно его поместить. Впоследствии анализируя дополнительные параметры можно изменить логику заполнения объекта приемника. В правилах необходимо указать имя параметра куда нужно поместить данные. Для табличных частей и наборов движений для каждой строки формируется отдельная структура в которой хранится информация.
Доступ к этим данным возможен в событии правила конвертации объекта «После загрузки». Например, так:
Выгружать элементы группы через промежуточный файл — флаг определяет как выгружать объекты данного типа, через промежуточный файл (экономично с точки зрения оперативной памяти) или напрямую через память (оптимально по скорости, но при больших объемах передаваемых данных оперативная память может закончится).
На закладке «Дополнительно» можно редактировать вхождение правила в определенную группу, а так же его описание. Наименование правила формируется автоматически и недоступно для изменения.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Как создать правило для конвертации значения неопределенного типа?
Приемник: Субконто1
ДокументСсылка.АвансовыйОтчет, ПеречислениеСсылка.ВидыНачисленийПоОплатеТруда, ПеречислениеСсылка.ВидыРасчетовСПокупателями, ДокументСсылка.Сторно, ПеречислениеСсылка.Пол, ДокументСсылка.ТЭЦ_ДокументОперация, ПеречислениеСсылка.СпособыУчетаГПиПФ, ДокументСсылка.Выписка, ПеречислениеСсылка.ПериодичностьУплатыНалога, ПеречислениеСсылка.ВидыОбеспеченияОбязательств, СправочникСсылка.ТЭЦ_ДомаТЭЦ, ПеречислениеСсылка.Булево, СправочникСсылка.ТЭЦ_Недоимка, ПеречислениеСсылка.ВидыДоходов, ПеречислениеСсылка.ВидыРасходов, ПеречислениеСсылка.СпособыПоступленияОС, ПеречислениеСсылка.СЗВОсобыеУсловияТруда, ПеречислениеСсылка.РазрезыДеятельности, ПеречислениеСсылка.ТЭЦ_ВидыУведомлений, ДокументСсылка.ТЭЦ_Квартплата, ПеречислениеСсылка.БазаРаспределенияКосвенныхРасходов, ДокументСсылка.Операция, ДокументСсылка.ТЭЦ_СчетФактура, СправочникСсылка.СтавкиНП, ПеречислениеСсылка.СЗВОснованияВыслугиЛет2002, СправочникСсылка.ОКСМ, ПеречислениеСсылка.ИсточникиЦелевыхПоступлений, СправочникСсылка.ВидыНоменклатуры, ПеречислениеСсылка.ВнереализационныеДоходы, СправочникСсылка.Номенклатура, СправочникСсылка.Контрагенты, СправочникСсылка.Договоры, СправочникСсылка.СтатьиКоммерческихРасходов, СправочникСсылка.Банки, СправочникСсылка.ОбъектыСтроительства, ПеречислениеСсылка.СпособыНачисленияАмортизацииНМА, ДокументСсылка.ТЭЦ_СписаниеОС, СправочникСсылка.ТЭЦ_Счет60, СправочникСсылка.БланкиСтрогойОтчетности, ПеречислениеСсылка.ТипОС, СправочникСсылка.ЦенныеБумаги, ПеречислениеСсылка.СостоянияНМА, ПеречислениеСсылка.ПричиныСписанияНМА, СправочникСсылка.ДоходыБудущихПериодов, ПеречислениеСсылка.ВариантыОтпускныхЦен, СправочникСсылка.НазначенияИспользования, ПеречислениеСсылка.СЗВОтчетныйПериод, ПеречислениеСсылка.НазначенияЦелевыхСредств, ПеречислениеСсылка.Бюджеты, СправочникСсылка.ТЭЦ_ТипыНоменклатуры, ДокументСсылка.РасходныйОрдер, ПеречислениеСсылка.СЗВПараметр3ИТС, СправочникСсылка.СтатьиЗатратОбслуживающихПроизводств, ПеречислениеСсылка.УсловияВыбытияИмущества, ПеречислениеСсылка.МетодыНачисленияАмортизации, ДокументСсылка.ТЭЦ_СчетФактураЭнергосбыт, СправочникСсылка.ВариантыРасчетаНалогов, СправочникСсылка.ПрочиеДоходыИРасходы, ПеречислениеСсылка.СпособыВеденияНалоговогоУчета, СправочникСсылка.СтатьиРасходовНаПродажу, ПеречислениеСсылка.ГруппыНМА, СправочникСсылка.ДвиженияДенежныхСредств, ПеречислениеСсылка.СЗВТипФормы, ДокументСсылка.ПлатежноеПоручение, ПеречислениеСсылка.СпособыПоступленияНМА, СправочникСсылка.ДокументыУдостоверяющиеЛичность, ПеречислениеСсылка.БУ, СправочникСсылка.ФП_ВыгрузкаДанных, ДокументСсылка.СчетФактура, СправочникСсылка.ТЭЦ_ВариантыРеализации, СправочникСсылка.НематериальныеАктивы, ПеречислениеСсылка.ПризнакДоходаРасхода, ДокументСсылка.ТЭЦ_ПриходТМЦ, ПеречислениеСсылка.СЗВОснованияВыслугиЛет, СправочникСсылка.Оборудование, ДокументСсылка.ТЭЦ_АктПоВекселям, ДокументСсылка.ТЭЦ_СудебныйИск, ПеречислениеСсылка.БазаРаспределенияПрямыхРасходов, ДокументСсылка.ПлатежноеТребование, ПеречислениеСсылка.ВидыПрочихДоходовИРасходов, ДокументСсылка.ТЭЦ_АктПеремещенияОС, СправочникСсылка.ТЭЦ_ЧастныеЛица, ДокументСсылка.ТЭЦ_СчетФактураАвансовый, ДокументСсылка.ТЭЦ_УслугиСвязи, ДокументСсылка.ТЭЦ_Взаимозачет, СправочникСсылка.Резервы, СправочникСсылка.СтатьиОбщепроизводственныхЗатрат, СправочникСсылка.Сотрудники, ПеречислениеСсылка.СпособыНачисленияАмортизацииОС, СправочникСсылка.СтавкиНДС, ПеречислениеСсылка.УсловияИлиВидыПоступлений, ДокументСсылка.ТЭЦ_ЗаписьКнигиПродажРуками, ПеречислениеСсылка.СтоимостьВыпуска, СправочникСсылка.ТЭЦ_СтатьиЗатратВспомПроизводств, ПеречислениеСсылка.ТипыТМЦ, ДокументСсылка.ТЭЦ_СписаниеОтклоненийМатериалов, СправочникСсылка.Материалы, ПеречислениеСсылка.КатегорияПлательщикаПФ, СправочникСсылка.СтатьиЗатратНаСтроительство, ДокументСсылка.ТЭЦ_АктПеремещенияМатериалов, ПеречислениеСсылка.ВидыАктивовИобязательств, ПеречислениеСсылка.СЗВОснованияИТС2002, ПеречислениеСсылка.НДСпоНепром, СправочникСсылка.СтатьиИздержекОбращения, ПеречислениеСсылка.ТипыНоменклатуры, СправочникСсылка.ЕдиницыИзмерений, ДокументСсылка.ТЭЦ_Счет, ПеречислениеСсылка.СЗВОснованияИТС, ПланСчетовСсылка.Основной, ПеречислениеСсылка.ПодстановкаСуммыНДС, ПеречислениеСсылка.ПризнакЗадолженности, СправочникСсылка.ВидыСубконто, ПеречислениеСсылка.ТипыТоваров, СправочникСсылка.ТЭЦ_ГруппыКонтрагентов, ДокументСсылка.ТЭЦ_ЗаписьКнигиПродаж, ДокументСсылка.ТЭЦ_ВозвратПоАвансам, ДокументСсылка.ЗакрытиеМесяца, СправочникСсылка.РасходыБудущихПериодов, ДокументСсылка.ТЭЦ_ВводОСВЭксплуатацию, ПеречислениеСсылка.ТипыЗаписейКнигиПокупок, СправочникСсылка.ГТД, ПеречислениеСсылка.МетодыОпределенияВыручки, ПеречислениеСсылка.ДиректКостингБазаРаспределения, ДокументСсылка.ТЭЦ_ЗаписьКнигиПокупок, ПеречислениеСсылка.ВидыКонтрагентов, ПеречислениеСсылка.НалогПени, СправочникСсылка.НалогиИОтчисления, СправочникСсылка.МестаХранения, СправочникСсылка.ТЭЦ_ГТС, ПеречислениеСсылка.РаскрываемыеРазделыОтчетности, ПеречислениеСсылка.Фонды, ПеречислениеСсылка.УсловияПоступленияИВыбытия, ПеречислениеСсылка.ВидыНачислений, ПеречислениеСсылка.Налоги, ПеречислениеСсылка.АмортизационныеГруппы, ДокументСсылка.ТЭЦ_ЗакрытиеАналитикиПоСчету20, ПеречислениеСсылка.ВидыПлатежейВБюджет, ДокументСсылка.ТЭЦ_ЗаписьКнигиПокупокРуками, ПеречислениеСсылка.СостоянияОС, ДокументСсылка.ТЭЦ_РазноскаВыписки, ПеречислениеСсылка.МетодыРасчетаСебестоимости, СправочникСсылка.ТЭЦ_Отрасли, ПеречислениеСсылка.УсловияИлиВидыРасходов, СправочникСсылка.СтатьиОбщехозяйственныхЗатрат, СправочникСсылка.ТЭЦ_Жильцы, ПеречислениеСсылка.ГруппыОС, СправочникСсылка.ФП_Справочники, ПеречислениеСсылка.УсловияПолученияИмущества, ПеречислениеСсылка.СЗВОсобыеУсловияТруда2002, ДокументСсылка.ТЭЦ_ЗакрытьОстаткиПоСчету60, ДокументСсылка.ТЭЦ_РаспределениеСчетов, ПеречислениеСсылка.ПрибылиИУбытки, СправочникСсылка.ТЭЦ_СтатьиНедостачи, ПеречислениеСсылка.ТипыБанковскихСчетов, СправочникСсылка.РасчетныеСчета, ПеречислениеСсылка.ГруппыВидыРасходов, ПеречислениеСсылка.ВнереализационныеРасходы, СправочникСсылка.Валюты, ПеречислениеСсылка.ФондыОМС, ПеречислениеСсылка.ВидыПлатежейВФонды, ПеречислениеСсылка.ТерриториальныеУсловия, СправочникСсылка.Подразделения, ПеречислениеСсылка.СпособыСписания97, СправочникСсылка.СтатьиЗатратНаПроизводство, ПеречислениеСсылка.ВидыПлатежныхДокументов, ДокументСсылка.ПереносОпераций, СправочникСсылка.ТЭЦ_ОбъектыАналитики, СправочникСсылка.ТЭЦ_ПодразделенияОС, ПеречислениеСсылка.ХарактерРаботы, СправочникСсылка.КлассификаторЕН, ДокументСсылка.ТЭЦ_СписаниеМатериалов, ПеречислениеСсылка.ТипыЗаписейКнигиПродаж, ДокументСсылка.ТЭЦ_РаспределениеОтклоненийМатериалов, ПланВидовХарактеристикСсылка.ВидыСубконто, ДокументСсылка.ТЭЦ_Удержание_квартплата, ПеречислениеСсылка.ВидыРезервов, ДокументСсылка.Доверенность, ПеречислениеСсылка.ЛьготыПоЖильцу, СправочникСсылка.БанковскиеСчета, ДокументСсылка.ТЭЦ_РазнесениеОплатыПоСч60, ПеречислениеСсылка.СпособПогашенияСтоимости, ПеречислениеСсылка.ДиректКостингВидыПродукции, ПеречислениеСсылка.ТипОстаткаАванса, ПеречислениеСсылка.ВидыАккредитива, ПеречислениеСсылка.ВидыПлатежа, ДокументСсылка.ПриходныйОрдер, СправочникСсылка.ОсновныеСредства, ПеречислениеСсылка.ПричиныВыбытияОС, ПеречислениеСсылка.ТипыВычетов, ПеречислениеСсылка.ВидыДвиженийДенежныхСредств, СправочникСсылка.ПрочиеОбъектыУчета
Источник: Субконто1 тип х.з.
в ПКО ПередВыгрузкой
Если ТипЗнч(Источник)=Тип(«ДокументСсылка.Мой») Тогда
ИмяПКО=»ПравилоДляДокументМой»;
ИначеЕсли ТипЗнч(Источник)=Тип(«ДокументСсылка.Мой2») Тогда
ИмяПКО=»ПравилоДляДокументМой2″;
//. и т.д
КонецЕсли;
Конвертация данных, редакция 3.0
КД2.0 — конфигурация Конвертация данных, редакция 2.0 .
КД3.0 — конфигурация Конвертация данных, редакция 3.0 .
БСП — Библиотека стандартных подсистем.
ПОД — правило обработки данных.
ПКО — правило конвертации объекта.
ПКПД — правило конвертации предопределенных данных.
ПКС — правило конвертации свойства.
Конвертация данных, редакция 3.0 (далее КД3.0 ) — это инструмент для разработки обменов, предполагающих наличие посредника передачи данных между конфигурациями в виде универсального формата данных EnterpriseData . В этом качестве КД3.0 является одним из компонентов технологии обмена данными через формат EnterpriseData .
КД3.0 не является заменой конфигурации Конвертация данных, редакция 2.0 (далее КД2.0 ), но аналогична ей по характеру решаемых задач, общий смысл которых сводится к упрощению разработки логики конвертации данных за счет представления ее объектной модели.
Главной особенностью КД3.0 является концепция конвертации данных (см. рисунок):

Следуя из этого список отличий КД3.0 от КД2.0 можно свести к нескольким пунктам:
- результатом работы КД3.0 является код модуля менеджера обмена, состоящий из процедур и функций, в которых реализована логика загрузки данных, представленных в формате EnterpriseData , а также логика выгрузки данных в формат;
- алгоритмы конвертации содержат код, выполняемый в одной конфигурации — той, для которой разрабатывается модуль конвертации;
- алгоритмы конвертации не несут в себе информации о внутреннем устройстве конфигурации-корреспондента, вместо этого они ориентированы на структуру формата EnterpriseData (для простоты разработки в КД3.0 объекты формата EnterpriseData представлены аналогично объектам метаданных 1С:Предприятие).
В основе реализованной в БСП механики конвертации данных через формат данных EnterpriseData , лежит модель, включающая в себя следующие элементы (далее — функциональные компоненты конвертации):
- Конвертация,
- Правила обработки данных (ПОД),
- Правила конвертации объектов (ПКО), частью которых являются правила конвертации свойств (ПКС),
- Правила конвертации предопределенных данных (ПКПД),
- Алгоритмы.
В совокупности все эти компоненты реализуют функциональность, связанную с обработкой данных в процессе их получения, либо отправки:

Общий порядок выполнения правил конвертации при выполнении процедур отправки и получения данных представлен на схеме:

Свойства объектов, которые не выгружались, не являются ключевыми и конвертируются через соответствие (без алгоритма) в приемник загружаться не будут. Т.е. если из источника свойство не выгружалось, то в приемнике не произойдет замена соответствующего свойства на пустое значение. Описанное поведение характерно для конфигурация, где версия БСП не ниже 3.1.4.
Часто возникают ситуации, когда нет возможности заполнить свойство получателя на основании определенного свойства источника. Например, свойство заполняется по совокупности нескольких свойств, либо свойству присваивается некоторое предопределенное значение.
В этом случае в правиле конвертации свойства:
Установленный признак Используется алгоритм конвертации дает понять алгоритмам выгрузки и загрузки данных, что заполнение данного свойства предусмотрено обработчиками:
- ПриОтправкеДанных для правил отправки,
- ПриКонвертацииДанныхXDTO для правил получения.
Конвертация свойств по правилам конвертации объектов
Для конвертации свойств, которые представляют собой ссылку на другой объект, необходимо указывать Правило конвертации свойства , в соответствии с которым будет выполнена конвертация.
Вариант №1. Правило конвертации свойства можно указать однозначно.
Простая ситуация, когда нет зависимости от данных конвертируемого объекта. В этом случае Правило конвертации свойства указывается явно — в ПКС.
Пример: свойство Организация в большинстве типовых конфигураций.
Вариант №2. Правило конвертации зависит от данных конвертируемого объекта.
Например, свойство ДокументРеализации , который может быть ссылкой на документ различного типа.
В этой ситуации
Пример кода для отправки:
Если ДокументРеализации <> Неопределено Тогда
ИмяПКО = «Документ_РеализацияТоваровУслуг_Отправка»;
Если ТипЗнч(ДокументРеализации) = Тип(«ДокументСсылка.ОтчетОРозничныхПродажах») Тогда
ИмяПКО = «Документ_ОтчетОРозничныхПродажах_Отправка»;
КонецЕсли;
ДанныеXDTO.Вставить(«ДокументРеализации», Новый Структура(«Значение, ИмяПКО», ДокументРеализации, ИмяПКО));
КонецЕсли;
Пример кода для получения:
Если ДокументРеализации <> Неопределено Тогда
ИмяПКО = «Документ_РеализацияТоваровУслуг_Получение»;
Если Найти(ДокументРеализации .ТипЗначения, «ОтчетОРозничныхПродажах») > 0 Тогда
ИмяПКО = «Документ_ОтчетОРозничныхПродажах_Получение»;
КонецЕсли;
ПолученныеДанные.ДополнительныеСвойства.Вставить(«ДокументРеализации», Новый Структура(«Значение, ИмяПКО», ДокументРеализации, ИмяПКО));
КонецЕсли;
Конвертация табличных частей с помощью алгоритмов конвертации
Методика конвертации в правилах конвертации объектов для отправки:
Пример кода для отправки табличной части РасшифровкаПлатежа :
ТабРП = Новый ТаблицаЗначений;
ТабРП.Колонки.Добавить(«СтатьяДДС»);
ТабРП.Колонки.Добавить(«Заказ»);
ТабРП.Колонки.Добавить(«Сумма»);
ТабРП.Колонки.Добавить(«СуммаНДС»);
ТабРП.Колонки.Добавить(«СтавкаНДС»);
Для Каждого СтрокаРП_ИБ Из ДанныеИБ.РасшифровкаПлатежа Цикл
НоваяСтрокаРП = ТабРП.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаРП, СтрокаРП_ИБ, «СтатьяДДС,Сумма,СуммаНДС,СтавкаНДС»);
Если ЗначениеЗаполнено(СтрокаРП_ИБ.Заказ) Тогда
ТипСсылки = ТипЗнч(СтрокаРП_ИБ.Заказ);
ИмяПКО = «»;
Если ТипСсылки = Тип(«ДокументСсылка.ПоступлениеТоваровУслуг») Тогда
ИмяПКО = «Документ_ПоступлениеТоваровУслуг_Отправка»;
ИначеЕсли ТипСсылки = Тип(«ДокументСсылка.ПоступлениеУслугПрочихАктивов») Тогда
ИмяПКО = «Документ_ПоступлениеУслугПрочихАктивов_Отправка»;
ИначеЕсли ТипСсылки = Тип(«ДокументСсылка.ТаможеннаяДекларацияИмпорт») Тогда
ИмяПКО = «Документ_ТаможеннаяДекларация_Отправка»;
ИначеЕсли ТипСсылки = Тип(«ДокументСсылка.ОтчетКомиссионера») Тогда
ИмяПКО = «Документ_ОтчетКомиссионера_Отправка»;
ИначеЕсли ТипСсылки = Тип(«ДокументСсылка.ЗаказКлиента») Тогда
ИмяПКО = «Документ_ЗаказКлиента_Отправка»;
КонецЕсли;
Если ИмяПКО <> «» Тогда
НоваяСтрокаРП.Заказ = Новый Структура(«Значение, ИмяПКО», СтрокаРП_ИБ.Заказ, ИмяПКО);
Методика конвертации в правилах конвертации объектов для получения:
Пример кода для получения табличной части РасшифровкаПлатежа :
МассивСтрокРасшифровка = Новый Массив;
Для Каждого Строка Из ДанныеXDTO.РасшифровкаПлатежа Цикл
СтруктураДанныхСтроки = Новый Структура;
СтруктураДанныхСтроки.Вставить(«Сумма», Строка.Сумма);
СтруктураДанныхСтроки.Вставить(«СуммаВзаиморасчетов», Строка.СуммаВзаиморасчетов);
СтруктураДанныхСтроки.Вставить(«СтатьяДДС», Строка.СтатьяДвиженияДенежныхСредств);
Конвертация табличных частей без использования алгоритмов конвертации
В версии 3.0.5 конфигурации Конвертация данных появилась возможность создавать правила конвертации для табличных частей и их свойств без написания кода алгоритмов ПКО. Для использования данной возможности должно выполняться 2 условия:
- В конфигурации, для которой ведется разработка, должна использоваться БСП версии 2.4.1,
- В конвертации, в свойстве Версия формата менеджера конвертации должна быть указана версия 2.
Для того чтобы при отправке или получении данных конвертация табличных частей происходила только на основе ПКС, достаточно задать ПКС, где будет указаны источник (одна из колонок табличной части отправляемого или получаемого объекта), приемник (одна из колонок табличной части объекта формата) и при необходимости — ПКО, по которому должна выполняться конвертация значения ссылочного типа.
Для реализации комбинированного сценария конвертации табличных частей, когда конвертация выполняется при помощи алгоритма, в соответствующем ПКС необходимо не только указать источник, но и включить признак Используется алгоритм конвертации . В этом случае сначала будет выполнено заполнение на основе ПКС, затем будет выполнен алгоритм, и после ПКС для свойств табличных частей отработают еще раз, но уже с учетом изменений, которые были выполнены в алгоритме.
Возможен другой комбинированный сценарий, при котором часть свойств табличной части конвертируется только на основе ПКС, другая часть конвертируется при помощи алгоритма. В этом случае часть ПКС будет без указания источника, с включенным признаком Используется алгоритм конвертации.
Пример кода для отправки табличной части Товары (часть свойств заполняются только на основе ПКС, другая часть — алгоритмом):
Запрос = Новый Запрос(
«ВЫБРАТЬ
| _ДемоПоступлениеТоваровТовары.Номенклатура.СтранаПроисхождения КАК СтранаПроисхождения,
| ВЫРАЗИТЬ(_ДемоПоступлениеТоваровТовары.Цена * _ДемоПоступлениеТоваровТовары.Количество КАК ЧИСЛО(15, 2)) КАК Сумма
|ИЗ
| Документ._ДемоПоступлениеТоваров.Товары КАК _ДемоПоступлениеТоваровТовары
|ГДЕ
| _ДемоПоступлениеТоваровТовары.Ссылка = &Ссылка
|УПОРЯДОЧИТЬ ПО НомерСтроки»);
Запрос.УстановитьПараметр(«Ссылка», ДанныеИБ.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
// Товары
ИндексСтроки = 0;
ТекСтавкаНДС = ПолучитьСтавкуНДСДокумента(ДанныеИБ.СтавкаНДС);
Пока Выборка.Следующий() Цикл
СтрокаТовары = ДанныеXDTO.Товары[ИндексСтроки];
СтрокаТовары.СтавкаНДС = ТекСтавкаНДС;
СтрокаТовары.НомерГТД = «»;
СтрокаТовары.ЕдиницаИзмерения = Новый Структура(«Ссылка,Код»,»»,»796″);
СтрокаТовары.Сумма = Выборка.Сумма;
СтрокаТовары.СтранаПроисхождения = Выборка.СтранаПроисхождения;
ИндексСтроки = ИндексСтроки + 1;
КонецЦикла;
Пример кода для получения табличной части Товары (часть свойств заполняются только на основе ПКС, другая часть — алгоритмом):
МассивСтрокТовары = Новый Массив;
Если ДанныеXDTO.Свойство(«Товары»)
И ЗначениеЗаполнено(ДанныеXDTO.Товары) Тогда
ИндексСтроки = 0;
Для Каждого Строка Из ДанныеXDTO.Товары Цикл
СтрокаТЧ = ПолученныеДанные.Товары[ИндексСтроки];
СтрокаТЧ.Цена = Строка.Цена;
ИндексСтроки = ИндексСтроки + 1;
КонецЦикла;
КонецЕсли;
Процесс разработки конвертации в КД3.0 осуществляется по принципу компоновки элементов конвертации. Для упрощения параллельной разработки нескольких обменов данными в КД3.0 предусмотрена возможность использования общих элементов конвертации: ПОД, ПКО, ПКПД, алгоритмов (см. рисунок):

Состав конвертаций определяется набором элементов справочника Элементы конвертации , устанавливающими связи между конвертациями и множеством функциональных компонентов конвертации (ПОД, ПКО, ПКПД и алгоритмов).
Управлять составом конвертаций можно с помощью команд Добавить элемент в состав конвертации и Выделить элемент из состава конвертаций доступными из форм функциональных компонентов.
Команда Добавить элемент в состав конвертации создает в КД3.0 связь между текущим элементом и конвертацией, указанной в форме выбора.
С помощью команды Выделить элемент из состава конвертаций выполняется операция «отпочкования»: создается вторая версия текущего элемента и привязывается к тем конвертациям, с которых был снят флаг в форме редактирования состава конвертаций, использующих текущий элемент.
Ниже приведены примеры использования общих элементов конвертации.
Пример 1
В двух конфигурациях, назовем их Конфигурация 1 и Конфигурация 2 , справочник Контрагенты имеет одинаковую структуру. Реализовав логику загрузки контрагентов из формата EnterpriseData для Конфигурации 1 будет логично использовать ее и в Конфигурации 2 . КД3.0 позволяет это сделать путем включения ПКО для справочника Контрагенты в состав одновременно двух конвертаций: и для Конфигурации 1 , и для Конфигурации 2 .
Пример 2
Выполняется параллельная разработка двух версий одной конфигурации, назовем их Версия 1 и Версия 2 . Версия 2 отличается от Версии 1 только названиями реквизитов справочника Контрагенты . Соответственно конвертация для Версии 2 будет отличаться от конвертации Версии 1 только ПКО для справочника Контрагенты , поэтому в каждой конвертации свой вариант этого ПКО. Все остальные элементы конвертации должны быть общими для Версии 1 и Версии 2 , чтобы избежать необходимости дублирования изменений, например, при исправлении ошибок в правилах либо алгоритмах конвертации.
В КД3.0 поддерживается операция копирования состава конвертаций (раздел Конвертации , команда Копирование состава конвертации ).
При копировании состава конвертации не происходит создание новых правил — вместо этого существующие правила конвертации-источника включаются в состав указанной конвертации.
1с как конвертировать объект неопределенное типа
Всем доброго времени суток.
Задача:из табличной части документа источника необходимо создать такое же количество документов в приемнике.По определенным критериям.
Например: В ТЧ источника склады, и номенклатура, которая привязана к этим складам.
Выглядит так:
Склад 1_номенклатура 1
Склад 1_номенклатура 2
.
Склад 1_номенклатура N
Потом склад 2 и тд..
Вот и нужно разделить по количеству складов в документе на новые документы, с переносом номенклатуры на этих складах.
Собственно сабж:
Для этого сделал отдельное ПВД, которое разбивает документы, и в цикле вызываю ПКО выгрузки документа.
И так как Товар это ссылочный тип — описываю ПКО для добавления номенклатуры
ПКО:ДобавитьНоменклатуру,
ПКС:
Код
Наименование
Артикул
И в ПКО "СНТ_СчетИсходящийТЕСТ", для табличной части ставлю флажок "Получить из входящих данных"
Не для каждого реквизита ТЧ флажок,а именно на уровне ПКГС.
В табличной части приемника у меня есть поле "товар" с правилом конвертации "ПКО:ДобавитьНоменклатуру"
То есть в итоге у меня в структуре "ВходящиеДанные" есть поле "Товар", соответствующее полю "Товар" в ПКГС,которое ссылочного типа.
Когда вызывается правило выгрузки "СНТ_СчетИсходящийТЕСТ" — заканчивается ошибкой
Ошибка получения свойства объекта из входящих данных
ПКО = ДобавлениеИСопоставлениеНоменк латураТЕСТ (Справочник: Номенклатура)
ПКС = 1 (—> Код)
Объект = Структура (Структура)
СвойствоПриемника = Код (Строка)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = Обработка.УниверсальныйОбменДа ннымиXML.МодульОбъекта(8282)
КодСообщения = 68
Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
ПВД = ТМЗ_СчетИсходящий00001
Обработчик = ПередОбработкойВыгрузкиДанных
ОписаниеОшибки = Ошибка получения свойства объекта из входящих данных
ПКО = ДобавлениеИСопоставлениеНоменк латураТЕСТ (Справочник: Номенклатура)
ПКС = 1 (—> Код)
Объект = Структура (Структура)
СвойствоПриемника = Код (Строка)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = Обработка.УниверсальныйОбменДа ннымиXML.МодульОбъекта(8282)
КодСообщения = 68
ПозицияМодуля = Обработка.УниверсальныйОбменДа ннымиXML.МодульОбъекта(1693)
КодСообщения = 31
Ошибка при выгрузке данных: : Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
ПВД = ТМЗ_СчетИсходящий00001
Обработчик = ПередОбработкойВыгрузкиДанных
ОписаниеОшибки = Ошибка получения свойства объекта из входящих данных
ПКО = ДобавлениеИСопоставлениеНоменк латураТЕСТ (Справочник: Номенклатура)
ПКС = 1 (—> Код)
Объект = Структура (Структура)
СвойствоПриемника = Код (Строка)
ОписаниеОшибки = Получение элемента по индексу для значения не определено
ПозицияМодуля = Обработка.УниверсальныйОбменДа ннымиXML.МодульОбъекта(8282)
КодСообщения = 68
ПозицияМодуля = Обработка.УниверсальныйОбменДа ннымиXML.МодульОбъекта(1693)
КодСообщения = 31
Вроде и передается в ПКГС,в поле "Товар" структура, которая содержится в строке таблицы значений с наименованием поля "Товар" — в чем ошибка?
Добавлено через 5 часов 18 минут
Методом тыка было выяснено что эта ошибка возникает в том случае, когда в ПКС не установлен источник.
В этом случае в ПКС нужно переменной "Значение" обязательно что-то присвоить.
Видимо проблема в том, что правило добавления номенклатуры вызывается не через "ВыгрузитьПоПравилу", а в ходе выполнения основного правила.То есть явно структура данных не передается через "ВыгрузитьПоПравилу"
XDTO-пакет в 1С: что это такое, как осуществляется обмен и выгрузка данных

Релиз платформы 1С версии 8.1 открыл для пользователей новый механизм, получивший название XML Data Transfer Objects. Его использование позволяет упростить конвертацию информации из учетной программы в соответствии со стандартной конфигурацией, обеспечивающей возможность чтения документа другими приложениями и сводящей к минимуму вероятность возникновения ошибок обработки. Функциональная задача инструмента — помощь в создании файлов, формат и структура которых будет понятна как юзеру, так и машинному алгоритму. Давайте разберемся, что такое пакет XDTO в 1С 8,1, схему выгрузки в таблицу значений, обмена и записи в XML, и почему это просто находка для тех, кто не слишком хорошо знаком с нюансами работы в нескольких системных программах.

Общее представление
Начнем с того, что рассматриваемый механизм, расшифровка названия которого переводится как «XML-объекты переноса данных», не относится к числу международных стандартов. Фактически это собственное детище разработчиков платформы, так что за ее пределами вам вряд ли доведется встретить аналогичные примеры. Перечень свойств, которыми обладает ПО, обуславливается спецификой взаимодействия с учетной базой — навык создания и работы с объектами типа пакеты XDTO в 1С пригодится только тем, кто постоянно работает с программой.
Функциональные возможности
В перечень опций, предлагаемых инструментом, входят:
- Описание параметров и возвращаемых значений различных Web-сервисов.
- Обмен информацией между конфигурацией Предприятия.
- Передача данных с использованием структуры XML без привязки к форме.
- Формирование собственной системы типовых характеристик, позволяющей обрабатывать произвольную информацию.
В целом — не так уж и мало, если принять во внимание эффективность оптимизации процессов, сопряженных с конвертацией документов для последующего чтения различными программными продуктами. Однако для того, чтобы лучше разобраться в том, какие именно возможности открывает новый механизм, следует подробнее погрузиться в базовую терминологию.
Готовые решения для всех направлений

Ускорь работу сотрудников склада при помощи мобильной автоматизации. Навсегда устраните ошибки при приёмке, отгрузке, инвентаризации и перемещении товара.

Мобильность, точность и скорость пересчёта товара в торговом зале и на складе, позволят вам не потерять дни продаж во время проведения инвентаризации и при приёмке товара.

Обязательная маркировка товаров — это возможность для каждой организации на 100% исключить приёмку на свой склад контрафактного товара и отследить цепочку поставок от производителя.

Скорость, точность приёмки и отгрузки товаров на складе — краеугольный камень в E-commerce бизнесе. Начни использовать современные, более эффективные мобильные инструменты.

Повысь точность учета имущества организации, уровень контроля сохранности и перемещения каждой единицы. Мобильный учет снизит вероятность краж и естественных потерь.

Повысь эффективность деятельности производственного предприятия за счет внедрения мобильной автоматизации для учёта товарно-материальных ценностей.

Первое в России готовое решение для учёта товара по RFID-меткам на каждом из этапов цепочки поставок.

Исключи ошибки сопоставления и считывания акцизных марок алкогольной продукции при помощи мобильных инструментов учёта.

Получение сертифицированного статуса партнёра «Клеверенс» позволит вашей компании выйти на новый уровень решения задач на предприятиях ваших клиентов..

Используй современные мобильные инструменты для проведения инвентаризации товара. Повысь скорость и точность бизнес-процесса.
Типы, объекты и фабрики
Количество программистов, по долгу службы создающих различные файлы формата XML, вряд ли поддается подсчету. А вот вариаций в пространствах имен, используемых в 1С и других программах, существенно меньше — и в тех случаях, когда в рамках одной информационной системы сталкиваются одинаковые понятия, характеризующие различные показатели, происходит конфликт значений. Как правило, для наименования пространственных объединений используются строки-идентификаторы, структура которых схожа с URL-ссылками — подобные примеры встречаются в любом документе и могут смутить сотрудников, не знакомых со спецификой их происхождения. Подобный формат обеспечивает уникальность и исключает вероятность пересечения двух пространств, содержащих идентичные по общему названию группы объектов.

Расширение XDTO пакета 1С
Главным корневым элементом подсистемы выступают рассматриваемые массивы, от которых разветвляются и множатся все остальные связи. Именно с них и стоит начать рассмотрение предложенной модели данных.
Особенности конфигурации
Вероятно, каждый пользователь наблюдал в общей структуре ветку Пакеты XDTO. Однако мало кто знает, что на практике она не считается обязательной — описание составляющих не является важным условием работы. Этот раздел решает прикладные задачи и используется в качестве вспомогательного рабочего средства. Чтобы лучше понять, как функционирует фабрика XDTO в 1С, достаточно закрепить базовый тезис: ее задачей выступает создание объектов, относящихся к типам, соответствующим модели данных.
То есть каждая предлагаемая конфигурация по умолчанию содержит механизм, опции которого позволяют создавать описанные, прошитые в системе или созданные разработчиком элементы, включая прообразы справочных списков, документов, реестров и т.п. Сгенерированный автоматически, он доступен в коде в качестве глобальной переменной, с присвоенным наименованием Фабрика XDTO. Все пакеты, закрепленные в соответствующей ветке, представляют собой компоненты, содержащие описание доступных для создания типовых объектов, что обеспечивает возможность сочетания собственных и платформенных значений.

Особенности устройства
С технической точки зрения под пакетными подразумеваются логически цельные наборы типов, характеризующиеся обязательным наличием именного пространства, гарантирующего уникальную идентификацию. Возвращаясь к базовой конфигурации, можно сказать, что выгрузка на основе XSD позволяет создать XML по схеме 1С, соответствующей стандартному протоколу обработки и чтения другими программными приложениями.
В состав пакета входит перечень простых и составных описаний типовых объектов, оперирование которыми требуется для аналитического учета, а также набор вспомогательных средств, применяемых для перевода имен переменных с одного языка на другой в процессе конвертации. С точки зрения программирования, внедрение XDTO-пакетов обуславливает необходимость использования таких понятий, как:
- ТипЗначения XDTO;
- ТипОбъекта XDTO;
- Значение XDTO;
- Объект XDTO;
- Список XDTO.
С типами и значениями все обстоит точно так же, как и в других структурах, а вот списки требуют более детального разбирательства. При определении для любого из свойств верхнего порогового предела, отличного от единицы, создается условие, допускающее его неоднократное повторение. Фактически это способ манипуляции множествами одного формата.
Интеграция в конфигурацию
Самый простой вариант — встраивание собственных пакетных объектов. Использование переменной, обладающей названием и типом Фабрика XDTO, позволяет создать в 1С необходимую структуру, содержащую все требуемые элементы, начиная с присвоенных по умолчанию и заканчивая прикладными, а также добавленными к дереву метаданных. Подобный алгоритм легко реализуется вручную и не предусматривает особого функционала.
Повторение значений
Нельзя не отметить, что концепция, предложенная разработчиками и предусматривающая использование идентичных названий, нередко становится причиной путаницы. Речь идет о глобальной переменной, что само по себе создает сложности работы, одинаковые тип и название провоцируют семантическую неразбериху, особенно в тех случаях, когда основной объем задач, решаемых программистом, никак не связан с фабриками. Тем не менее это один из неотъемлемых атрибутов инструмента, с которым придется мириться в процессе взаимодействия.
Сериализация XDTO
Еще один аспект, продиктованный благими намерениями, но нередко открывающий дороги в ином направлении. Сама по себе идея переноса данных призвана обеспечить условия, достаточные для быстрой передачи информации между устройствами и программными приложениями, в максимально понятном виде и с возможностью обратной выгрузки. В результате этого конечным форматом каждого документа становится XML, то есть по логике достаточно обойтись автоматической записью и повторным чтением. Однако в этом случае необходимо дифференцировать два разных механизма:
- Создание XDTO и последующая сериализация в обоих направлениях
- Извлечение из объектов прикладных элементов, включая строки, ссылки и т.д.
При этом важно понимать, что для Фабрики XDTO не существует таких понятий, как метаданные, конфигурация или таблицы значений. Единственное, чем она оперирует — искомые и формируемые в процессе записи или чтения типы XML, схожие с оригинальными и описывающие те же объектные параметры, но в собственных терминах. Соответственно, сериализатор выступает в качестве посредника между фабрикой и средой исполнения, имеющего представление о чтении узлов и их интерпретации.
Очевидно, что указанные механизмы, несмотря на четкое разграничение, на самом деле неотделимы друг от друга. И все же их функциональная сущность различна — платформа пытается замаскировать существующую принципиальность различий, автоматически реализуя процедуру сериализации тех типов, которые ей доступны.

Чистый XDTO
В тех ситуациях, когда пользователю требуется, например, извлечь из «Карточки» непосредственное значение, не адаптированное сериализатором под готовые 1С строки, следует воспользоваться методом «Получить», функционал которого обеспечивает возврат искомого объекта.
Список XDTO
Еще один класс, функциональные возможности которого позволяют создавать условия для группового взаимодействия с объектными наборами. Формируется при условии, что одному из свойств установлена предельная граница, не равная нулю — число определяет максимально допустимое количество, при этом значение «-1» показывает отсутствие ограничений.
Задача списков — обработка и оптимизация рутинных процессов, однако в этом аспекте важно понимать, когда именно реализуется подобный формат сериализации. Так, обход синтаксис-помощника работает через итератор, а также через метод «Получить» (Номер) — в обоих случаях результирующий показатель получится сериализованным, представляя собой ссылку 1С.
Фабрика XDTO
Здесь речь идет о классе, выступающим единственным средством, обеспечивающим прямую и обратную конвертацию файлов формата XML в объектные элементы. Фабрика тщательно отслеживает соответствие установленной по умолчанию схеме, и в тех ситуациях, когда наполнение расходится с заданной конфигурацией, возникает исключение времени выполнения.
Свойство «Пакеты»
Ранее мы уже упоминали о том, что под моделью данных подразумевается пакетный массив. Исходя из этого, можно рассматривать предыдущий класс в качестве его непосредственного пользователя. Обращение к коллекции допускается как на основании присвоенного автоматически числового параметра, так и по унифицированному кодификатору ресурса, либо, при необходимости, с использованием стандартного перебора.
Теперь рассмотрим основные применяемые методы.
Предусматривает получение полной вводной, т.е. URI и имени, и в качестве результата возвращает конкретный объект или значение — в зависимости от параметров. Подобные элементы сопоставимы с классом «Метаданные», применяемым в синтаксисе 1С, и обеспечивают определение типа XDTO, к примеру, по таким характеристикам, как перечень свойств, длина, маска и т.д.
Создать()
Пожалуй, наиболее популярная опция, благодаря которой фабрика в полной мере оправдывает собственное название. Конфигурирует объектные файлы в соответствии с заданной схемой.
Записать XML()/Прочитать XML()
Обеспечивают отправку в поток, чтение и последующее создание объекта на его основании. Характеризуются наличием ряда особенностей.
Чтение XML
Любое взаимодействие с документами подобного рода подразумевает наличие источника, в качестве которого могут выступать текстовые документы, модели данных, либо FastInfoset. Само происхождение не имеет принципиального значения, поскольку все указанные варианты взаимно заменяют друг друга. Перед тем как создать и добавить пакет XDTO в 1С, потребуется соотнести область происхождения файла с началом конкретного узла, и воспользоваться методом Фабрика XDTO.Прочитать XML().
При этом в большинстве случаев потребности пользователя характеризуются необходимостью получения понимаемых определенных элементов. Для уточнения существует второй параметр, позволяющий проверить соответствие схеме — тип объекта. При положительном исходе проверки система генерирует необходимый результат, исключая вероятность наличия ошибочных реквизитов.

Запись XML
Для реализации процедуры применяется 1С пример Фабрика XDTO.Записать XML (ПотокЗаписи, Объект XDTO), что позволяет по дефолту помещает компонент в соответствующий типовому значению именной узел. Важно учесть, что структура XML допускает запись особого атрибута — xsi:type — который содержит явное указание на заданный критериями объектный тип. Необходимость пометки в файле обеспечивается вводом в методе параметра «УказаниеТипа».
Собственная фабрика и модель данных XDTO
Для функционирования механизма требуется информационное моделирование, то есть массив пакетов, позволяющий генерировать объекты. Процедура создания, как и в случае с иными элементами языка, используемого платформой, реализуется через встроенный конфигураторов — за функцию отвечает оператор «Новый Фабрика XDTO», который может возвращать неопределенно в таблицу значений 1С Объект XDTO при неправильном указании параметров.
Конструкторы
Существует два варианта, каждый из которых сводится к потребности наличия доступного для осуществления функционала пакетного массива, выступающего основой для модели данных. Изучение синтаксис-помощника позволяет уточнить, что от пользователя требуется создать объект, имеющий тип Model, который был объявлен в именном пространстве http://v8.1c.ru/8.1/xdto. Таким образом, решение задачи рассматривается в качестве простого алгоритма, предусматривающего создание очередного описания Объект XDTO для дальнейшего использования конструктором. Упростить процедуру помогают два метода экспортирования — «ЭкспортМодели XDTO()» и «ЭкспортСхемы XML()», которые обеспечивают возврат готовых элементов, адаптированных к конфигурации системы.
Выгрузка модели данных
Стандартная последовательность действий предусматривает несколько этапов:
- Формирование перечня пакетов с указанием в списке нужных вариантов.
- Создание массива URI с отмеченными значениями и генерация файла.
- Запись с явным указанием параметров необязательного типа.
- Запуск собственной фабрики на основе полученного результата.
Функции XDTO 1С — описание возврата web-сервисов, конвертация, передача и чтение информации — заметно упрощают взаимодействие с платформой и другими системными приложениями. Подобные решения представляют особую значимость для успешной реализации бизнеса, специфика которого предусматривает активную работу с учетными базами. Для тех, кто предпочитает оптимизировать все процессы, создавая эффективный управленческий цикл, стоит также рассмотреть возможности мобильной автоматизации, предлагаемые компанией «Клеверенс» — интеграция Mobile SMARTS на 70% сокращает издержки на проведение рутинных операций по учету товара, и позволяет свести к минимуму ошибки и расхождения, вызванные человеческим фактором.
Преобразование данных прикладных объектов в данные формы и обратно
Для конвертирования прикладных объектов в данные формы и обратно существует набор глобальных методов:
- ЗначениеВДанныеФормы(),
- ДанныеФормыВЗначение(),
- КопироватьДанныеФормы().
Методы, работающие с прикладными объектами, доступны только в серверных процедурах. Метод для копирования значений между данными формы доступен на сервере и на клиенте, так как не требует прикладных объектов в качестве параметров.
Во время конвертирования данных формы в прикладной объект нужно учитывать их совместимость.
- ЗначениеВДанныеФормы() ‑ преобразует объект прикладного типа в данные формы.
- ДанныеФормыВЗначение() ‑ преобразует данные формы в объект прикладного типа.
- КопироватьДанныеФормы() ‑ производит копирование данных формы, обладающих совместимой структурой. Возвращает значение Истина, если копирование произведено, или Ложь, если структура объектов несовместима.
При преобразовании данных формы в прикладные объекты и обратно используется кеширование объектов, но при этом выполняется проверка актуальности версии объекта в кеше.
ПРИМЕЧАНИЕ. При выполнении стандартных действий (открытие формы, выполнение стандартной команды Записать и т. д.) в форме с основным реквизитом преобразование выполняется автоматически.
Приведем пример, как использовать преобразование данных в собственных алгоритмах.
Также у объекта ФормаКлиентскогоПриложения существуют методы, доступные на сервере:
- ЗначениеВРеквизитФормы() ‑ выполняет преобразование объекта прикладного типа в заданный реквизит формы.
- РеквизитФормыВЗначение() ‑ преобразует реквизит данных формы в объект прикладного типа.
Использование данных методов обычно удобнее, так как они имеют, например, информацию о типе реквизита формы. Кроме того, метод РеквизитФормыВЗначение() выполняет установку соответствия данных формы и объекта, которая используется при формировании сообщений .
Также следует помнить, что при преобразовании в данные формы (как с помощью метода ЗначениеВДанныеФормы(), так и с помощью метода ЗначениеВРеквизитФормы()) объектов типа ТаблицаЗначений или ДеревоЗначений нужно учитывать следующую особенность: в преобразуемом объекте должны существовать все колонки, которые существуют в данных формы.
ВНИМАНИЕ! Колонки реквизитов, не связанные с данными , не участвуют в преобразовании значений между данными формы и объектами информационной базы и обратно. Колонки, отсутствующие в данных объекта, очищаются при преобразовании в данные формы.
При переносе объекта в данные формы платформой, или при вызове методов ЗначениеВДанныеФормы(), ЗначениеВРеквизитФормы(), переносятся только данные объекта. Внутренние состояние объекта в данные формы не переносится. Например, значение ссылки нового, которая установлена в объект методом УстановитьСсылкуНового(), будет утеряна в процессе преобразования объекта в данные формы и обратно.
В качестве первого параметра методов РеквизитФормыВЗначение() и ДанныеФормыВЗначение() могут выступать только реквизиты формы следующих типов:
Лайфхаки конвертации данных 2.1 (часть 2)
Если в базе источника реквизит имеет тип «Строка», а в базе приемника тип «Справочник», то необходимо разработать отдельное правило конвертации объектов. Обязательно в правиле оставить Объект-источник пустым, иначе при выгрузке будет выдаваться ошибка. В конвертации объекта описать поля поиска, а также реквизит, в который будет грузиться значения реквизита объекта источника, и при необходимости описать заполнение остальных реквизитов справочника. В правиле в обработчике «Перед выгрузкой» реквизита написать следующий алгоритм (см. рисунок 1).

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

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

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

Конвертация справочника в перечисление (перечисление в справочник)
Конвертация справочника в перечисление
Данная задача становится актуальной с учетом изменения перечисления «Ставки НДС» на справочник в новых конфигурациях. Теперь при конвертации объектов из новых конфигураций (тип: справочник) в конфигурации, где ставки НДС еще являются перечислением, необходимо будет разрабатывать соответствующее правило конвертации объектов.
1. Необходимо в правиле конвертации объектов на вкладке «Настройки», включить свойство «Не запоминать выгруженные объекты» (см. рисунок 2).

Рисунок 2 – Не запоминать выгруженные объекты.
Иначе система будет перезаписывать выгрузку одного и того же значения перечисления.
2. Не использовать конвертацию значений (предопределенные значения справочника в значения перечисления).
Будет использоваться обработчик «При выгрузке», а при использовании данного обработчика конвертация значений не отрабатывает.
3. В конвертации объекта в обработчике «При выгрузке» необходимо прописать следующий код:

То есть нам необходимо в переменную «УзелСсылки» присвоить значение метаданных перечисления, которое соответствует базе приемника, тогда система автоматически при загрузке определит нужное значение.
Конвертация перечисления в справочник
Для конвертации перечисления в справочник, потребуется отдельное правило конвертации объектов. В данном правиле можно воспользоваться конвертацией значений (конвертация значений перечисления в предопределенные значения), и необходимо описать поля поиска, а также реквизит, в который будет грузиться значение перечисления (например: реквизит — наименование), и при необходимости описать заполнение остальных реквизитов справочника. В правиле в обработчике «Перед выгрузкой» реквизита написать следующий алгоритм (см. рисунок 1).
Отключение проверки полей поиска
В созданных правилах конвертации объектов, по которым не заполнена колонка «Поля поиска» при сохранении правил, система предложит указать автоматически поля поиска (см. рисунок 3).

Рисунок 3 – Предупреждение – не указаны поля поиска.
При каждом сохранении правил, система будет выдавать данное сообщение. Если при достаточно большом количестве правил случайно нажать «Да», то система создаст поля поиска по всем правилам, и может потребоваться достаточно большое время восстанавливать обратно. Чтобы избежать таких неприятных ситуаций, данную проверку можно отключить (путь: Сервис – Настройки пользователя) (см. рисунок 4).

Рисунок 4 – Отключение проверки полей поиска.
Не регистрировать документы к обмену при определенных действиях
Документы регистрируются к обмену по правилам регистрации объектов при любых действиях (проведение, выполнение различных обработок и т.д.). Если необходимо не регистрировать документы при определенных действиях (например: при выполнении обработки по перепроведению документов), то можно использовать функционал дополнительные свойства.
В месте изменения документа, который не должен регистрироваться к обмену, нужно установить дополнительное свойство. В правилах регистрации объектов по документу в обработчике событий «После обработки» добавить:

В таком случае документ при групповом перепроведении не будет регистрироваться к обмену.
Общий алгоритм для всех объектов одного типа метаданных
Если необходимо учитывать один алгоритм для всех объектов одного типа метаданных (например: не выгружать помеченные на удаления справочники), то можно воспользоваться глобальными обработчиками, в них прописать один раз алгоритм, который будет действовать для всех существующих и новых объектов. Такой подход позволяет избежать дублирования кода и не забыть написать необходимый алгоритм для новых справочников.
Например, для задачи – не выгружать помеченные на удаления справочники, необходимо в глобальном обработчике «Перед выгрузкой объекта» написать следующий алгоритм:

Перенос субконто по своим правилам
У одного типа субконто могут присутствовать несколько правил выгрузки объекта, и система в таком случае будет по умолчанию выбирать одно определенное правила согласно приоритету и наименованию. Если же необходимо выгрузить субконто не по выбранному по умолчанию правилу, то можно воспользоваться следующим алгоритмом:
1. Для реквизита «Субконто» в обработчике «Перед выгрузкой»:

2. Перенос плана видов характеристик «Виды Субконто Хозрасчетные» (см. рисунок 5):

Рисунок 5 – Перенос плана видов характеристик.
3. Для реквизита «Субконто» в обработчике «При выгрузке»:

Описывается последовательность действий для каждого типа субконто.
Важный момент. Обязательно нужно прописать алгоритм выгрузки для каждого возможного типа субконто. После того, как добавлен код в обработчик «При выгрузке», типовое определение правила от типа субконто не срабатывает.
Поиск полей
Конвертация данных позволяет разрабатывать собственные алгоритмы поиска элементов на стороне приемника, для этого предназначен обработчик «Поля поиска».
В обработчике «Поля поиска» могут участвовать только те реквизиты, у которых установлен признак «Поиск» в конвертации свойств (см. рисунок 6). Данные реквизиты не обязательно должны участвовать в поиске нужного элемента, они могут присутствовать в различной другой логике алгоритма (например: в условиях алгоритма обработчика «Поля поиска»).

Рисунок 6 – Реквизиты доступные для обработчика «Поля поиска»
Пример обработчика «Поля поиска»:

В обработчике мы можем задать до 10 итераций через переменную «НомерВариантаПоиска». В каждой итерации в зависимости от условий задать поля поиска элемента через переменную «СтрокаИменСвойствПоиска» (наименование полей задаются, как они заданы у приемника). Получить значение поля поиска можно через структуру «СвойстваПоиска» (наименование полей задаются, как они заданы у приемника). Для прекращения поиска нужно использовать переменную «ПрекратитьПоиск».
Реквизиты узлов источника и приемника
В конвертации данных можно обращаться к реквизитам плана обмена. Это может быть необходимо, например, при тиражировании правил обмена на несколько баз и некоторые особенности функционала отличаются между базами (данные особенности будут учитываться с помощью реквизитов плана обмена).
На стороне источника, чтобы обратиться к узлу плана обмена, необходимо использовать переменную: «УзелДляОбмена».
Например, в правилах обмена на стороне источника можно обратиться к ИНН выбранной организации в плане обмена:

На стороне приемника, чтобы обратиться к узлу плана обмена, необходимо использовать переменную: «УзелОбменаЗагрузкаДанных».
Например, в правилах обмена на стороне приемника можно обратиться к ИНН выбранной организации в плане обмена:

Протокол (лог) синхронизации между базами
Важным элементом обмена между базами является протокол (лог) синхронизации. Данный протокол должен показывать в удобном виде всю необходимую информацию об обмене (количество выгруженных элементов; список выгруженных элементов; ошибки обмена и т.д.). Чем сложнее алгоритмы обмена, тем более расширенный должен быть лог (например: у нас несколько документов на стороне источника объединяются в один документ на стороне приемника, в таком случае протокол должен показывать, как документы объединялись). Лог должен содержать значимую информацию, которая оперативно поможет разобраться с вопросами связанными с синхронизацией.
Можно выделить три наиболее частых варианта создания протокола (лога) синхронизации между базами без кастомизации баз источника и приемника:
1) Записывать всю необходимую информацию в журнал регистрации. Данный подход имеет существенные недостатки. Чаще всего журнал регистрации имеет большой объем информации, это влияет на скорость анализа нужной информации (журнал регистрации может работать медленно), и предоставление данных в журнале регистрации не всегда удобно для анализа данных.
2) Отправлять все необходимые данные на электронную почту. После каждой синхронизации записывать данные в регистр сведений (ОтправкаEmail) для последующей отправки необходимым адресатам. В данном случае недостаток в том, что может возникнуть большое количество писем за день, и в них будет сложно проводить анализ.
3) Записывать всю необходимую информацию во внешний источник (файлы excel и т.д.). Данный подход является наиболее предпочтительный, т.к. можно создать 1 файл в день, в него дописывать всю нужную информацию за день в удобном виде для анализа.
Можно выбрать любой из данных подходов или кастомизировать базы источника и приемника для хранения лога в самих базах, но наличие подробного протокола (лога) может помочь во многих вопросах, связанных с синхронизацией между базами.
Передача параметра из источника в табличную часть приемника
При возникновении задач заполнения на стороне приемника в табличной части колонок, отсутствующих на стороне источника по данным колонок, которые отсутствуют на стороне приемника. Можно воспользоваться функционалом передачи значений отсутствующих колонок на стороне приемника в параметры табличной части и на основании этих данных заполнять нужную колонку.
Передача значений табличной части из источника в параметры табличной части приемника имеет ряд особенностей:
1. Необходимо в конвертации свойств табличной части приемника создать необходимый параметр. Если параметр имеет не примитивный тип, то указать также правило конвертации (см. рисунок 7).

Рисунок 7 – Создание параметра в конвертации свойств табличной части приемника.
2. Важный момент! Заполнение параметра должно всегда происходить в переменную «Значение» в обработчике «Перед выгрузкой». Из входящих данных параметр не сможет заполниться (будет выдаваться сообщение об ошибки) (см. рисунок 8).

Рисунок 8 – Заполнение параметра в конвертации свойств табличной части.
3. На стороне приемника обращение к параметрам табличной части происходит в обработчике «После загрузки» через соответствие «ПараметрыОбъекта» по следующему правилу:
если параметр был создан в табличной части, то обращение будет типа: [Наименование табличной части] + ТабличнаяЧасть (например: «ТоварыТабличнаяЧасть»);
если параметр был создан в наборе движений регистра, то обращение будет типа: [Наименование набора движений регистра] + Набор записей (например: «ХозрасчетныйНаборЗаписей»);
Например: 
Рассмотренные приемы работы позволят повысить производительность и эффективность работы с программой «Конвертация данных 2.1». Описанные приемы в данной статье и в первой статье затрагивают наиболее частые нетривиальные задачи использования конвертации данных, изучив обе статьи, подобные задачи уже не будут вызывать сложностей.