С внедрением обязательной маркировки товаров (ИС МП) пользователи старых, но надежных конфигураций, таких как Управление торговлей 10.3, столкнулись с серьезным техническим вызовом. Современные механизмы обмена через ЭДО и ИС МП глубоко завязаны на использовании фоновых и регламентных заданий. В файловых базах, особенно работающих в режиме совместимости с платформой 8.2, эти механизмы ведут себя специфично. Разберем, почему возникает ошибка «Менеджер заданий не активен», как избавиться от зависаний системы и настроить бесперебойный прием УПД.
Проанализируем архитектуру работы регламентных заданий. В клиент-серверном варианте за выполнение заданий отвечает кластер серверов 1С. В файловом же варианте для выполнения кода в фоновом режиме требуется активный сеанс, который будет выступать в роли «исполнителя». В конфигурации УТ 10.3 по умолчанию установлен режим совместимости Версия 8.2.13.
Выясним причину: в старых режимах совместимости платформа 1С не умеет самостоятельно инициализировать менеджер заданий, если не выполнены определенные условия. Ошибка появляется тогда, когда система пытается обратиться к планировщику, но не находит выделенного сеанса или когда параметры платформы не позволяют запустить поток обработки. Если мы просто установим интервал опроса в константах, мы получим либо ошибку активации, либо «фризы» (зависания) основного интерфейса, так как программа будет пытаться выполнить обмен в основном потоке пользователя.
Рассмотрим наиболее надежный способ решения — запуск отдельного экземпляра 1С, который будет заниматься только выполнением регламентных заданий. Это позволит основному пользователю работать без зависаний, а обмену с ИС МП — выполняться по расписанию.
Для реализации этого метода нам потребуется создать специального пользователя в базе (например, с именем «Робот» или «Обмен») и настроить его автоматический запуск. Проанализируем пример bat-файла, который позволяет запустить 1С в режиме обычного приложения без лишних диалоговых окон:
@Echo off
chcp 1251 >nul
"C:\Program Files (x86)\1cv8\8.3.15.1830\bin\1cv8.exe" ENTERPRISE /F"C:\1C\Base" /N"Обмен" /P"12345" /RunModeOrdinaryApplication /DisableStartupMessages
Разберем параметры этого скрипта:
ENTERPRISE — запуск системы в режиме предприятия./F — путь к файловой базе данных./N и /P — имя пользователя и пароль соответственно./RunModeOrdinaryApplication — принудительный запуск в режиме обычного приложения (критично для УТ 10.3)./DisableStartupMessages — подавление стартовых сообщений, чтобы сеанс не «завис» на моменте обновления или оповещения.Часто пользователи жалуются, что даже при наличии фонового сеанса программа «виснет». Разберем, почему это происходит. При обмене с ЭДО или ИС МП система обращается к сертификату электронной подписи. Если в настройках криптопровайдера (например, КриптоПро CSP или VipNet CSP) не установлен флаг «Сохранить пароль» или если контейнер закрытого ключа защищен паролем, который 1С не знает, система выдаст невидимое окно запроса пароля в фоновом сеансе.
Проанализируем действия для устранения этой проблемы:
Во-первых, необходимо зайти в настройки ЭДО в 1С и убедиться, что пароль к сертификату сохранен в информационной базе.
Во-вторых, если используется КриптоПро, стоит настроить считыватель так, чтобы пароль кэшировался в системе.
Если этого не сделать, фоновый процесс будет бесконечно ждать ввода данных от пользователя, блокируя таблицу РегламентныеЗадания, что и приводит к ощущению «мертвого» зависания всей программы.
Может возникнуть соблазн изменить режим совместимости в свойствах конфигурации на Не использовать или 8.3.x. Посмотрим на последствия: УТ 10.3 — это конфигурация на обычных формах. При смене режима совместимости многие обработчики событий (например, ПриОткрытии или ПриИзменении) начинают работать иначе, что вызывает лавину ошибок в коде. Поэтому наиболее безопасный путь — оставаться на текущем режиме совместимости, но использовать внешние инструменты для управления заданиями.
Если запуск через bat-файл в качестве службы Windows (через утилиты типа NSSM) все равно выдает ошибку активации менеджера, рассмотрим альтернативный вариант. Существует внешняя обработка МенеджерРегламентныхЗаданий.epf (ее можно найти на диске ИТС).
Проанализируем алгоритм работы с ней:
В этом случае обработка сама, имитируя действия пользователя, вызывает метод ВыполнитьРегламентноеЗадание() для всех активных заданий, включая «Извлечение сообщений ЭДО» и «Обмен с ИС МП». Это гарантирует, что менеджер заданий будет «активен», так как выполнение происходит в контексте живого сеанса.
Важно помнить, что в УТ 10.3 последних релизов встроен модуль 1С-ЭДО. Рассмотрим ситуацию с разными операторами. Если вы работаете через операторов, входящих в хаб 1С (Калуга Астрал, Такском, Тензор), проблем с получением кодов маркировки обычно не возникает.
Однако, если ваш контрагент использует, например, Диадок, необходимо убедиться, что у вас настроен роуминг. В старых конфигурациях для корректной обработки кодов маркировки из роуминговых УПД иногда требуется ручное обновление Библиотеки Электронного Документооборота (БЭД), но в релизе 10.3.64 и выше базовый функционал уже адаптирован под требования законодательства.
Таким образом, для стабильной работы обмена в УТ 10.3 нам необходимо: использовать выделенный сеанс через bat-файл, обеспечить сохранение паролей сертификатов в системе и, при необходимости, использовать интерактивную обработку для принудительного запуска регламентных процедур.