Автоматизация работы с электронным документооборотом (ЭДО) — это логичный шаг для любой компании, стремящейся минимизировать рутинные операции. В то время как отправка исходящих документов в модуле «Диадок ПРО» обычно не вызывает затруднений, автоматическая обработка и подписание входящих пакетов требует более глубокого понимания архитектуры решения. В данной статье мы разберем, как реализовать этот функционал, используя возможности подключаемого модуля и регламентных заданий.
Прежде всего, разберем базовый принцип. Модуль «Диадок ПРО» спроектирован так, чтобы его стандартная логика могла быть дополнена без изменения основной конфигурации. Это достигается через механизм Подключаемого модуля (ПМ). Для автоматического подписания входящих документов нам потребуется вмешаться в процесс обработки пакета данных сразу после его получения из облака «Диадока».
Основной точкой входа для реализации нашей задачи является обработчик события ПослеСинхронизацииПакета. Проанализируем ситуацию: когда регламентное задание запускает синхронизацию, модуль получает данные о новых документах. В этот момент мы можем программно проверить содержимое пакета и принять решение о его подписании.
Рассмотрим критически важный нюанс, без которого автоматизация на сервере невозможна. Поскольку регламентное задание выполняется на стороне сервера 1С (в фоновом режиме), система должна иметь доступ к закрытому ключу сертификата электронной подписи (КЭП). Выясним, какие условия должны быть соблюдены:
ragent.Разберем по шагам процесс написания кода в подключаемом модуле. Нам необходимо инициализировать основной объект интеграции и вызвать методы подписания. Посмотрим на пример логики, которую следует внедрить в ПМ:
// Пример обработчика в подключаемом модуле
Процедура ПослеСинхронизацииПакета(ПакетДокументов, Отказ) Экспорт
Для Каждого Документ Из ПакетДокументов.Документы Цикл
// Проверяем, является ли документ входящим и не подписан ли он нами
Если Документ.Направление = "Входящий" И Документ.СтатусЭДО = "ТребуетсяПодпись" Тогда
// Здесь реализуем ваш алгоритм проверки (например, соответствие суммы заказу)
Если ПроверитьУсловияАвтоподписания(Документ) Тогда
Попытка
// Вызов метода подписания из API модуля
Результат = Диадок_Документ_Подписать(Документ);
ЗаписатьЛог("Документ " + Документ.Номер + " успешно подписан автоматически.");
Исключение
ЗаписатьЛог("Ошибка при подписании документа " + Документ.Номер + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
В данном примере функция Диадок_Документ_Подписать() является оберткой над методами внутреннего API модуля ПРО. Важно помнить, что для работы этого функционала в фоновом режиме у вас должна быть оплачена опция «Доступ к API», иначе вызов методов будет блокироваться системой защиты модуля.
Проанализируем специфику, связанную с маркируемыми товарами. Если ваша компания передает коды маркировки (КМ) через УПД, автоматическое подписание становится еще более ответственным шагом. С переходом на обязательный ЭДО для передачи КМ между юрлицами, система должна проверять легитимность кодов перед тем, как поставить подпись.
В актуальных версиях модуля (начиная с 5.х) реализована более тесная интеграция с ГИС МТ. Мы рекомендуем дополнить логику автоподписания вызовом «Сервиса проверки кодов». Если коды в УПД не принадлежат отправителю или имеют некорректный статус в системе «Честный ЗНАК», автоматическое подписание должно блокироваться с уведомлением ответственного менеджера.
Выясним причину, по которой стоит обратить внимание на обновление версии модуля. В старых версиях (например, 4.6.24) логика интерфейса и логика обработки данных были тесно связаны. В новом «Универсальном модуле» архитектура разделена. Это позволяет запускать фоновые процессы обработки документов без открытия графических форм 1С.
Для корректной работы регламентного задания необходимо инициализировать объект ДиадокОбъект программно. Посмотрим, как это выглядит в структуре кода:
// Инициализация модуля для регламентного задания
ПараметрыИнициализации = Новый Структура;
ПараметрыИнициализации.Вставить("Логин", "your_login");
ПараметрыИнициализации.Вставить("Пароль", "your_password");
ПараметрыИнициализации.Вставить("КлючРазработчика", "your_api_key");
МодульЭДО = Обработки.Диадок_Модуль_ПРО.Создать();
МодульЭДО.Инициализировать(ПараметрыИнициализации);
Важный момент: при использовании регламентных заданий всегда ведите подробный лог ошибок. Если сессия истечет или на балансе закончатся средства для отправки ответного титула, документ «зависнет» в статусе ожидания, и без логов причину будет крайне сложно обнаружить в консоли заданий.
Подводя итог, можно утверждать, что автоматическое подписание входящих документов в «Диадок ПРО» реализуемо и стабильно работает при соблюдении следующих условий:
Реализация такой схемы позволит вам существенно ускорить внутрифирменное перемещение товаров и автоматизировать сверку с поставщиками, оставляя ручную обработку только для спорных и исключительных ситуаций.