Как обеспечить видимость новых реквизитов 1С:Документооборота в правилах интеграции 1С:ERP?

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

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

Почему ERP «не видит» новые реквизиты Документооборота?

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

Выясним основные причины «невидимости» полей:

  1. Технические ограничения расширений: Если реквизит добавлен в расширение конфигурации ДО, он может быть недоступен для веб-сервиса основной конфигурации. Это связано со спецификой сериализации объектов через XDTO.
  2. Кэширование метаданных: ERP кэширует структуру объектов, полученную при первом подключении. Любые изменения в ДО требуют принудительного обновления связи.
  3. Отсутствие поля в XDTO-пакетах: Веб-сервис передает данные, строго соответствующие схемам XDTO. Если схема не знает о вашем новом поле НеПродлевать, оно просто не будет включено в XML-ответ.

Решение 1: Перенос реквизитов в основную конфигурацию и перепубликация

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

  1. Перенос метаданных: Добавьте реквизит (например, НеПродлевать с типом Булево) непосредственно в основную конфигурацию 1С:Документооборот.
  2. Обновление веб-сервера: После внесения изменений в конфигуратор и сохранения конфигурации базы данных, крайне важно выполнить перепубликацию базы на веб-сервере (IIS или Apache). Это обновит файл wsdl, который содержит описание доступных полей.
  3. Обновление в ERP: Перейдем в 1С:ERP. В настройках интеграции с 1С:Документооборотом попробуйте «переподключиться» к базе. Иногда помогает временное переключение версии протокола (например, с 2.0 на 3.0 и обратно), чтобы инициировать сброс кэша метаданных.

Решение 2: Использование механизма дополнительных реквизитов (рекомендуемый способ)

Чтобы не вносить изменения в структуру метаданных и не сталкиваться с проблемами обновления веб-сервисов, рассмотрим использование типового функционала Дополнительных реквизитов и сведений. Это наиболее гибкий путь для бесшовной интеграции. Для расширения возможностей этого функционала и настройки множественного выбора пригодится публикация по настройке множественных дополнительных реквизитов в 1С:Документооборот 3.0.

Выполним следующие шаги:

Преимущество: При обновлении конфигураций 1С:ДО или 1С:ERP ваши настройки не «слетят», а веб-сервис передаст эти данные в составе стандартной коллекции дополнительных свойств.

Решение 3: Программное обращение через «Выражение» в правилах интеграции

Если реквизит добавлен в основную конфигурацию, но по каким-то причинам не выбирается из списка в интерфейсе ERP, мы можем прибегнуть к программному заполнению. В настройках правил интеграции для конкретного поля выберем вариант заполнения «Из выражения на встроенном языке».

Проанализируем пример кода, который можно использовать на стороне ERP для получения данных из объекта ДО:


// В контексте выполнения правила нам доступна переменная ОбъектДО
// которая представляет собой структуру данных, пришедшую по веб-сервису
Если ОбъектДО.Свойство("НеПродлевать") Тогда
    Результат = ОбъектДО.НеПродлевать;
Иначе
    // Если свойство не найдено в структуре, можно попробовать 
    // получить его через дополнительные свойства, если они переданы
    Результат = Ложь; 
КонецЕсли;

Важно понимать: этот метод сработает только в том случае, если поле НеПродлевать попало в выборку данных на стороне ДО при формировании ответа веб-сервисом. Если типовой код веб-сервиса DMService жестко ограничивает список передаваемых полей, вам придется вмешаться в код на стороне ДО.

Решение 4: Модификация формирования данных в 1С:Документооборот

Рассмотрим ситуацию, когда поле есть в конфигурации ДО, но оно не передается в ERP. В 1С:ДО за формирование структуры данных для интеграции отвечают специальные модули (в зависимости от версии это могут быть модули интеграции или методы веб-сервиса ИнтеграцияССистемами1С).

Для версии ДО 3.0 проанализируем процедуру формирования данных объекта. Нам нужно убедиться, что наше новое поле включено в структуру ДанныеОбъекта. Если вы не хотите менять типовой код, используйте подписку на событие или перехват метода через расширение в ДО, чтобы дозаполнить структуру данных перед отправкой в ERP:


// Пример логики в расширении ДО для добавления поля в поток интеграции
Процедура После_СформироватьДанныеОбъекта(Объект, ДанныеОбъекта)
    // Добавляем наш реквизит в структуру, которую увидит ERP
    ДанныеОбъекта.Вставить("НеПродлевать", Объект.НеПродлевать);
КонецПроцедуры

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

Резюме и рекомендации

Подводя итог, отметим: бесшовная интеграция — это сложный механизм, работающий на стыке двух систем через слой XDTO. Для успешного добавления нового реквизита:

  1. Избегайте использования расширений для добавления реквизитов, участвующих в интеграции через веб-сервисы.
  2. Всегда перепубликовывайте базу ДО на веб-сервере после изменения структуры метаданных.
  3. Используйте Дополнительные реквизиты как приоритетный способ расширения данных — это минимизирует риски при обновлениях.
  4. Если реквизит не виден, используйте отладку на стороне ERP, чтобы проверить содержимое переменной ОбъектДО в правилах интеграции.
← На главную