При разработке или поддержке легковесных конфигураций на платформе 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда использование мощной Библиотеки стандартных подсистем (БСП) избыточно или невозможно. Одной из критически важных функций при этом остается управление регламентными и фоновыми заданиями. Стандартная консоль, поставляемая на дисках ИТС, часто рассчитана на обычные формы, а поиск версии для управляемого интерфейса без зависимостей от БСП может стать проблемой.
В этой статье мы подробно разберем, где взять готовую консоль, как использовать инструменты самой платформы и как написать минималистичную, но рабочую версию консоли своими руками.
Рассмотрим первый и самый надежный способ получения легального инструмента. Фирма «1С» в составе дистрибутивов технологической платформы поставляет демонстрационную конфигурацию «Управляемое приложение». Это «чистый» пример реализации интерфейса на управляемых формах без БСП.
Разберем по шагам, как получить из нее консоль:
AppData\Roaming\1C\1cv8\tmpls\...) базу «Управляемое приложение».КонсольЗаданий.Эта обработка написана максимально универсально. Мы можем запустить ее в любой базе 8.3. Она позволяет просматривать список заданий, менять расписание, включать/выключать их и просматривать состояние выполнения.
Проанализируем альтернативные решения, которые часто упоминаются в сообществе разработчиков. Если стандартного функционала недостаточно, стоит обратить внимание на специализированные наборы инструментов.
Инструменты разработчика (IR) от Сергея Старых. Это, пожалуй, самый мощный комплекс. В его составе есть консоль заданий, которая обладает следующими преимуществами:
Также существуют решения на портале Infostart. При поиске следует обращать внимание на те обработки, в описании которых явно указано: «не требует БСП» или «написано на чистом коде». Такие инструменты используют только методы встроенного языка 1С и не обращаются к общим модулям библиотек.
Выясним, как быстро написать свою консоль, если под рукой нет интернета или готовых файлов. Платформа 1С предоставляет мощные менеджеры для управления заданиями. Основная логика работы будет строиться вокруг объекта РегламентныеЗадания.
Разберем пример кода для получения списка заданий на сервере. Создадим форму обработки, добавим таблицу значений СписокЗаданий и заполним ее:
&НаСервере
Процедура ОбновитьСписокЗаданийНаСервере()
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Наименование");
ТЗ.Колонки.Добавить("Использование", Новый ОписаниеТипов("Булево"));
ТЗ.Колонки.Добавить("Состояние");
ТЗ.Колонки.Добавить("UUID");
// Получаем все регламентные задания из базы
Задания = РегламентныеЗадания.ПолучитьРегламентныеЗадания();
Для Каждого Задание Из Задания Цикл
НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Наименование = Задание.Метаданные.Синоним;
НоваяСтрока.Использование = Задание.Использование;
НоваяСтрока.Состояние = Задание.ПоследнееЗадание.Состояние;
НоваяСтрока.UUID = Задание.УникальныйИдентификатор;
КонецЦикла;
ЗначениеВРеквизитФормы(ТЗ, "СписокЗаданий");
КонецПроцедуры
Для управления расписанием мы можем использовать стандартный диалог платформы. Рассмотрим, как вызвать форму редактирования расписания для конкретного задания:
&НаКлиенте
Процедура РедактироватьРасписание(Команда)
ТекущиеДанные = Элементы.СписокЗаданий.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
// Получаем текущее расписание с сервера
Расписание = ПолучитьРасписаниеНаСервере(ТекущиеДанные.UUID);
Диалог = Новый ДиалогРасписанияРегламентногоЗадания(Расписание);
Если Диалог.ОткрытьМодально() Тогда
УстановитьРасписаниеНаСервере(ТекущиеДанные.UUID, Диалог.Расписание);
КонецЕсли;
КонецПроцедуры
Проанализируем важные отличия, которые необходимо учитывать при работе в конфигурациях без библиотек:
ЖурналРегистрации с отбором по ИмяПриложения (BackgroundJob) и метаданным, чтобы увидеть причины падения заданий.ВыполнитьОбработкуЗаданий(), либо настроить параметр AllowExecuteScheduledJobs в строке соединения.РегламентныеЗадания требует административных прав. При запуске под пользователем с ограниченными правами методы ПолучитьРегламентныеЗадания() вызовут исключение.Подведем итог: Самый быстрый путь для получения консоли на управляемых формах — извлечение ее из демо-конфигурации «Управляемое приложение». Если же требуется глубокая диагностика, лучшим выбором станут «Инструменты разработчика» Сергея Старых. А для понимания внутренней механики платформы полезно реализовать простейшую форму управления через менеджер РегламентныеЗадания самостоятельно.