При разработке в среде 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией: в конфигураторе создано новое РегламентноеЗадание, оно привязано к правильному методу общего модуля, база обновлена, но в пользовательском режиме (например, в "Управлении торговлей 11.4") в списке регламентных заданий оно так и не появилось. Даже стандартный метод РегламентныеЗадания.ПолучитьРегламентныеЗадания() может не возвращать ожидаемый объект.
В этой статье мы подробно разберем причины такого поведения системы, проанализируем внутренние механизмы Библиотеки стандартных подсистем (БСП) и рассмотрим пошаговые инструкции по исправлению данной проблемы.
Разберем фундаментальное различие между метаданными и экземплярами в 1С. Когда мы создаем объект в конфигураторе, мы описываем его структуру. Однако для запуска задания системе нужен его экземпляр (конкретная запись в таблице регламентных заданий).
Если у вашего задания в конфигураторе не установлена галочка Предопределенное (Predefined), то при обновлении конфигурации базы данных система просто «узнает», что такое задание в принципе может существовать, но не создает его запись. В интерфейсе БСП (Администрирование — Обслуживание) отображаются только существующие в базе данных задания.
Рассмотрим, как это исправить:
Если вы по каким-то причинам не хотите делать задание предопределенным (например, планируете создавать его программно под разные условия), вам необходимо создать экземпляр вручную через консоль кода или внешнюю обработку:
НовоеЗадание = РегламентныеЗадания.СоздатьРегламентноеЗадание(Метаданные.РегламентныеЗадания.МоеНовоеЗадание);
НовоеЗадание.Использование = Истина;
НовоеЗадание.Записать();
Современные конфигурации, такие как УТ 11.4, ERP или КА, построены на базе БСП. Эти системы не обращаются к метаданным напрямую при каждой операции, а используют справочник ИдентификаторыОбъектовМетаданных для оптимизации прав доступа и работы интерфейсов. Если ваше задание новое, система может «не видеть» его, пока этот справочник не будет актуализирован.
Проанализируем ситуацию: вы добавили объект, но в списках выбора его нет. Скорее всего, БСП еще не зарегистрировала новый идентификатор. Рассмотрим способы принудительного обновления:
Во-первых, можно запустить 1С:Предприятие с параметром командной строки /С ОбновлениеВспомогательныхДанных. Однако, как показывает практика, это не всегда помогает мгновенно. Более надежный способ — выполнить программное обновление.
Разберем пример кода для принудительного обновления идентификаторов:
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
Эту строку кода можно выполнить через любую консоль кода или создав временную внешнюю обработку. После выполнения проверьте наличие задания в списке через «Поддержка и обслуживание».
Иногда проблема кроется в «залипшем» кэше кластера серверов 1С. Платформа кэширует информацию о регламентных заданиях для повышения производительности. Если конфигурация изменилась, а сервер продолжает использовать старые данные метаданных, новое задание в списке не появится.
Посмотрим на алгоритм очистки кэша на сервере:
1C:Enterprise 8.3 Server Agent.C:\Program Files\1cv8\srvinfo).reg_1541) и внутри неё папку конкретной информационной базы (ее UID можно посмотреть в консоли администрирования кластера).snccntx — именно здесь хранится кэш сеансовых данных и метаданных.Важно: Простая очистка пользовательского кэша (папки Local и Roaming) в данном случае помогает редко, так как список заданий формируется на стороне сервера.
Если вы добавили регламентное задание в расширении, нужно учитывать несколько критических нюансов, характерных для версий 8.3.10–8.3.20:
Во-первых, проверьте, что расширение подключено без признака Безопасный режим. В безопасном режиме выполнение некоторых серверных операций может быть ограничено, и регистрация задания может не произойти автоматически.
Во-вторых, выясним, активен ли флаг Использование в самом расширении. Часто разработчики забывают, что настройки задания в расширении могут перекрываться настройками основной конфигурации, если имена совпадают.
Если стандартный интерфейс УТ 11.4 упорно не показывает задание, выясним, существует ли оно на уровне платформы. Для этого лучше всего использовать специализированные инструменты:
РегламентноеЗадание, минуя интерфейсные надстройки БСП. Если в консоли задание есть, значит проблема исключительно в отображении внутри «Управления торговлей».Рассмотрим ситуацию: в консоли задание видно, а в списке БСП — нет. Это подтверждает теорию о том, что нужно копать в сторону справочника ИдентификаторыОбъектовМетаданных или проверять настройки прав (Rls) на этот справочник для текущего пользователя.
Подведем итог нашего анализа. Если ваше регламентное задание «потерялось», действуйте по следующему чек-листу:
Процедура Имя() Экспорт).snccntx).Следуя этим шагам, вы гарантированно сможете зарегистрировать и запустить любое регламентное задание в современных типовых конфигурациях 1С.