1с 8.3 обмен между различными конфигурациями. Обмен через универсальный формат

Обмен данными между прикладными решениями 1С 8 — это то, без чего не возможно построение полноценного информационного пространства предприятия.

  • Зачем нужны обмены данных и как их использовать?
  • Виды обменов между 1С.
  • Как произвести настройку обмена данными между базами 1С?

Ответы на эти вопросы Вы узнаете ниже.

Причин для внедрения обменов, как правило, две:

Организация имеет филиальную сеть

В этом случае Вам просто необходимо настраивать обмен между различными филиалами. Для этого в системе 1С 8.3 предприятие существует механизм . С помощью которого можно гибко настроить обмен информацией. Например, для филиалов можно отключить видимость документов по другим филиалам и в тоже время центральный офис будет видеть документы всех филиалов. Другой пример — настройка обмена между базами 1С Розница офиса и магазинов.

Разделение по видам учета

Как правило, это означает, что в организации разный учет ведется в различных информационных базах. Такое разделение позволяет фильтровать «ненужную» для другого вида учета информацию для различных информационных баз. Пример: т.н. «управленческий учет» введется в базе «Управление торговлей», где отражаются все операции, и руководство видит полную картину событий, а в базу регламентированного учета «Бухгалтерия предприятия» выгружаются лишь нужные для ведения бухгалтерского и налогового учета документы.

Какие бывают механизмы обмена между базами 1С?

Обмены данных можно классифицировать по двум направлениям: используемые механизмы и используемый транспорт для обмена.

Механизмы обмена данными 1С

Как правило, при обмене используется два механизма:

  • Распределенная информационная база (РИБ) — механизм, позволяющий настроить обмен данными между филиалами. Механизм подразумевает, что обмениваются абсолютно идентичные конфигурации БД. Механизм умеет передавать изменения конфигурации баз данных. Механизм реализован на уровне технологической платформы.
  • Универсальный механизм обмена между конфигурациями — механизм является разработкой фирмы 1С для прикладных решения. Он универсален и основан на . Обмен данными осуществляется с помощью правил xml, которые создаются в специальной конфигурации — . С помощью данного механизма можно реализовать как одноразовый обмен, так и постоянный обмен между 1С конфигурациями. Механизм реализован на уровне конфигурации, встроить в свою конфигурацию можно из технологической конфигурации .

Транспорт для обмена данными

Транспортом может выступать достаточно широкий спектр технологий. Рассмотрим основные, реализованные в универсальном механизме обмена 1С 8.2:

Получите 267 видеоуроков по 1С бесплатно:

  • Локальный или сетевой каталог — самый простой транспорт. Одна ИБ создает файл на диске, вторая считывает его и добавляет свой файл.
  • FTP-ресурс — обмен, аналогичен обмену через каталог. Отличие — обмен осуществляется через FTP протокол.
  • Почтовые сообщения или E-mail — обмен проходит по средствам электронной почты. Конфигурации посылают друг другу почтовые сообщения и регулярно проверяют почтовый адрес на наличие новых сообщений.
  • Прямое подключение (COM) — обмен осуществляется через прямое подключение одной базы к другой по средствам .
  • Интернет (Web service) — транспортом является веб-служба. Одна информационная база подключается к , веб-сервис подключается к второй базе и транспортирует сообщение. Для осуществления такого транспорта необходимо иметь .

Как настроить обмен данными между базами 1С?

Азы настройки обмена данными в 1С с помощью конфигурации «1С Конвертации данных» на примере смотрите в видео:

Обмен данными 1С по расписанию в 1С 8.2

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

Для клиент-серверного варианта

В справочнике «Настройки обмена данными», на вкладке «Автоматический обмен» необходимо создать новое регламентное задание, где указать расписание:

Для файлового варианта

В справочнике «Настройки обмена данными», на вкладке «Автоматический обмен» необходимо создать новое регламентное задание, где на вкладке «Обмен по событиям» указать события, по котором будет выполняться запуск обмена. Например, при старте определенного пользователя:

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

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

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

Живой пример потребности в доработке типовых правил обмена

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

Решение проблемы: доработаем пакет конвертации из плана обмена ОбменЗарплата3Бухгалтерия3. Добавим в типовые «Правила обмена 1С» новое «Правило конвертации объектов» (ПКО) для справочника «Регистрации в налоговом органе» и соответственно «Конвертацию свойств» этого справочника (ПКС). Обязательно доработаем типовые «Правила регистрации объектов», т.к. возникла необходимость зарегистрировать изменения справочника на узле обмена. И пересмотрим «Правила обмена 1С» базы корреспондента.

Где все это будем редактировать? для написания и изменения правил нам потребуется конфигурация «1С:Конвертация данных 2».

Доработка типовых правил конвертации из Плана обмена ЗУП - БП

Итак, доработку правил обмена 1С начнем с того, что в конфигураторе для плана обмена ОбменЗарплата3Бухгалтерия3 в состав добавим новый элемент - справочник РегистрацииВНалоговомОргане. Данное изменение сделаем в обоих конфигурациях «1С:Зарплата и управление предприятием 3» и «1С:Бухгалтерия предприятия 3».

Сохраним и обновим конфигурации.

В режиме предприятия для каждой базы выгрузим описание структуры метаданных с помощью обработки MD83Exp.epf для платформы «1С:Предприятие 8.3». Обработку можно найти в комплекте «1С:Конвертация данных».

На следующем этапе выгрузим пакет конвертации из ЗУП и БП. Пакет должен состоять из 3 файлов: ПравилаРегистрации, ПравилаОбмена, ПравилаОбменаКорреспондента.

В рамках данной статьи не будет описания как настраивается синхронизация данных, это можно прочитать на сайте компании «Кодерлайн» в разделе «Статьи экспертов» либо посмотреть записи вебинаров . Сейчас в базах уже настроена данная опция. Поэтому переходим в настройку синхронизации (Администрирование -> Синхронизация данных -> Настройка синхронизации данных), нажимаем кнопку «Загрузить правила». Перед нами откроется форма «Правил для синхронизации». По кнопке «Еще» выберем пункт «Сохранить правила в файл».


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

Аналогичные действия выполним и для другой информационной базы «1С:Бухгалтерия предприятия».
В итоге все подготовительные работы для редактирования правил готовы. У нас есть:

Описание структуры метаданных для загрузки в «1С:Конвертация данных 2» (для ЗУП и БП);

Пакет конвертации, который содержит правила обмена 1С и правила регистрации, необходимые для загрузки в «1С:Конвертация данных 2» (для ЗУП и БП).

Переходим в «1С:Конвертация данных 2» . Выполним следующие действия по порядку для обоих информационных баз:

Загружаем структуры метаданных наших конфигураций;

Создаем конвертации и загружаем правила обмена данными 1С из пакетов конвертации (файл правил называется ExchangeRules);

Создаем регистрации и загружаем правила регистрации из пакетов конвертации (файл правил называется RegistrationRules).


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

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

Доработанные правила обмена и правила регистрации готовы. Теперь в правила корреспондента (CorrespondentExchangeRules) из пакета ЗУП копируем содержимое правил обмена (ExchangeRules) из пакета БП. В правила корреспондента (CorrespondentExchangeRules) из пакета БП копируем содержимое правил обмена (ExchangeRules) из пакета ЗУП.

В итоге должно получиться следующее:

На этом работа в «1С:Конвертация данных 2» завершена. Доработанные пакеты правил конвертации готовы, осталось загрузить их обратно в информационные базы и проверить синхронизацию.

Архивируем файлы из пакетов в Архив ZIP и загружаем в ЗУП и БП свои пакеты конвертации.

Все готово. Осталось протестировать.

Вспомним условия задачи. Необходимо было зарегистрировать к выгрузке справочник «Регистрации в налоговом органе» и проверить, как заполняется ТЧ документа «Отражение зарплаты в бухучете» на стороне «1С:Бухгалтерия предприятия 3».

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

Проверяем на стороне «1С:Бухгалтерия предприятия 3»:


Подведем итог. Результат поставленной задачи выполнен успешно. Мы доработали план обмена ЗУП - БП, добавив новый элемент для регистрации изменений и дописали правила конвертации для синхронизации данных.

Что необходимо для автоматического обмена данными, без внесения изменений в конфигурацию:
1) Обработка "Универсальный обмен данными в формате XML" , которая входит в состав большинства типовых конфигураций. Если её там не оказалось, то её легко найти на диске ИТС или на просторах интернета. В конфигурации она обзывается "УниверсальныйОбменДаннымиXML"
2) Правила обмена данными. Создаются с помощью "Конвертации данных". Работу с которой вам придётся освоить. Есть и видеокурсы и учебные пособия. Например: http://programmist1s.ru/wp-content/uploads/2013/06/Konvertatsiya_dannyih._Metodika_rabotyi_i_primeryi.pdf
3) Внешняя обработка , содержащая процедуры загрузки/выгрузки. Займемся её созданием:
Создаётся внешняя обработка в модуле объекта которой будет нижеприведённый текст (подставляете свои данные по базам и пользователям). Желательно создать отдельного пользователя с полными правами для обмена данными. Назовём обработку, к примеру, "ОбменДанными.epf".

Если ПараметрЗапуска = "Выгрузка" Тогда Обработка=Обработки.УниверсальныйОбменДаннымиXML.Создать(); //Задаём необходимые для выгрузки параметры (необязательные для редактирования) Обработка.РежимОбмена="Выгрузка"; Обработка.ЗагружатьДанныеВРежимеОбмена=Истина; Обработка.ЗаписыватьРегистрыНаборамиЗаписей=Истина; Обработка.ЗапоминатьЗагруженныеОбъекты=Истина; Обработка.ИспользоватьОтборПоДатеДляВсехОбъектов=Истина; Обработка.ВыгружатьТолькоРазрешенные=Истина; //!Задали необходимые параметры для выгрузки //Данные параметры необходимо перезаполнить ОБЯЗАТЕЛЬНО //Устанавливаем ограничения на выгрузку по датам объектов Обработка.ДатаНачала = ТекущаяДата() - 60*60*24*2; Обработка.ДатаОкончания = "00010101"; //Если хотим выгружать данные в файл - ставим Ложь, Если Истина - будет произведена выгрузка в базу-приёмник Обработка.НепосредственноеЧтениеВИБПриемнике=Истина; //Если база-приёмник выгружаемых данных является серверной, то Ложь. Если файловая - Истина Обработка.ТипИнформационнойБазыДляПодключения=Истина; //!Обязательные параметры перезаполнили //Если выгружаем данные в файл Если Не Обработка.НепосредственноеЧтениеВИБПриемнике Тогда Обработка.ИмяФайлаОбмена = "C:\Inbox\ОлегА\Конвертация\выгрузка.xml"; //Если выгружаем даннные в базу Иначе Обработка.ПарольИнформационнойБазыДляПодключения="Админ"; Обработка.ПользовательИнформационнойБазыДляПодключения="суперкрутой"; Обработка.АутентификацияWindowsИнформационнойБазыДляПодключения=Ложь; //Если приёмник данных - серверная база Если Обработка.ТипИнформационнойБазыДляПодключения = Ложь Тогда Обработка.ИмяСервераИнформационнойБазыДляПодключения="MainServ"; Обработка.ИмяИнформационнойБазыНаСервереДляПодключения="Buhia"; //Если приёмник данных - файловая база Иначе Обработка.ВерсияПлатформыИнформационнойБазыДляПодключения="V82"; Обработка.КаталогИнформационнойБазыДляПодключения ="C:\Inbox\ОлегА\Клиенты\Зевс БП20\Зевс БП20"; КонецЕсли; КонецЕсли; //Действия над регистрацией при выгрузке по планам обмена Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки=0; // 0 - не снимать регистрацию, // 1 - снимать регистрацию Обработка.ЗагрузитьПравилаОбмена(); //ЕСЛИ НУЖНО ВЫГРУЖАТЬ ПО ПЛАНАМ ОБМЕНА, ТО ВКЛЮЧАЕМ ЭТОТ БЛОК И ПОДСТАВЛЯЕМ СВОЙ УЗЕЛ ПЛАНА ОБМЕНА //Для Каждого Стр Из Обработка.ТаблицаПравилВыгрузки.Строки Цикл // Стр.Включить=1; // Для Каждого Стр1 Из Стр.Строки Цикл // Стр1.Включить=1; // Стр1.СсылкаНаУзелОбмена=ПланыОбмена.Полный.НайтиПоКоду("БП20"); // КонецЦикла; //КонецЦикла; Обработка.ВыполнитьВыгрузку(); ЗавершитьРаботуСистемы(Ложь); ИначеЕсли ПараметрЗапуска = "Загрузка" Тогда ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать(); ОбработкаОбмена.ИмяФайлаОбмена = "C:\Inbox\ОлегА\Выгрузка.xml"; ОбработкаОбмена.РежимОбмена = "Загрузка"; ОбработкаОбмена.ОткрытьФайлЗагрузки(Истина); ОбработкаОбмена.АрхивироватьФайл = Ложь; ОбработкаОбмена.ВыполнитьЗагрузку(); ОбработкаОбмена = Неопределено; ЗавершитьРаботуСистемы(Ложь); КонецЕсли;

4) Bat файл выгрузки , который будет запускать 1с и внешнюю обработку с параметром запуска под пользователем, который предназначен для обмен данными. Файл необходимо создать к примеру в notepad++ с кодировкой OEM(MS-Dos), иначе работать не будет. Файл назовём, например "BatVygruz.bat". Текст будет следующим:

Если база файловая:
"C:\Program Files (x86)\1cv82\common\1cestart.exe" ENTERPRISE /F"C:\Inbox\КБФ\1Cv8_Base_8.1\Зевс 83 БП3\Зевс 83 БП3" /N"РоботОбменаДанными" /P"pass" /DisableStartupMessages /RunModeManagedApplication /Execute"C:\Inbox\ОлегА\ОбменДанными.epf" /C"Выгрузка"
Пояснения:

б) C:\Inbox\КБФ\1Cv8_Base_8.1\Зевс 83 БП3\Зевс 83 БП3 - ваш путь к файловой базе, из которой будем выгружать данные
в) РоботОбменаДанными - Имя пользователя, под которым запускам 1С для обмена данными
г) pass - пароль пользователя
д) /DisableStartupMessages - закрываем всплывающие окна при старте 1С
е) /RunModeOrdinaryApplication - запуск в обычном режиме толстый клиент
ж) C:\Inbox\ОлегА\ОбменДанными.epf - путь к нашей обработке, которая запустится при старте
з) Выгрузка - передаём параметр запуска 1С, сообщает, что надо выгружать данные

Если база серверная:
"C:\Program Files (x86)\1cv82\common\1cestart.exe" ENTERPRISE /S"Server1C/DataBase" /N"РоботОбменаДанными" /P"pass" /DisableStartupMessages /RunModeManagedApplication /Execute"C:\Inbox\ОлегА\ОбменДанными.epf" /C"Выгрузка"
Пояснения:
а) C:\Program Files (x86)\1cv82\common\1cestart.exe - ваш путь к стартеру 1С
б) Server1C/DataBase - ваш сервер на котором находится база и имя самой базы из которой выгружаем данные.
Остальные параметры аналогичны файловому варианту bat файла

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

6) Задать расписание запуска наших Bat файлов загрузки/выгрузки на сервере. Для этого надо зайти в администрирование панели управления на сервере и в планировщике заданий создать новое задание запуска файла выгрузки на 23 часа каждый день и задание на загрузку с указанием Bat файла загрузки(если надо) на 04 часа к примеру.

Печать (Ctrl+P)

Обмен через универсальный формат

Подсистема «Обмен данными» библиотеки стандартных подсистем содержит 4 варианта (технологии) обмена информацией между различными информационными базами:

  • распределенные информационные базы (РИБ);
  • обмен данными через универсальный формат;
  • обмен данными по правилам обмена (правила обмена создаются при помощи конфигурации «Конвертация данных», редакция 2.1);
  • обмен данными без правил обмена.

В этой статьи рассматривается технология обмена данными через универсальный формат EnterpriseData . Данная технология доступна в “Библиотеке стандартных подсистем”, начиная с версии 2.3.1.62. выпущенной в начале 2016 году. На текущий момент, последняя редакция БСП 2.3 (для использования с платформой “1С:Предприятие 8.3” не ниже версии 8.3.8.1652 с отключенным режимом совместимости) имеет релиз 2.3.6.17 .

Рис. 1 Последние релизы БСП 2.3

Среди файлов поставки прикладных решений 1С имеется текстовый файл “Версии библиотек”, где написана на базе какой версии БСП разработано приложение, например, на основе прикладного решения УТ 11.3.3.231 легло БСП 2.3.5.65.

Отметим, что для использования с платформой “1С:Предприятие 8.3” не ниже версии 8.3.10.2168 с отключенным режимом совместимости выпущена редакция БСП 2.4.

Описание формата EnterpriseData

Что такое формат EnterpriseData ?

Это формат, позволяющий описать объект информационной базы (контрагента, накладную и т.п.) или сообщить о факте удаления этого объекта. Ожидается, что конфигурация, получившая файл в формате EnterpriseData, отреагирует соответствующим образом – создаст у себя новые объекты и удалит те, которые в файле помечены как удаленные. Он предназначен для обмена информацией между конфигурациями УТ, РТ, УНФ, БП. Также формат может использоваться для обмена информацией с любыми другими информационными системами: он не зависит от особенностей собственного программного обеспечения или структур информационных баз, которые участвуют в обмене и не содержит в себе явных ограничений использования.

Версия формата EnterpriseData

Данные формата хранятся в XDTO – пакетах в ветки общие конфигурации базы данных, как показано на рис. 2

Рис.2 XDTO – пакеты формата данных EnterpriseData

На рис. 2 видно, что существуют несколько XDTO – пакетов. Это разные версии формата. Номер версии формата состоит из X.Y.Z, где X.Y – версия, Z – это Minor версия. Minor версия увеличивается в случае исправления ошибок и прочих изменениях, при которых: сохраняется работоспособность логики конвертации данных, основанной на предыдущей версии формата (сохранение обратной совместимости текущих алгоритмов передачи данных через формат); поддержка новых возможностей формата для логики конвертации носит добровольный характер. Примером таких изменений может быть исправление ошибки, изменения свойств объектов формата, добавление свойств, использование которых при конвертации данных не является обязательным. В остальных случаях при изменении формата увеличивается Major версия: X – в случае глобальной реструктуризации, Y – в остальных случаях.
Формат описывает представление объектов (документов или элементов справочников) в виде XML-файлов. Версия 1.0.1 содержит описание 94-х объектов из различных областей (финансы, производство, закупки и продажи, складские операции). Названия типов, как правило, хорошо понятны и не нуждаются в дополнительных объяснениях: например, «Документ.АктВыполненныхРабот» или «Справочник.Контрагенты». Как можно заметить, описание типов документов начинается с префикса «Документ.», элемента справочника – с префикса «Справочник.». Подробнее описание формата можно посмотреть
Последняя версия 1.3, однако, чаще всего используется версия 1.0. Нет большой разницы между версиями. Формат EnterpriseDataExchange_1_0_1_1 используется при обмене через веб-сервис.
Отметим, что вместе с пакетом формата данных EnterpriseData используется пакет ExchangeMessage при создании правилах конвертации. Именно этот пакет содержит тип объект AdditionalInfo, который может иметь любой тип значения и используется при при создании правила конвертации между объектами конфигураций. которые отсутствуют в формате данных. Именно, благодаря AdditionalInfo, можно адаптировать и настраивать правила обмена без изменения данных формата в XDTO-пакетах.

Рис. 3 Структура XDTO-пакетаExchangeMessage

Как обмениваться данными в формате EnterpriseData?

Обмен данными в формате EnterpriseData с конфигурацией – это обмен файлами. В ответ на полученный от внешнего приложения файл конфигурация обработает его и создаст файл-ответ. Обмен файлами может происходить:

  • через выделенный файловый каталог,
  • через каталог FTP,
  • через веб-сервис, развернутый на стороне информационной базы. Файл с данными передается как параметр веб-методов.

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

При обмене с использованием планов обмена конфигурации в ходе синхронизации передают только информацию об изменениях, произошедших со времени последней синхронизации (чтобы минимизировать объем передаваемой информации). При первой синхронизации конфигурация выгрузит все объекты в формате EnterpriseData в XML-файл (поскольку все они являются «новыми» для стороннего приложения).

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

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

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

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

Более подробно об обмен данными с прикладными решениями на платформе «1С:Предприятие» в формате EnterpriseData можно посмотреть

Общий модуль “менеджера обмена через универсальный формат”.

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


Рис. 4 Структура модуля менеджера обмена через универсальный формат

Модуль создается автоматически с помощью конфигурации «Конвертация данных», редакция 3.0, на основе настроенных правил обмена либо вручную в конфигураторе.

Модуль состоит из нескольких крупных разделов, каждый из которых содержит свою группу процедур и функций.

  1. Комментарий. Первая строка модуля содержит комментарий с наименованием конвертации. Эта строка необходима для идентификации модуля при использовании команды в программе «Конвертация данных», редакция 3.0., например. // Конвертация УП2.2.3 от 01.06.2017 19:51:50
  2. Процедуры конвертации . Содержит предопределенные процедуры, которые выполняются на разных этапах синхронизации данных: перед конвертацией, после конвертации, перед отложенным заполнением.
  3. Правила обработки данных (ПОД) . Содержит процедуры и функции, которые описывают правила обработки данных.
  4. Правила конвертации объектов (ПКО) . Содержит процедуры и функции, которые описывают правила конвертации объектов, а также правила конвертации свойств данных объектов.
  5. Правила конвертации предопределенных данных (ПКПД). Содержит процедуру, заполняющую правила конвертации предопределенных данных.
  6. Алгоритмы . Содержит произвольные алгоритмы, которые вызываются из других правил (ПОД или ПКО).
  7. Параметры. Содержит логику заполнения параметров конвертации.
  8. Общего назначения . Содержит процедуры и функции, которые широко используются в правилах и алгоритмах.

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

КомпонентыОбмена. Тип – Структура . Содержит параметры и правила обмена, инициализированные в рамках выполнения сеанса обмена.

НаправлениеОбмена. Тип – Строка . Либо «Отправка», либо «Получение».

ДанныеИБ. Тип – СправочникОбъект либо ДокументОбъект .

Процедуры, связанные с событиями конвертации

Предусмотрены три предопределенные процедуры, которые вызываются в процессе конвертации:

  • ПередКонвертацией . Вызывается перед выполнением синхронизации данных. Обычно в этой процедуре размещается логика инициализации различных параметров конвертации, заполнения значений по умолчанию и т. д. Параметры:КомпонентыОбмена .
  • ПослеКонвертации . Вызывается после выполнения синхронизации данных, но до выполнения отложенного заполнения. Параметры:КомпонентыОбмена .
  • ПередОтложеннымЗаполнением . Вызывается перед выполнением отложенного заполнения. Здесь может быть расположена логика сортировки или корректировки таблицы объектов, подлежащих отложенному заполнению. Параметры:КомпонентыОбмена .

Процедуры ПОД

ЗаполнитьПравилаОбработкиДанных. Экспортная процедура, в которой располагается логика заполнения правил обработки данных. Содержит вызовы других процедур, которые добавляют в таблицу правил правило обработки конкретного объекта (см. ниже процедуры ДобавитьПОД ). Параметры: НаправлениеОбмена , ПравилаОбработкиДанных

ДобавитьПОД_<ИмяПОД>. Набор процедур, которые наполняют таблицу ПОД правилами для конкретных объектов. Количество таких процедур соответствует количеству ПОД, предусмотренных для данной конвертации в программе «Конвертация данных», редакция 3.0. Параметры: ПравилаОбработкиДанных (таблица значений, инициализированная в рамках выполнения сеанса обмена).

ПОД_<ИмяПОД>_ПриОбработке. Процедура содержит текст обработчика ПриОбработке для конкретного ПОД. Обработчик предназначен для реализации логики конвертации на уровне объектов. Например, назначить конкретному объекту определенное ПКО в зависимости от содержимого объекта. Параметры:

  • ДанныеИБ либо ДанныеXDTO (в зависимости от направления обмена):
  • при отправке – объект (СправочникОбъект ,ДокументОбъект );
  • при получении – структуру с описанием объекта XDTO.
  • ИспользованиеПКО . Тип –Структура . Ключ содержит строку с именем ПКО, а значение типа Булево (Истина – ПКО используется, Ложь – ПКО не используется).
  • КомпонентыОбмена .

ПОД_<ИмяПОД>_ВыборкаДанных. Функция содержит текст обработчика ПриВыгрузке . Обработчик предназначен для реализации произвольного алгоритма выборки объектов, подлежащих выгрузке. Возвращаемое значение: массив объектов, подлежащих выгрузке. В массиве могут содержаться как ссылки на объекты информационной базы, так и структура с данными для выгрузки. Параметры: КомпонентыОбмена .

Процедуры ПКО

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

ДобавитьПКО_<ИмяПКО>. Набор процедур, которые наполняют таблицу ПКО правилами для конкретных объектов. Количество таких процедур соответствует количеству ПКО, предусмотренных для данной конвертации в программе «Конвертация данных», редакция 3.0. Параметры: ПравилаКонвертации (таблица значений, инициализированная в рамках выполнения сеанса обмена).

ПКО_<ИмяПКО>_ПриОтправкеДанных. Процедура содержит текст обработчика ПриОтправке для конкретного ПКО. Обработчик используется при выгрузке данных. Предназначен для реализации логики конвертации данных, содержащихся в объекте информационной базы, в описание объекта XDTO. Параметры:

  • ДанныеИБ . Тип –СправочникОбъект , ДокументОбъект . Обрабатываемый объект информационной базы.
  • ДанныеXDTO . Тип –Структура . Предназначен для доступа к данным объекта XDTO.
  • КомпонентыОбмена .
  • СтекВыгрузки . Тип –Массив . Содержит ссылки на выгружаемые объекты с учетом вложенности.

ПКО_<ИмяПКО>_ПриКонвертацииДанныхXDTO. Процедура содержит текст обработчика ПриКонвертацииДанныхXDTO для конкретного ПКО. Обработчик используется при загрузке данных. Предназначен для реализации произвольной логики конвертации данных XDTO. Параметры:

  • ДанныеXDTO . Тип –Структура . Свойства объекта XDTO, прошедшие предварительную обработку для упрощения доступа к ним.
  • ПолученныеДанные . Тип –СправочникОбъект , ДокументОбъект . Объект информационной базы, сформированный путем конвертации данных XDTO. Не записан в информационную базу.
  • КомпонентыОбмена .

ПКО_<ИмяПКО>_ПередЗаписьюПолученныхДанных. Процедура содержит текст обработчика ПередЗаписьюПолученныхДанных для конкретного ПКО. Обработчик используется при загрузке данных. Предназначена для реализации дополнительной логики, которую необходимо выполнить перед записью объекта в информационную базу. Например, нужно ли загрузить изменения в существующие данные ИБ либо следует загрузить их как новые данные. Параметры:

  • ПолученныеДанные . Тип –СправочникОбъект , ДокументОбъект . Элемент данных, сформированный путем конвертации данных XDTO.

Записывается в случае, если эти данные являются для информационной базы новыми (параметр ДанныеИБ содержит значение Неопределено ).

В противном случае ПолученныеДанные замещают собой ДанныеИБ (все свойства из ПолученныеДанные переносятся в ДанныеИБ ).

Если стандартное замещение данных ИБ полученными данными не требуется, следует прописать свою логику переноса, после чего установить параметру ПолученныеДанные значение Неопределено :

  • ДанныеИБ . Тип –СправочникОбъект , ДокументОбъект . Элемент данных информационной базы, соответствующий полученным данным. Если соответствующие данные не найдены, содержит Неопределено .
  • КонвертацияСвойств . Тип –Таблица значений . Содержит правила конвертации свойств текущего объекта, инициализированные в рамках выполнения сеанса обмена.
  • КомпонентыОбмена .

Процедуры ПКПД

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

Алгоритмы

В программе «Конвертация данных», редакция 3.0 есть возможность создавать произвольные алгоритмы, которые вызываются из обработчиков ПОД и ПКПД. Наименование, параметры и содержимое алгоритмов определяются при разработке правил.

Параметры

ЗаполнитьПараметрыКонвертации. Экспортная процедура, в которой происходит заполнение структуры с параметрами конвертации. Параметры: ПараметрыКонвертации (тип – Структура ).

Процедуры и функции общего назначения

ВыполнитьПроцедуруМодуляМенеджера. Параметры: ИмяПроцедуры (строка), Параметры (структура). Экспортная процедура, которая предназначена для вызова неэкспортной процедуры модуля, имя и параметры которой получены на вход. Позволяет выполнить вызов процедуры или функции по строке без использования метода Выполнить .

ВыполнитьФункциюМодуляМенеджера. Параметры: ИмяПроцедуры (строка), Параметры (структура). Функция, назначение аналогично ВыполнитьПроцедуруМодуляМенеджера . Отличие в том, что она вызывает функцию и возвращает ее значение.