Бесшовная интеграция между решениями 1С:ERP Управление предприятием и 1С:Документооборот (ДО) — это мощный инструмент, позволяющий пользователям работать в едином информационном пространстве. Однако на практике часто возникают ситуации, когда интеграция работает только в одну сторону: документы из ERP успешно отправляются в ДО, но обратные изменения (например, согласованные статусы, суммы или измененные реквизиты) не возвращаются в ERP. Кроме того, регулярные вопросы вызывает процесс автоматической передачи присоединенных файлов.
В этой статье мы подробно разберем, как решить проблему «одностороннего» обмена реквизитами, как правильно сопоставлять типы данных и статусы, а также как настроить бесшовную передачу присоединенных файлов между системами.
Для начала проанализируем архитектуру обратного обмена. В бесшовной интеграции задействованы веб-сервис DMService на стороне 1С:ДО и Библиотека интеграции с документооборотом (БИД) на стороне учетной системы 1С:ERP. Когда пользователь меняет реквизиты или статус документа в 1С:ДО, эти изменения должны зарегистрироваться и передаться обратно. Если этого не происходит, выполним следующие шаги для диагностики и исправления.
Шаг 1. Проверка совместной работы регламентных заданий
Обратная передача данных полностью зависит от корректной работы двух регламентных заданий в обеих базах. Нам необходимо убедиться, что выполняются следующие процессы:
Формирование сообщений обмена для интегрированных систем. Именно оно отслеживает изменения интегрированных объектов и помещает их в очередь отправки.Интеграция с 1С:Документооборотом – Выполнить обмен данными. Это задание опрашивает веб-сервис ДО, забирает подготовленные пакеты данных и записывает их в базу ERP.Обратим внимание на важный нюанс: даже если в консоли регламентных заданий оба процесса отображаются как выполненные без ошибок, обязательно откройте Журнал регистрации в обеих системах. Нередко в ERP задание завершается со статусом «Успешно», но внутри содержится предупреждение о том, что веб-сервис вернул пустой пакет или произошла ошибка авторизации под служебной учетной записью интеграции. Для автоматического мониторинга подобных сбоев можно использовать расширение для мониторинга ошибок обмена данными.
Шаг 2. Проверка флага обновления реквизитов
Перейдем в настройки интеграции на стороне 1С:ERP. Откроем правила интеграции для проблемного типа документа. Нам нужна вкладка «Передача из 1С:Документооборот». Для каждого реквизита, который должен изменяться автоматически (например, «Статус», «Сумма», «Договор подписан»), должен быть установлен флаг «Обновлять». Если этот флаг не установлен, система ERP будет игнорировать любые изменения, пришедшие из ДО, считая локальные данные приоритетными.
Шаг 3. Решение проблемы сопоставления типов данных (на примере статусов)
Одной из наиболее частых причин сбоя при обновлении статусов является банальное несоответствие перечислений в двух базах. Например, в 1С:ДО документ переведен в состояние «Согласован», а в 1С:ERP соответствующий реквизит имеет тип перечисления, где элемента с таким именем просто нет или он называется иначе (например, «Согласована» или «Утвержден»).
Если автоматическое сопоставление не срабатывает из-за разницы типов, нам потребуется написать простое выражение на встроенном языке непосредственно в правилах интеграции для реквизита «Статус». Рассмотрим пример кода, который преобразует строковое состояние из 1С:ДО в соответствующее значение перечисления 1С:ERP:
// Пример выражения для заполнения реквизита "Статус" в 1С:ERP
// Источник.Состояние - строковое представление состояния документа в 1С:ДО
Если Источник.Состояние = "Согласован" Тогда
Результат = Перечисления.СтатусыДоговоровКонтрагентов.Согласован;
ИначеЕсли Источник.Состояние = "НаУтверждении" Тогда
Результат = Перечисления.СтатусыДоговоровКонтрагентов.ОтправленНаСогласование;
ИначеЕсли Источник.Состояние = "Отклонен" Тогда
Результат = Перечисления.СтатусыДоговоровКонтрагентов.НеСогласован;
Иначе
Результат = Перечисления.СтатусыДоговоровКонтрагентов.Новый;
КонецЕсли;
Использование подобных явных преобразований в правилах обмена гарантирует корректную запись данных без возникновения платформенных ошибок несовместимости типов.
Шаг 4. Использование обработчиков для сложного заполнения
В практической разработке бывают случаи, когда стандартного сопоставления реквизитов недостаточно, либо из ДО приходят неполные данные. В таких ситуациях мы можем задействовать обработчики интеграции. Для этого в модуле менеджера справочника ПравилаИнтеграцииС1СДокументооборотом или через расширение мы можем переопределить логику заполнения реквизитов при получении данных.
По умолчанию при бесшовной интеграции файлы ведут себя обособленно от других реквизитов. Если пользователь просто прикрепляет файл к документу в ERP, этот файл не переносится в ДО автоматически, если интеграция не настроена должным образом. Разберем, как решить эту задачу.
Вариант А. Настройка стандартного режима хранения файлов
Чтобы файлы, прикрепляемые пользователями в ERP, автоматически сохранялись в ДО и были видны из обеих систем, необходимо правильно настроить параметры интеграции в ERP:
Вариант Б. Программный перенос существующих файлов
Если файлы уже были добавлены в ERP до того, как была настроена интеграция, или файлы добавляются специфическим программным путем, стандартный механизм их не подтянет. В этом случае нам потребуется написать программный перенос. Разберем пример кода, который считывает присоединенные файлы из справочника ERP и принудительно отправляет их в связанный документ 1С:ДО:
// Процедура программной отправки файлов объекта ERP в связанный документ ДО
Процедура ПеренестиФайлыВДокументооборот(ДокументСсылкаERP, ДокументСсылкаДО) Экспорт
// Получаем имя справочника присоединенных файлов для нашего объекта ERP
ИмяСправочникаФайлов = ДокументСсылкаERP.Метаданные().Имя + "ПрисоединенныеФайлы";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПрисоединенныеФайлы.Ссылка КАК ФайлСсылка,
| ПрисоединенныеФайлы.Наименование КАК ИмяФайла,
| ПрисоединенныеФайлы.Расширение КАК Расширение
|ИЗ
| Справочник." + ИмяСправочникаФайлов + " КАК ПрисоединенныеФайлы
|ГДЕ
| ПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
| И НЕ ПрисоединенныеФайлы.ПометкаУдаления";
Запрос.УстановитьПараметр("ВладелецФайла", ДокументСсылкаERP);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// Получаем двоичные данные файла из тома или базы данных
ДвоичныеДанныеФайла = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.ФайлСсылка);
Если ДвоичныеДанныеФайла <> Неопределено Тогда
// Формируем структуру для передачи файла через API БИД
СтруктураФайла = Новый Структура;
СтруктураФайла.Вставить("ИмяБезРасширения", Выборка.ИмяФайла);
СтруктураФайла.Вставить("Расширение", Выборка.Расширение);
СтруктураФайла.Вставить("Данные", ДвоичныеДанныеФайла);
// Вызываем метод интеграции для добавления файла в ДО
ИнтеграцияС1СДокументооборот.ДобавитьФайлВОбъектДокументооборота(ДокументСсылкаДО, СтруктураФайла);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Используя данный метод, мы можем автоматизировать перенос любых файлов (включая сформированные печатные формы документов ERP) в автоматическом режиме при проведении документа или по нажатию специальной кнопки. В качестве готового решения без написания кода можно использовать обработку для переноса прикрепленных файлов и электронных подписей между конфигурациями.
Если в вашей организации планируется или уже осуществляется переход на новые редакции систем (1С:ERP 2.5 и 1С:Документооборот 3.0), обязательно примите во внимание следующие архитектурные особенности:
DMService. Если после обновления обратный обмен перестал работать без видимых причин, первым делом проверьте наличие официальных патчей в личном кабинете поддержки 1С и обновите БИД в ERP до актуального релиза.Таким образом, планомерная отладка регламентных заданий, явное сопоставление типов в правилах обмена и правильный выбор режима интеграции файлов позволят вам построить надежный и стабильный двусторонний обмен между вашими корпоративными системами.