Конвертация данных в 1С 8.3 Предприятие

Бесплатные программы, уроки и исправления ошибок в 1С для бухгалтера.

1. Теория

В штатной справке по Конвертации данных об этих параметрах написано следующее:

ВходящиеДанные – Произвольный – произвольные вспомогательные данные, переданные правилу конвертации из других правил (например из правила выгрузки данных или правила конвертации свойств). Значение параметра, как правило, имеет тип Структура, где ключи значений соответствуют структуре свойств объекта приемника. Таким образом, при конвертации свойств (в правиле конвертации свойств), конвертируемые данные (или часть данных) могут быть получены из этого параметра.

ИсходящиеДанные – Произвольный – произвольные вспомогательные данные. Данные передаются по следующим правилам:

1) ПВД.ИсходящиеДанные -> ПКО.ВходящиеДанные

2) ПКО.ВходящиеДанные -> ПКС.ВходящиеДанные

3) ПКС.ИсходящиеДанные -> ПКО.ВходящиеДанные

Попробуем разобраться подробнее, как передаются данные параметры.

Шаг 1. ПВД (Правило выгрузки данных)

В правилах выгрузки данных создаем параметр ИсходящиеДанные и помещаем в него некоторое значение.

Шаг 2. ПКО (Правило конвертации объектов)

После выполнения ПВД, параметр передается в ПКО-приемник уже как ВходящиеДанные. К этому параметру можно обратиться в коде, например, поместив еще один элемент в структуру.

Если будет установлено хотя бы одно поле, получаемое из входящих данных, в ПКО добавится вкладка “Параметры, получаемые из входящих данных”, где будет отображаться список соответствующих полей. Также отобразится кнопка “Структура запрашиваемых данных”, которая позволит посмотреть, какую структуру входящих данных нужно передать в ПКО.

Шаг 3. ПКС (Правило конвертации свойств)

После выполнения кода в ПКО, параметр будет передан в ПКС как ВходящиеДанные. Здесь обращаем внимание на следующую особенность: из ПВД уходят ИсходящиеДанные, в ПКО приходят ВходящиеДанные. Из ПКО уходят ВходящиеДанные, в ПКС также приходят ВходящиеДанные.

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

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

Шаг 4. Снова ПКО

Если поле имеет не примитивный тип данных, то система продолжит конвертацию объекта по правилу. Параметр ИсходящиеДанные, заданный в ПКС, будет передан в ПКО как ВходящиеДанные.

Общие принципы конвертации данных

Конфигурация “Конвертация данных 2.0” является мощным средством для организации конвертации данных между конфигурациями любой структуры и сложности, функционирующими как на платформе “1С:Предприятие 7.7”, так и на платформе “1С:Предприятие 8”. Рассмотрим общую схему конвертации данных между конфигурациями, созданными на платформе “1С:Предприятие 8”.

Обмен данными по технологии “Конвертация данных 2.0” можно разделить на две стадии – стадию подготовки правил обмена и стадию обмена данными. Самым сложным и ответственным этапом, безусловно, является подготовка правил обмена. Процесс подготовки правил обмена представлен на схеме 1. Как видно на схеме, основным “сырьем” для подготовки правил выступает XML-описание структуры метаданных информационных баз, которые участвуют в обмене. Описание метаданных готовится с помощью внешней обработки MD80Exp.epf (для конфигураций на платформе “1С:Предприятие 8”) в виде XML-файла. Затем этот файл обрабатывается средствами конфигурации “Конвертация данных 2.0”. В базе конвертации создаются специализированные объекты для описания метаданных, на основе которых будут готовиться правила обмена данными.

Ключевые задачи при подготовке правил обмена – настройка соответствий между объектами метаданных конфигураций источника и приемника и настройка соответствий между свойствами объектов (реквизитами объектов и табличных частей). Процесс подготовки файла обмена заканчивается генерацией XML-файла правил и условно разделяется на следующие этапы:

  1. Установка конфигураций источника и приемника, общая настройка правил обмена.
  2. Настройка соответствий между объектами метаданных источника и приемника – создание правил конвертации объектов.
  3. Настройка соответствий между свойствами объектов в рамках правил конвертации объектов, в том числе установка соответствий значений перечислений – создание правил конвертации свойств и правил конвертации значений.
  4. Настройка принципов выборки объектов для выгрузки – создание правил выгрузки.
  5. Настройка операций, проводящихся перед загрузкой данных, – создание правил очистки данных.
  6. Дополнительная настройка обработчиков событий.

Содержание этих технологических этапов будет развернуто при разборе примера в следующих параграфах руководства. Поэтому для лучшего понимания рекомендуем в процессе изучения примера по созданию правил обмена обращаться к технологическим схемам.

image001.gif?_=0000D1CB990F1A63

Вторая стадия – собственно обмен данными. Это стадия использования подготовленных правил конвертации. Как видно из схемы 2, с помощью внешней обработки V8Exchan.efd, которая использует файл правил обмена, в конфигурации-источнике формируется XML-файл данных. Выгрузка данных производится обработкой в соответствии с правилами обмена, поэтому в файле данных находятся уже сконвертированные данные, предназначенные для загрузки в источник, а также правила, содержащие обработчики, исполняемые при загрузке данных. Таким образом, при загрузке используется только один файл, который обрабатывается той же обработкой V8Exchan.efd.

image002.gif?_=00008430386F53F1

Для первого знакомства с концепцией системы “Конвертация данных 2.0” рассмотрим решение задачи, с которой сталкивалось подавляющее большинство специалистов, работающих с типовыми конфигурациями: перенос данных справочника из одной информационной базы в другую.

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

Поскольку пример рассматривается в целях ознакомления с общей концепцией конфигурации “Конвертация данных 2.0”, рассмотрим простейший случай, когда в конфигурации источник и приемник идентичны, учет ведется в типовой конфигурации “Управление торговлей 10.2”. Наша задача, соответственно, состоит в том, чтобы корректно перенести в новую базу данных справочник Номенклатура.

Учебник по 1С Конвертации данных (редакция 2) Правила конвертации свойств

Автор учебника: Фирма “1С”

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

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

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

Поиск объекта при загрузке по данному свойству – флаг определяющий нужно ли по данному свойству производить поиск объектов в информационной базе приемнике. Если сразу у нескольких реквизитов установлено свойство поиска данных, то условия поиска объединяются по “И”. В этом случае правило поиска звучит следующим образом: Найти объект у которых все реквизиты поиска совпадают с источником. (ВНИМАНИЕ!!!! Поиск по уникальному идентификатору, который может быть установлен у правила конвертации объектов более приоритетный, то есть если он установлен то поиск будет выполнен по этому идентификатору).

Отключить обработку данного правила – флаг, позволяет отключить обработку данного свойства, не удаляя его из правил конвертации объектов.

Не замещать значение данного свойства у существующих объектов ИБ – флаг, позволяет отключить обработку данного для объектов информационной базы приемника, которые были найдены по уникальному идентификатору или по полям поиска.

Автоматически приводить значение к длине приемника – флаг, позволяет включить автоматическое приведение Номера или Кода справочника соответствующему значению в приемнике по длине. При этом префиксы сохраняются, а числовые части преобразуются под длину поля в приемнике.

ТОЛЬКО ДЛЯ ОБМЕНА V8 – V8

Функционал, позволяющий передавать дополнительные параметры в информационную базу приемник из источника.

Передавать данные в приемник – флаг определяет куда будут помещены данные при загрузке. Непосредственно в найденный для изменения объект.

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

Доступ к этим данным возможен в событии правила конвертации объекта “После загрузки”. Например, так:

Если ПараметрыОбъекта <> Неопределено тогда ИмяКонтрагента = ПараметрыОбъекта[“ИмяКонтрагента”];КонецЕсли;// Например, если нужен доступ к параметрам табличной части с именем “Товары”Если ПараметрыОбъекта <> Неопределено тогда ТаблицаПараметровТовары = ПараметрыОбъекта[“ТоварыТабличнаяЧасть”]; Если ТаблицаПараметровТовары <> Неопределено Тогда Для Каждого СтрокаПараметров Из ТаблицаПараметровТовары Цикл ИмяНоменклатуры = СтрокаПараметров.ИмяНоменклатуры; КонецЦикла; КонецЕсли;КонецЕсли;

Выгружать элементы группы через промежуточный файл флаг определяет как выгружать объекты данного типа, через промежуточный файл (экономично с точки зрения оперативной памяти) или напрямую через память (оптимально по скорости, но при больших объемах передаваемых данных оперативная память может закончится).

На закладке “Дополнительно” можно редактировать вхождение правила в определенную группу, а так же его описание. Наименование правила формируется автоматически и недоступно для изменения.

С уважением,

Владимир Милькин

(преподаватель

школы 1С программистов

и разработчик

обновлятора

).

Владимир Милькин

Как помочь сайту:

расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте

нет рекламы

, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Правила конвертации данных в 1С 8.3

Для описания метаданных используется внешняя обработка MD83Exp.epf – для продуктов на платформе «1С:Предприятие 8.3» (управляемое приложение), MD82Exp.epf – для обычного приложения, в формате XML-файла. Обычно файл обработки располагаются в каталоге шаблонов, куда установлена конфигурация. К примеру, C:Program Files1Сv8tmplts1СConversion3_0_5_3. В нашем примере используется «1С:Конвертация данных, ред. 3.0» (релиз 3.0.5.3).

Рис.2 Правила конвертации данных в 1С 8.3Рис.2 Правила конвертации данных в 1С 8.3

Подготовка файла конвертации заключается в формировании XML-файла правил обмена. Рассмотрим на небольшом примере ход его создания.

Шаг 1. Программу можно скачать с сайта ИТС или установить с диска ИТС (доступ и диск предоставляется в рамках абонентского сопровождения 1С для версий КОРП и ПРОФ). Предположим, нам необходимо выгрузить справочник «Контрагенты» из «Бухгалтерии» в «УТ 8.3». Первая программа у нас – «База-источник», а вторая – «База приемник». Отметим, что обмен настраивается не только между базами 8.3, но и между 7.7 и 8.3 и другими.

Шаг 2. Выгружаем в файл XML структуру метаданных баз, задействованных в обмене, с помощью обработки MD83Exp.epf. Для этого в «Базе-источнике» и «Базе-приемнике» в режиме «1С Предприятие» открываем указанную обработку и выгружаем с ее помощью структуру конфигураций, указав имя формируемого файла. Для примера, так и назовем файлы – «База источник» и «База приемник».

Рис.3 «База источник» и «База приемник»Рис.3 «База источник» и «База приемник»
Рис.4 «База источник» и «База приемник»Рис.4 «База источник» и «База приемник»

По окончании выгрузки у нас получилось два файла с описанной структурой двух конфигураций.

Рис.5 По окончании выгрузки у нас получилось два файла с описанной структурой двух конфигурацийРис.5 По окончании выгрузки у нас получилось два файла с описанной структурой двух конфигураций

Шаг 3. Выполняем экспорт xml-схемы формата обмена. Это файл с расширением «xsd». Получить его можно и из «Источника», и из «Приемника». Для этого откроем информационную базу в режиме «Конфигуратор» («Открыть конфигурацию»), в дереве метаданных раздел «Общие» и подраздел XDTO-пакеты.

Рис.6 Выполняем экспортРис.6 Выполняем экспорт

Найдем строки с именем «EnterpriseData» (разные цифры – это разные версии формата) и, нажав правой кнопкой мышки, выберем команду «Экспорт XML-схемы».

Рис.7 Экспорт XML-схемыРис.7 Экспорт XML-схемы

Укажем путь выгрузки и выгрузим.

Рис.8 Укажем путь выгрузки и выгрузимРис.8 Укажем путь выгрузки и выгрузим
Рис.9 Укажем путь выгрузки и выгрузимРис.9 Укажем путь выгрузки и выгрузим

Шаг 4. Добавляем структуру базы выгруженных конфигураций (источника и приемника) в базу «1С:Конвертация данных». Для этого в пункте меню «Конфигурация» для каждого сформированного файла (источник и приемник) выполняем «Загрузку структуры конфигурации».

Рис.10 Загрузку структуры конфигурацииРис.10 Загрузку структуры конфигурации

Указываем путь к нашему файлу, способ загрузки выбираем – «В новую версию конфигурации», и нажимаем кнопку «Выполнить загрузку».

Рис.11 Выполнить загрузкуРис.11 Выполнить загрузку
Рис.12 Выполнить загрузкуРис.12 Выполнить загрузку

После загрузки файлов, если мы зайдем в раздел меню «Конфигурации», мы увидим две наших загруженных конфигурации.

Рис.13 Мы видим две наших загруженных конфигурацииРис.13 Мы видим две наших загруженных конфигурации
Рис.14 Мы видим две наших загруженных конфигурацииРис.14 Мы видим две наших загруженных конфигурации

Шаг 5. Загружаем структуры формата обмена. В пункте меню «Формат данных» выбираем команду «Загрузка структуры формата».

Рис.15 Загрузка структуры форматаРис.15 Загрузка структуры формата

Указываем ранее выгруженный файл и нажимаем кнопку «Выполнить загрузку».

Рис.16 Выполнить загрузкуРис.16 Выполнить загрузку

После окончания загрузки проверим результат. Зайдем в меню «Формат данных» – «Дерево объектов формата». Выбрав загруженный нами формат, мы видим его структуру.

Рис.17 Выбрав загруженный нами формат, мы видим его структуруРис.17 Выбрав загруженный нами формат, мы видим его структуру

Шаг 6. Создание конвертации. Для выполнения поставленной нами задачи, создаем две конвертации. Первая – для выгрузки справочников «Сотрудники» и «Контрагенты» из «Бухгалтерии», а вторая – для загрузки в «УТ». Перейдем в меню «Конвертации».

Рис.18 Создание конвертацииРис.18 Создание конвертации

Для каждой операции указываем наименование, например – «Выгрузка из БП», «Загрузка в УТ», название – БухгалтерияПредприятия, УправлениеТорговлей и версию формата (который мы загрузили, в нашем примере 1.6).

Рис.19 Для каждой операции указываем наименованиеРис.19 Для каждой операции указываем наименование
Рис.20 Для каждой операции указываем наименованиеРис.20 Для каждой операции указываем наименование

Шаг 7. Для создания правил в том же пункте меню найдем пункт настроек.

Рис.21 Для создания правил в том же пункте меню найдем пункт настроекРис.21 Для создания правил в том же пункте меню найдем пункт настроек

Открыв отдельно каждую операцию, настроим ее. На закладке «Правила конвертации объектов» нажимаем кнопку «Создать».

Рис.22 Правила конвертации объектовРис.22 Правила конвертации объектов

На закладке «Основные сведения» указываем идентификатор нашего правила (например, Справочник_Контрагенты_Выгрузка), объект конфигурации и объект формата. Область применения – «Для отправки».

Рис.23 На закладке «Основные сведения» указываем идентификатор нашего правилаРис.23 На закладке «Основные сведения» указываем идентификатор нашего правила
Рис.24 На закладке «Основные сведения» указываем идентификатор нашего правилаРис.24 На закладке «Основные сведения» указываем идентификатор нашего правила

Жмем «Автосопоставление», а нажатием кнопки «Создать правила конвертации свойств» сохраняем результат.

Рис.25 Создать правила конвертации свойствРис.25 Создать правила конвертации свойств
Рис.26 Создать правила конвертации свойствРис.26 Создать правила конвертации свойств
Рис.27 Создать правила конвертации свойствРис.27 Создать правила конвертации свойств

При необходимости другие поля настраиваются для конвертации вручную.

Шаг 8. Аналогично настраивается правило конвертации для загрузки, в нашем примере в «Управление торговлей». Обращаем внимание, что область применения – «Для получения».

Рис.28 Правило конвертации для загрузкиРис.28 Правило конвертации для загрузки

На закладке «Правила конвертации свойств» выполняем автосопоставление и, нажав кнопку «Создать правила конвертации свойств», сохраняем результат.

Рис.29 Создать правила конвертации свойствРис.29 Создать правила конвертации свойств

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

Рис.30 В обоих созданных правилах конвертации создаем правило конвертации предопределенных данныхРис.30 В обоих созданных правилах конвертации создаем правило конвертации предопределенных данных
Рис.31 В обоих созданных правилах конвертации создаем правило конвертации предопределенных данныхРис.31 В обоих созданных правилах конвертации создаем правило конвертации предопределенных данных

Аналогично выполняем действия для правила «Загрузка в УТ».

Рис.32 Аналогично выполняем действия для правила «Загрузка в УТ»Рис.32 Аналогично выполняем действия для правила «Загрузка в УТ»

Указываем новое правило конвертации свойства «ЮридическоеФизиескоеЛицо» для нашего справочника. Откроем правило конвертации объекта «Справочник_Контрагенты_Выгрузка».

Рис.33 Откроем правило конвертации объекта «Справочник_Контрагенты_Выгрузка»Рис.33 Откроем правило конвертации объекта «Справочник_Контрагенты_Выгрузка»

На закладке «Правила конвертации свойств» добавим правило конвертации свойства, указав в нем «Перечисление_ЮридическоеФизическоеЛицо».

Рис.34 На закладке «Правила конвертации свойств» добавим правило конвертации свойстваРис.34 На закладке «Правила конвертации свойств» добавим правило конвертации свойства
Рис.35 Перечисление_ЮридическоеФизическоеЛицоРис.35 Перечисление_ЮридическоеФизическоеЛицо

Действие аналогично и для второго правила «Справочник_Контрагнеты_Загрузка».

Рис.36 Справочник_Контрагнеты_ЗагрузкаРис.36 Справочник_Контрагнеты_Загрузка

Шаг 10. Создаем правило обработки данных. Действия одинаковы для обоих созданных нами правил. Перейдя в правило конвертации, нажимаем кнопку «Создать на основании» – «Правило обработки данных».

Рис.37 Правило обработки данныхРис.37 Правило обработки данных

Данные в него попадают автоматически.

Рис.38 Правило обработки данныхРис.38 Правило обработки данных

Аналогично формируем правило для загрузки.

Рис.39 Аналогично формируем правило для загрузкиРис.39 Аналогично формируем правило для загрузки
Рис.40 Аналогично формируем правило для загрузкиРис.40 Аналогично формируем правило для загрузки

Шаг 11. Выгрузить модуль менеджера обмена, или в правиле конвертации, нажав «Сохранить модуль менеджера обмена», или через пункт «Конвертация» – «Выгрузка модуля».

Рис.41 Сохранить модуль менеджера обменаРис.41 Сохранить модуль менеджера обмена
Рис.42 Сохранить модуль менеджера обменаРис.42 Сохранить модуль менеджера обмена

Аналогично поступаем с правилом конвертации для загрузки справочника.

Рис.43 Аналогично поступаем с правилом конвертации для загрузки справочникаРис.43 Аналогично поступаем с правилом конвертации для загрузки справочника

Далее открываем конфигурацию, для которой предназначается наш модуль, и в дереве метаданных ищем «МенеджерОменаЧерезУниверсальныФормат», открываем его и вставляем туда свой скопированный в буфер обмена модуль.

Рис.44 МенеджерОменаЧерезУниверсальныФорматРис.44 МенеджерОменаЧерезУниверсальныФормат

При настройке обмена рассматриваемая программа имеет пока единственную функцию – формирование текстов общих модулей МенеджерОбменаЧерезУниверсальныйФормат для каждой из баз, используя структуру метаданных конфигураций, участвующих в обмене, и схемы универсального формата. Эти модули лучше сформировать и применять на исходном этапе настройки обмена, а продолжать их доработку стоит прямо в тексте модуля конфигуратора.

Редакция конфигурации «Конвертация данных 3.0» – новая, но прогрессивная технология упрощения обмена между конфигурациями, которая, используя универсальный формат обмена EnterpriseData, позволяет эффективно ответить на вопрос «Как перенести данные из одной 1С в другую?».

Перенос данных между любыми конфигурациями 1С

Принятые сокращения

КД2.0 – конфигурация Конвертация данных, редакция 2.0.
КД3.0
– конфигурация Конвертация данных, редакция 3.0.
БСП – Библиотека стандартных подсистем.
ПОД
– правило обработки данных.
ПКО – правило конвертации объекта.
ПКПД – правило конвертации предопределенных данных.
ПКС – правило конвертации свойства.

Назначение

Конвертация данных, редакция 3.0 (далее КД3.0) – это инструмент для разработки обменов, предполагающих наличие посредника передачи данных между конфигурациями в виде универсального формата данных EnterpriseData. В этом качестве КД3.0 является одним из компонентов технологии обмена данными через формат EnterpriseData.

КД3.0 не является заменой конфигурации Конвертация данных, редакция 2.0 (далее КД2.0), но аналогична ей по характеру решаемых задач, общий смысл которых сводится к упрощению разработки логики конвертации данных за счет представления ее объектной модели.

Главной особенностью КД3.0 является концепция конвертации данных (см. рисунок):

2.png?_=000060D865E73793

Следуя из этого список отличий КД3.0 от КД2.0 можно свести к нескольким пунктам:

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

2. Практика

Задача: Необходимо настроить передачу документа (для примера будем использовать документ ПоступлениеТоваровУслуг) из базы Источника(1С:ERP Управление предприятием 2) в базу Приемник(Управление производственным предприятием 1.3) через регистр сведений “Сопоставление номенклатуры”. У документа есть табличная часть Товары, в которой имеется поле “Номенклатура.

Номенклатура базы Источника должна заменяться на номенклатуру базы Приемника на основании найденного сопоставления, т.к. это эквивалентные номенклатуры, только хранящиеся в разных базах и имеющих разные наименования. В случае, если сопоставление не найдено – отказ в выгрузке всего документа.

Все передаваемые объекты, содержащие в себе поле Номенклатура, должны выгружаться через регистр сопоставлений.

Регистр хранится в базе Источнике.

Решение:

Для начала создадим ПКО для документа ПриобретениеТоваровУслуг, в качестве приемника необходимо указать документ ПоступлениеТоваровУслуг. На вопрос создать ли правила конвертации свойств автоматически, отвечаем утвердительно. Проверяем автоматически созданные ПКС на корректность. Далее создаем ПВД. Теперь можно приступать к доработке правил сопоставления.

Необходимо создать новую табличную часть Товары, в которой заменить номенклатуру Источника на номенклатуру Приемника. Если для выгружаемой Номенклатуры не будет найдено сопоставление, то отказ в выгрузке всего документа. Для этого в ПКО ПриобретениеТоваровУслуг в обработчике события Перед Выгрузкой добавим следующий код:

//Формируем Новую табличную часть, которую будем помещать во входящие данныеТЧ = Источник.Товары.Выгрузить();//Массив Номенклатур для загрузки в колонку ТЧМассивНоменклатур = Новый Массив;//для того, чтобы не выполнять запрос в цикле, помещаем в запрос всю ТЧ ИсточникаЗапрос = Новый Запрос;Запрос.Текст =”ВЫБРАТЬ| СопоставлениеНоменклатурыУППERP.НоменклатураУПП КАК НоменклатураУПП,| ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура|ИЗ| Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.pll_СопоставлениеНоменклатурыУППERP КАК СопоставлениеНоменклатурыУППERP| ПО ПриобретениеТоваровУслугТовары.Номенклатура = СопоставлениеНоменклатурыУППERP.НоменклатураERP|ГДЕ| ПриобретениеТоваровУслугТовары.Ссылка = &Источник”Запрос.УстановитьПараметр(“Источник”, Источник);РезультатЗапроса = Запрос.Выполнить();ДетальныеЗаписи = РезультатЗапроса.Выбрать();Пока ДетальныеЗаписи.Следующий() Цикл //проверяем, найдено ли соответствие Если ЗначениеЗаполнено(ДетальныеЗаписи.НоменклатураУПП) Тогда МассивНоменклатур.Добавить(ДетальныеЗаписи.НоменклатураУПП); Иначе //Отказ, если ничего не найдено Сообщить(“Для документа ” + Источник.Ссылка + ” не найдено соответствие номенклатур ERP-УПП. Номенклатура ” +ДетальныеЗаписи.Номенклатура.Наименование+”. Выгрузка документа отменена!”); Отказ = Истина; Прервать; КонецЕсли;КонецЦикла;Если НЕ Отказ Тогда //помещаем новую табличную часть во входящие данные ТЧ.Колонки.Удалить(“Номенклатура”); ТЧ.Колонки.Добавить(“Номенклатура”, Новый ОписаниеТипов(“СправочникСсылка.НоменклатураУПП”)); ТЧ.ЗагрузитьКолонку(МассивНоменклатур,”Номенклатура”); ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить(“Товары”,ТЧ);КонецЕсли;

Правила обмена почти готовы. Теперь необходимо установить галку для Свойства “Получить из входящих данных” для табличной части Товары.

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

Связана эта ситуация с тем, что свойство ЕдиницаИзмерения привязана к номенклатуре-владельцу. Следовательно, нужно передать из ПКС единиц измерения номенклатуру-владельца в ПКО ЕдиницыИзмерения.

Добавим в обработчик события Перед выгрузкой для ПКС ЕдиницаИзмерения следующий код:

ИсходящиеДанные = Новый Структура(“Владелец”);ИсходящиеДанные.Владелец = ОбъектКоллекции.Номенклатура;

То, что указываем в ПКС как ИсходящиеДанные, в ПКО будет уже ВходящиеДанные.

В ПКО ЕдиницыИзмерения установим Галку “Получить из входящих данных” для Поля “Владелец”.

Также не забудем дописать в ПКО ПриобретениеТоваровУслуг строку кода для выгрузки единиц измерений в ТЧ

Исправленный код ПКО ПриобретениеТоваровУслуг для Единиц измерения
//Формируем Новую табличную часть, которую будем помещать во входящие данные ТЧ = Источник.Товары.Выгрузить();//Массив Номенклатур для загрузки в колонку ТЧМассивНоменклатур = Новый Массив;МассивЕдиницИзмерения = Новый Массив;//для того, чтобы не выполнять запрос в цикле, помещаем в запрос всю ТЧ Источника Запрос = Новый Запрос;Запрос.Текст = “ВЫБРАТЬ| СопоставлениеНоменклатурыУППERP.НоменклатураУПП КАК НоменклатураУПП,| ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура|ИЗ| Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.pll_СопоставлениеНоменклатурыУППERP КАК СопоставлениеНоменклатурыУППERP| ПО ПриобретениеТоваровУслугТовары.Номенклатура = СопоставлениеНоменклатурыУППERP.НоменклатураERP|ГДЕ| ПриобретениеТоваровУслугТовары.Ссылка = &Источник”;Запрос.УстановитьПараметр(“Источник”, Источник);РезультатЗапроса = Запрос.Выполнить();ДетальныеЗаписи = РезультатЗапроса.Выбрать();Пока ДетальныеЗаписи.Следующий() Цикл //проверяем, найдено ли соответствие Если ЗначениеЗаполнено(ДетальныеЗаписи.НоменклатураУПП) Тогда МассивНоменклатур.Добавить(ДетальныеЗаписи.НоменклатураУПП); МассивЕдиницИзмерения.Добавить(ДетальныеЗаписи.Номенклатура.ЕдиницаИзмерения); Иначе //Отказ, если ничего не найдено Сообщить(“Для документа ” + Источник.Ссылка + ” не найдено соответствие номенклатур ERP-УПП. Номенклатура “+ДетальныеЗаписи.Номенклатура.Наименование+ “. Выгрузка документа отменена!”); Отказ = Истина; Прервать; КонецЕсли;КонецЦикла;Если НЕ Отказ Тогда //помещаем новую табличную часть во входящие данные ТЧ.Колонки.Удалить(“Номенклатура”); ТЧ.Колонки.Добавить(“Номенклатура”, Новый ОписаниеТипов(“СправочникСсылка.НоменклатураУПП”)); ТЧ.ЗагрузитьКолонку(МассивНоменклатур,”Номенклатура”); ТЧ.Колонки.Добавить(“ЕдиницаИзмерения”, Новый ОписаниеТипов(“СправочникСсылка.УпаковкиЕдиницыИзмерения”)); ТЧ.ЗагрузитьКолонку(МассивЕдиницИзмерения,”ЕдиницаИзмерения”); ВходящиеДанные = Новый Структура; ВходящиеДанные.Вставить(“Товары”,ТЧ);КонецЕсли;

Как видим на рисунке ниже, табличная часть выгрузилась и загрузилась корректно.

Модель процесса конвертации

В основе реализованной в БСП механики конвертации данных через формат данных EnterpriseData, лежит модель, включающая в себя следующие элементы (далее – функциональные компоненты конвертации):

  • Конвертация,
  • Правила обработки данных (ПОД),
  • Правила конвертации объектов (ПКО), частью которых являются правила конвертации свойств (ПКС),
  • Правила конвертации предопределенных данных (ПКПД),
  • Алгоритмы.

В совокупности все эти компоненты реализуют функциональность, связанную с обработкой данных в процессе их получения, либо отправки:

4.png?_=000189478607CB36

Механизм компоновки элементов конвертации

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

3.png?_=00010AD21060C576

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

Управлять составом конвертаций можно с помощью команд Добавить элемент в состав конвертации и Выделить элемент из состава конвертаций доступными из форм функциональных компонентов.

Команда Добавить элемент в состав конвертации создает в КД3.0 связь между текущим элементом и конвертацией, указанной в форме выбора.

С помощью команды Выделить элемент из состава конвертаций выполняется операция “отпочкования”: создается вторая версия текущего элемента и привязывается к тем конвертациям, с которых был снят флаг в форме редактирования состава конвертаций, использующих текущий элемент.

Ниже приведены примеры использования общих элементов конвертации.

Пример 1

В двух конфигурациях, назовем их Конфигурация 1 и Конфигурация 2, справочник Контрагенты имеет одинаковую структуру. Реализовав логику загрузки контрагентов из формата EnterpriseData для Конфигурации 1 будет логично использовать ее и в Конфигурации 2. КД3.0 позволяет это сделать путем включения ПКО для справочника Контрагенты в состав одновременно двух конвертаций: и для Конфигурации 1, и для Конфигурации 2.

Пример 2

Выполняется параллельная разработка двух версий одной конфигурации, назовем их Версия 1 и Версия 2. Версия 2 отличается от Версии 1 только названиями реквизитов справочника Контрагенты. Соответственно конвертация для Версии 2 будет отличаться от конвертации Версии 1 только ПКО для справочника Контрагенты, поэтому в каждой конвертации свой вариант этого ПКО. Все остальные элементы конвертации должны быть общими для Версии 1 и Версии 2, чтобы избежать необходимости дублирования изменений, например, при исправлении ошибок в правилах либо алгоритмах конвертации.

Копирование состава конвертации

В КД3.0 поддерживается операция копирования состава конвертаций (раздел Конвертации, команда Копирование состава конвертации).

При копировании состава конвертации не происходит создание новых правил – вместо этого существующие правила конвертации-источника включаются в состав указанной конвертации.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...