Создание внешней обработки по синхронизации структур справочников «Структура предприятия»

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

1. Для чего нужна синхронизация справочников?

Синхронизация справочников задача довольно распространенная. Система конфигурации 1С, в т.ч. и «Управление холдингом» включают в себя различные механизмы интеграции и обмена данными, например, механизм распределенной информационной базы (РИБ), обработку «Универсальный обмен данными в формате XML». Если по какой-либо причине использование типовых способов обмена не представляется возможным, то есть вариант создать свое решение через внешнюю обработку. Рассмотрим основные подходы к созданию такой обработки для решения задачи синхронизации.

2. Как сопоставлять идентичные элементы?

Синхронизация обычно подразумевает полную идентичность элементов и иерархии справочников в различных базах, включая УИД и все реквизиты. Новые элементы справочника добавляются в одной базе, затем через обмен передаются в другие базы; при этом УИД/Код/Наименование/Родитель во всех базах будут одинаковыми и их можно использовать для сопоставления Есть более сложный вариант задачи, когда нужно синхронизировать две базы с уже заполненными справочниками, т.е. имеющими разный УИД и, возможно, разные коды и даже значения других реквизитов. Такая задача требует предварительного сопоставления элементов справочников. Для сопоставления можно использовать регистр сведений, через который связывают идентичные элементы справочников, например, такой-то УИД элемента первой базы соответствует такому-то УИД элемента второй базы. Можно обойтись и без регистра, а добавить реквизит «УИД_Сопоставления» в справочник однй из баз.

3. Как выбирать элементы, подлежащие синхронизации в системе программы 1С

Вариант с полной синхронизацией. Он обычно используется при начальном заполнении базы, когда справочник еще пустой. Никаких вспомогательных механизмов для регистрации элементов, подлежащих выгрузке, не требуется; достаточно использовать выборку запросом. Задача поддержания синхронности при дальнейшей эксплуатации баз данных интереснее. Постоянно перегружать весь справочник ресурсоемко, поэтому выгружают только добавленные/измененные/удаленные элементы. Для этих целей удобно использовать Планы обмена, в них регистрировать добавленные/измененные/удаленные элементы, используя подписки на события (события «При записи», «Перед удалением»). Зарегистрированные в плане обмена элементы выбирают запросом.

4. Какой использовать транспорт и формат сообщений для синхронизации справочников?

Этот вопрос решается с системными администраторами и, вероятно, со службой безопасности. Технически возможны любые варианты:
  • прямое подключение к базе через COM-соединение (довольно редкий вариант по причине низкой производительности и безопасности),
  • подключение через веб-сервисы,
  • выгрузка/загрузка файлов,
  • передача сообщений через шины данных.
В зависимости от выбранного варианта придется настраивать соответствующий интерфейс. Если используете прямое подключение к базе-респонденту, то можно обойтись вообще без сообщений, а создавать/редактировать непосредственно объекты информационной базы. В остальных случаях передаваемую информацию обычно упаковывают в xml- или json-сообщения и, при использовании файловой передачи, сохраняют их в виде файлов. При использовании в xml- или json-форматов структуру передаваемой информации удобно фиксировать в xdto-пакетах, тогда легко применять автоматическую сериализацию/десериализацию. Мы рассмотрели основные моменты, которые необходимо учесть при построении внешней обработки по синхронизации любых справочников, в т.ч. и «Структура предприятия». Специалист компании ООО “Кодерлайн”