Как добавить новый справочник в бесшовную интеграцию между 1С:Документооборот и 1С:ERP?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет IT и автоматизация бизнеса
← На главную

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

Архитектурные основы взаимодействия

Прежде чем приступать к кодингу, разберем, как работает механизм интеграции. В основе лежит Библиотека интеграции с документооборотом (БИД). Взаимодействие происходит через веб-сервис DMService, расположенный на стороне 1С:ДО. Передача данных осуществляется в формате XDTO, что требует строгого описания структуры объектов в соответствующих пакетах. Наша задача — не просто передать данные, но и обеспечить их автоматическую регистрацию при изменении объекта.

Шаг 1. Настройка регистрации изменений в 1С:Документооборот

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

  1. Найдем в конфигурации 1С:ДО план обмена, отвечающий за интеграцию. Обычно это ИнтеграцияС1СДокументооборотомПередаваемыеДанные. Нам необходимо включить наш справочник Проекты в состав этого плана обмена с авторегистрацией.
  2. Если мы хотим избежать изменения основной конфигурации, воспользуемся расширением. Добавим справочник в состав плана обмена в расширении.
  3. Проверим наличие подписок на события. Чтобы изменения попадали в очередь, объект должен регистрироваться на узлах обмена при записи. Разберем пример кода, который может использоваться в обработчике подписки на событие ПриЗаписи:

Процедура ИнтеграцияДО_ЗарегистрироватьИзменениеПроекта(Источник, Отказ) Экспорт
    Если Источник.ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;
    
    Узлы = ПланыОбмена.ИнтеграцияС1СДокументооборотомПередаваемыеДанные.Выбрать();
    Пока Узлы.Следующий() Цикл
        Если Узлы.Ссылка = ПланыОбмена.ИнтеграцияС1СДокументооборотомПередаваемыеДанные.ЭтотУзел() Тогда
            Продолжить;
        КонецЕсли;
        ПланыОбмена.ЗарегистрироватьИзменения(Узлы.Ссылка, Источник.Ссылка);
    КонецЦикла;
КонецПроцедуры

Шаг 2. Расширение XDTO-пакета

Поскольку обмен идет через веб-сервис, структура передаваемого объекта должна быть описана в XDTO-пакете DMService. Нам необходимо выполнить следующие действия:

Выясним, какие поля справочника Проекты критичны для передачи (например, Наименование, Код, Руководитель). В расширении для 1С:ДО добавим в XDTO-пакет новый тип объекта или дополним существующий тип DMObject, чтобы он мог содержать данные нашего справочника.

Шаг 3. Реализация передачи данных на стороне 1С:Документооборот

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


// Пример логики в модуле ОбработкаЗапросовXDTOДокументы
Функция ПолучитьДанныеПроекта(СсылкаНаОбъект, ДанныеXDTO) Экспорт
    // Заполняем свойства XDTO объекта данными из справочника
    ДанныеXDTO.Description = СсылкаНаОбъект.Наименование;
    ДанныеXDTO.Code = СсылкаНаОбъект.Код;
    // ... заполнение остальных полей
    Возврат ДанныеXDTO;
КонецФункции

Шаг 4. Прием и обработка данных на стороне 1С:ERP

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

Важный момент: Бесшовная интеграция опирается на уникальные идентификаторы (UUID). Система сначала ищет соответствие по внутренним таблицам регистрации, а затем по GUID объекта. Проанализируем, как это реализовано в переопределяемых модулях БИД.

В ERP следует обратить внимание на модуль БесшовнаяИнтеграцияс1СДокументооборотОбменПереопределяемый. Именно здесь рекомендуется прописывать логику сопоставления типов:


// В расширении ERP, модуль БесшовнаяИнтеграцияс1СДокументооборотОбменПереопределяемый
&После("ЗаполнитьСоответствиеТипов")
Процедура Расш_ЗаполнитьСоответствиеТипов(СоответствиеТипов)
    СоответствиеТипов.Вставить("DMProject", "СправочникСсылка.Проекты");
КонецПроцедуры

Шаг 5. Настройка интерфейса и прав доступа

После внесения изменений в код, не забудем про настройки в режиме «1С:Предприятие»:

Дополнительные материалы для изучения

Для более глубокого понимания процесса рекомендуется обратиться к файлу Добавление новых объектов.htm. Этот файл входит в поставку библиотеки DMIL (папка DMIL в дистрибутиве 1С:Документооборот). В нем содержится эталонная инструкция от разработчиков 1С по расширению функций интеграции. Помните, что современные версии конфигураций позволяют выполнять большинство этих действий через Переопределяемые модули и Расширения, сохраняя при этом типовую конфигурацию на поддержке.

Таким образом, мы рассмотрели полный цикл добавления нового объекта в обмен: от регистрации изменений в плане обмена ДО до обработки полученного XDTO-пакета в ERP. Следуя этой структуре, вы сможете интегрировать любые необходимые объекты между системами.

← На главную