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