Автоматизация обработки электронных документов — одна из приоритетных задач при внедрении ЭДО (включая групповую выгрузку). В этой статье мы подробно разберем, как настроить регламентное задание (РЗ) для модуля Контур.Диадок, проанализируем типичные ошибки, такие как «Таблица не найдена», и выясним, как правильно инициализировать подсистему в серверном контексте. Мы пройдем путь от настройки метаданных до использования расширений в конфигурациях на обычных формах.
Рассмотрим ситуацию: при запуске регламентного задания, созданного с помощью плагина «Генератор подключаемого модуля» (сценарий «Создание входящих документов»), система выдает ошибку Таблица не найдена "Справочник.Диадок_Документы". Проанализируем причину этого поведения. Модуль Диадока во время работы в фоновом режиме обращается к метаданным 1С для хранения информации о связях документов, статусах и настройках в архиве ЭДО. Если вы используете внешнюю обработку, этих объектов в вашей конфигурации просто не существует.
Выясним, какие шаги необходимо предпринять для исправления. В первую очередь, необходимо добавить недостающие метаданные. Диадок предоставляет специальный файл конфигурации (.cf), который содержит необходимые объекты метаданных, справочники и регистры:
Справочник.Диадок_ДокументыСправочник.Диадок_НастройкиРегистрСведений.Диадок_СтатусыДокументовПросто объединить конфигурации может быть недостаточно. Проанализируем ситуацию: если регламентное задание продолжает выдавать ошибку после объединения, необходимо убедиться, что подключаемый модуль (ПМ) переключен в режим работы «В составе конфигурации». Рассмотрим, где это настраивается: в настройках модуля на закладке «Подключаемый модуль» укажите способ хранения кода.
Разберем важный нюанс, связанный с версиями платформы и типом форм. В старых конфигурациях (например, Бухгалтерия предприятия 2.0) использование расширений ограничено режимом совместимости. Однако именно расширение является ключом к стабильной работе регламентных заданий. Посмотрим на статический анализ кода модуля, который проверяет режим работы:
Функция ИспользоватьПодсистемуДиадока() Экспорт
Результат = Истина;
ИспользоватьТиповуюПодсистему1С = ИспользоватьТиповуюПодсистему1С();
Если ИспользоватьТиповуюПодсистему1С = Истина Тогда
Результат = Ложь;
КонецЕсли;
Возврат Результат;
КонецФункции
Проанализируем этот фрагмент: если система определяет, что должна использоваться типовая подсистема 1С (ЭДО), она может блокировать функции Диадока. Также обратим внимание на проверку запуска из расширения:
Функция ИспользуетсяРасширениеКонтурДиадок()
Результат = ОбщийКонтекст_Прочитать("ЗапускИзРасширения");
Возврат Результат;
КонецФункции
Если это значение Ложь, модуль может вести себя непредсказуемо в фоновом задании. Рекомендуем рассмотреть возможность повышения режима совместимости конфигурации (например, до версии 8.3.14), что позволит установить полноценное расширение от Контура. Это «пробросит» все необходимые метаданные и методы в серверный контекст без необходимости глубокой правки кода основной конфигурации.
Поскольку регламентное задание выполняется на сервере без участия пользователя, рассмотрим вопрос авторизации. Основная сложность заключается в том, что сервер 1С должен иметь доступ к сертификату электронной подписи или сохраненным учетным данным. Разберем шаги по настройке «Технического пользователя»:
Выясним причину ошибки Метод работает только на объектах подсистемы Диадок. Она часто возникает, когда код ПМ обращается к методам основной обработки, но не может корректно инициализировать объект. Проанализируем лог: если в тексте ошибки фигурирует ВнешняяОбработка.КонтурДиадокВызовыПМ, это означает, что даже при вшитом модуле часть логики все равно пытается исполниться через механизм внешних обработок. Посмотрим на решение: убедитесь, что обработка КонтурДиадок также добавлена в состав метаданных конфигурации, а не вызывается как внешний файл .epf.
При интерактивном запуске многие параметры инициализируются автоматически. В регламентном задании этого не происходит. Рассмотрим, как правильно подготовить сценарий в подключаемом модуле. Перед вызовом метода ПрочитатьЛентуСобытий(), необходимо убедиться, что контекст организации заполнен. Проанализируем структуру вызова:
// Пример инициализации в ПМ для регламентного задания
Процедура ЭДО_Модуль_ОбработатьНовыеСобытияДокументов(Параметры) Экспорт
Настройки = ПолучитьНастройкиДляОрганизации(Параметры.Организация);
Если Настройки = Неопределено Тогда
ЗаписатьВЛог("Настройки для организации не найдены");
Возврат;
КонецЕсли;
// Дальнейшая логика обработки событий
КонецПроцедуры
Рассмотрим рекомендации по стабильности: при первом запуске РЗ может попытаться обработать всю историю сообщений. Чтобы избежать таймаутов и перегрузки сервера, рекомендуем установить фильтр по дате начала обработки событий в настройках сценария генератора ПМ. Это позволит системе «подхватывать» только актуальные документы.
Поскольку отладка регламентных заданий затруднена, разберем методы диагностики — для контроля их работы пригодится система автоматического контроля и оповещения о сбоях в регламентных заданиях 1С. Весь код, исполняемый в фоновом задании, должен записывать критические ошибки в Журнал регистрации. Ищите события с источником «Диадок» или «Kontur.Diadoc».
Если вы столкнулись с ситуацией, когда расширение установлено, но ошибка сохраняется, проанализируем кеш сервера 1С. После массового добавления справочников и регистров через объединение конфигураций часто требуется перезапуск службы 1С:Предприятие. Это гарантирует, что серверный процесс увидит новые таблицы в базе данных.
Подведем итог: для успешного запуска регламентных заданий в Диадоке необходимо:
Выполнение этих шагов позволит полностью автоматизировать документооборот и избежать рутинных операций по ручному созданию входящих документов.