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