Как настроить заполнение единиц измерения в табличной части при бесшовной интеграции 1С:ДО 3.0 и 1С:ERP 2.5?

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

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

Суть проблемы и ограничения механизмов интеграции

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

Библиотека интеграции с Документооборотом (БИД) «из коробки» отлично справляется с сопоставлением реквизитов шапки по наименованию или GUID, если типы справочников в обеих базах идентичны. Однако прямое сопоставление сложных ссылочных типов с разной структурой для коллекций (табличных частей) не поддерживается. При бесшовной интеграции поиск значений по умолчанию осуществляется по наименованию. Если ДО не находит точное совпадение по переданному значению из ERP, реквизит в строке табличной части останется пустым.

Выясним, какие существуют надежные способы решения этой задачи.

Способ 1. Использование произвольного алгоритма в правилах загрузки

Разберем по шагам наиболее универсальный метод — написание произвольного алгоритма.

  1. В правилах интеграции (загрузки данных в ДО), на закладке настройки реквизитов табличной части, необходимо написать программный код. Этот код будет выполняться в контексте базы-источника (1С:ERP).
  2. Алгоритм не должен просто пытаться передать ссылку на упаковку. Нам потребуется в цикле обойти табличную часть «Товары» исходного документа.
  3. Для каждой строки необходимо вычислить именно базовую единицу измерения. Это можно сделать, обратившись к самой Номенклатуре или получив базовый классификатор из реквизитов Упаковки.
  4. В результате код должен вернуть коллекцию типа Массив, состоящую из элементов типа Структура. Критически важно: ключи структуры обязаны строго совпадать с именами колонок табличной части создаваемого документа в ДО.
  5. В качестве значения ключа для единицы измерения рекомендуется передавать строковое наименование (например, «шт») или код по общероссийскому классификатору (ОКЕИ). Получив такую строку, 1С:ДО самостоятельно найдет нужный элемент в своем классификаторе при загрузке.

Если вы впервые пишете подобные правила, посмотрим на примеры реализации, которые представлены на портале ИТС в разделе, посвященном Библиотеке интеграции с 1С:Документооборотом.

Способ 2. Использование расширения на стороне 1С:ERP

Если отладка кода непосредственно в правилах ДО вызывает затруднения (так как алгоритм передается строкой и стандартная отладка там недоступна), применим другой подход — использование расширения конфигурации.

В расширении для базы 1С:ERP в документ «Заявка на закупку» мы добавляем скрытую колонку в табличную часть или создаем вычисляемый реквизит. При проведении документа (или непосредственно перед вызовом веб-сервиса интеграции) этот новый реквизит программно заполняется нужным текстовым представлением базовой единицы измерения (тем самым кодом ОКЕИ или наименованием).

В итоге в правилах интеграции на стороне ДО нам останется лишь напрямую связать эту новую подготовленную колонку из ERP с колонкой единицы измерения в ДО, без написания дополнительного кода в самих правилах.

Способ 3. Предварительная синхронизация НСИ (Enterprise Data)

Посмотрим на архитектурный аспект: механизм бесшовной интеграции работает поверх веб-сервисов и предназначен в первую очередь для связывания бизнес-процессов, а не для глубокого и постоянного обмена нормативно-справочной информацией (НСИ).

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

← На главную