Как настроить автоматическое создание документов в Контур.Диадок через регламентные задания в 1С?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Автоматизация обработки электронных документов — одна из приоритетных задач при внедрении ЭДО (включая групповую выгрузку). В этой статье мы подробно разберем, как настроить регламентное задание (РЗ) для модуля Контур.Диадок, проанализируем типичные ошибки, такие как «Таблица не найдена», и выясним, как правильно инициализировать подсистему в серверном контексте. Мы пройдем путь от настройки метаданных до использования расширений в конфигурациях на обычных формах.

Разбор основной проблемы: ошибка «Таблица не найдена»

Рассмотрим ситуацию: при запуске регламентного задания, созданного с помощью плагина «Генератор подключаемого модуля» (сценарий «Создание входящих документов»), система выдает ошибку Таблица не найдена "Справочник.Диадок_Документы". Проанализируем причину этого поведения. Модуль Диадока во время работы в фоновом режиме обращается к метаданным 1С для хранения информации о связях документов, статусах и настройках в архиве ЭДО. Если вы используете внешнюю обработку, этих объектов в вашей конфигурации просто не существует.

Выясним, какие шаги необходимо предпринять для исправления. В первую очередь, необходимо добавить недостающие метаданные. Диадок предоставляет специальный файл конфигурации (.cf), который содержит необходимые объекты метаданных, справочники и регистры:

  1. Справочник.Диадок_Документы
  2. Справочник.Диадок_Настройки
  3. РегистрСведений.Диадок_СтатусыДокументов

Просто объединить конфигурации может быть недостаточно. Проанализируем ситуацию: если регламентное задание продолжает выдавать ошибку после объединения, необходимо убедиться, что подключаемый модуль (ПМ) переключен в режим работы «В составе конфигурации». Рассмотрим, где это настраивается: в настройках модуля на закладке «Подключаемый модуль» укажите способ хранения кода.

Особенности работы в серверном контексте и обычных формах

Разберем важный нюанс, связанный с версиями платформы и типом форм. В старых конфигурациях (например, Бухгалтерия предприятия 2.0) использование расширений ограничено режимом совместимости. Однако именно расширение является ключом к стабильной работе регламентных заданий. Посмотрим на статический анализ кода модуля, который проверяет режим работы:


Функция ИспользоватьПодсистемуДиадока() Экспорт
    Результат = Истина;
    ИспользоватьТиповуюПодсистему1С = ИспользоватьТиповуюПодсистему1С();
    Если ИспользоватьТиповуюПодсистему1С = Истина Тогда
        Результат = Ложь;
    КонецЕсли;
    Возврат Результат;
КонецФункции

Проанализируем этот фрагмент: если система определяет, что должна использоваться типовая подсистема 1С (ЭДО), она может блокировать функции Диадока. Также обратим внимание на проверку запуска из расширения:


Функция ИспользуетсяРасширениеКонтурДиадок()
    Результат = ОбщийКонтекст_Прочитать("ЗапускИзРасширения");
    Возврат Результат;	
КонецФункции

Если это значение Ложь, модуль может вести себя непредсказуемо в фоновом задании. Рекомендуем рассмотреть возможность повышения режима совместимости конфигурации (например, до версии 8.3.14), что позволит установить полноценное расширение от Контура. Это «пробросит» все необходимые метаданные и методы в серверный контекст без необходимости глубокой правки кода основной конфигурации.

Настройка авторизации для фонового выполнения

Поскольку регламентное задание выполняется на сервере без участия пользователя, рассмотрим вопрос авторизации. Основная сложность заключается в том, что сервер 1С должен иметь доступ к сертификату электронной подписи или сохраненным учетным данным. Разберем шаги по настройке «Технического пользователя»:

  1. Создадим в 1С отдельного пользователя (например, «Робот_Диадок»).
  2. В настройках модуля Диадок под этим пользователем выполним вход и установим флаг «Запомнить пароль».
  3. Если используется сертификат (КЭП), его необходимо установить на сервере 1С в хранилище «Локальный компьютер». Проверим права пользователя, под которым запущена служба 1С:Предприятие — у него должен быть доступ к закрытому ключу сертификата и веткам реестра криптопровайдера (например, КриптоПро CSP).

Выясним причину ошибки Метод работает только на объектах подсистемы Диадок. Она часто возникает, когда код ПМ обращается к методам основной обработки, но не может корректно инициализировать объект. Проанализируем лог: если в тексте ошибки фигурирует ВнешняяОбработка.КонтурДиадокВызовыПМ, это означает, что даже при вшитом модуле часть логики все равно пытается исполниться через механизм внешних обработок. Посмотрим на решение: убедитесь, что обработка КонтурДиадок также добавлена в состав метаданных конфигурации, а не вызывается как внешний файл .epf.

Инициализация параметров сеанса

При интерактивном запуске многие параметры инициализируются автоматически. В регламентном задании этого не происходит. Рассмотрим, как правильно подготовить сценарий в подключаемом модуле. Перед вызовом метода ПрочитатьЛентуСобытий(), необходимо убедиться, что контекст организации заполнен. Проанализируем структуру вызова:


// Пример инициализации в ПМ для регламентного задания
Процедура ЭДО_Модуль_ОбработатьНовыеСобытияДокументов(Параметры) Экспорт
    Настройки = ПолучитьНастройкиДляОрганизации(Параметры.Организация);
    Если Настройки = Неопределено Тогда
        ЗаписатьВЛог("Настройки для организации не найдены");
        Возврат;
    КонецЕсли;
    // Дальнейшая логика обработки событий
КонецПроцедуры

Рассмотрим рекомендации по стабильности: при первом запуске РЗ может попытаться обработать всю историю сообщений. Чтобы избежать таймаутов и перегрузки сервера, рекомендуем установить фильтр по дате начала обработки событий в настройках сценария генератора ПМ. Это позволит системе «подхватывать» только актуальные документы.

Диагностика и логирование

Поскольку отладка регламентных заданий затруднена, разберем методы диагностики — для контроля их работы пригодится система автоматического контроля и оповещения о сбоях в регламентных заданиях 1С. Весь код, исполняемый в фоновом задании, должен записывать критические ошибки в Журнал регистрации. Ищите события с источником «Диадок» или «Kontur.Diadoc».

Если вы столкнулись с ситуацией, когда расширение установлено, но ошибка сохраняется, проанализируем кеш сервера 1С. После массового добавления справочников и регистров через объединение конфигураций часто требуется перезапуск службы 1С:Предприятие. Это гарантирует, что серверный процесс увидит новые таблицы в базе данных.

Подведем итог: для успешного запуска регламентных заданий в Диадоке необходимо:

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

← На главную