27.04.2018

Запуск фонового задания в 1С

Автор: Белозерских Евгений

Фоновые задания в «1С»

   Фоновые задания в «1С» могут запускаться автоматически по расписанию (т.е. являться экземплярами регламентных заданий), или разработчик сам может инициировать запуск фонового задания для выполнения произвольного алгоритма (яркий пример формирование отчетов в фоне).
   ВАЖНО!!! Для файловых баз, начиная с версии платформы 8.3.3.641, не требуется запуск отдельного сеанса, в котором будут выполняться фоновые задания. Т.е. раньше в файловых базах для запуска фоновых заданий требовалось выполнять метод глобального контекста «ВыполнитьОбработкуЗаданий()». Подробности по этой ссылке.

Процедура запуска произвольного алгоритма в фоновом задании

   Для запуска нашего алгоритма в отдельном фоновом задании, мы будем использовать метод «Выполнить()» менеджера фоновых заданий:
Синтаксис:
Выполнить(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>)
  • <ИмяМетода> (обязательный); Тип: Строка
      Имя экспортируемой процедуры или функции неглобального общего модуля, который может быть выполнен на сервере, в форме ИмяМодуля.ИмяМетода.
  • <Параметры> (необязательный); Тип: Массив
      Массив параметров, передаваемых в метод. Количество и типы параметров должны соответствовать параметрам метода. (подробнее в Синтакс-помощнике)
  • <Ключ> (необязательный); Тип: Строка
      Если ключ задан, то он должен быть уникальным среди ключей активных фоновых заданий, имеющих такое же имя метода, что и у данного фонового задания.
  • <Наименование> (необязательный); Тип: Строка.
      Описание задания.

Процедура выполнения фонового задания

  В нашем случае мы будем использовать экспортную процедуру расположенную в общем модуле «ОбщийМодульСервер» (думаю излишне пояснять что модуль должен быть серверным)
Процедура ЗаписатьИнформациюОТоварахВФоне(ПараметрФоновогоЗадания) Экспорт
	
	ЗапросДанных	= Новый Запрос(
		"ВЫБРАТЬ
       |	Товары.Ссылка КАК Номенклатура
       |ИЗ
       |	Справочник.Номенклатура КАК Товары"
	);
	
	Выборка	= ЗапросДанных.Выполнить().Выбрать();
	
	Пока Выборка.Следующий() Цикл 
		МЗ	= РегистрыСведений.ДанныеОТоварах.СоздатьМенеджерЗаписи();
		
		МЗ.Период		= ТекущаяДата();
		МЗ.Номенклатура	= Выборка.Номенклатура;
		МЗ.Информация	= ПараметрФоновогоЗадания;
		
		МЗ.Записать();
	КонецЦикла;
	
КонецПроцедуры
  В целях демонстрации работы фонового задания, мы будем формировать записи в нашем регистре сведений, для каждой номенклатуры, при этом параметр будет передаваться из формы в которой происходит запуск фонового задания.

Команда запуска фонового задания

  Параметр который будем передавать в процедуру выполнения, будем брать из реквизита управляемой формы (реквизит с типом «Строка»):

Управляемая форма «1С», для запуска фонового задания
  Код модуля управляемой формы будет выглядеть следующим образом:
&НаКлиенте
Процедура ЗапускФоновогоЗадания(Команда)
	ЗапускФоновогоЗаданияНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗапускФоновогоЗаданияНаСервере()
	
	// Формируем массив с параметрами
	ПараметрыЗадания	= Новый Массив;
	ПараметрыЗадания.Добавить(ПараметрЗадания);
	
	// Запускаем фоновое выполнение алгоритма
	ФоновыеЗадания.Выполнить(
		// Наш экспортный метод в общем модуле
		"ОбщийМодульСервер.ЗаписатьИнформациюОТоварахВФоне",
		// Передаем массив с параметрами
		ПараметрыЗадания,
		// Указываем ключ задания
		Новый УникальныйИдентификатор,
		// Указываем наименование фонового задания
		"Наше фоновое задание"
	);
КонецПроцедуры

Результат выполнения

   В результате выполнения фонового задания, будут сформированы записи в регистре сведений (что нам и требовалось).

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


Другие статьи

Переопределение (подмена) формы при открытии

    Предлагаю рассмотреть пример того, как можно переопределить (подменить) открываемую форму на другую (произвольную)

Функциональные опции 1С 8.3 (Механизм, использование)

    Рассмотрим механизмы, назначение и применение функциональных опций в платформе "1С:Предприятие" 8.3. Для этого возьмем простую конфигурацию и проверим поведение системы при использовании функциональных опций.

Общие реквизиты 1С 8.3

Общий реквизит – это реквизит, добавляемый к нескольким объектам конфигурации. Так же общий реквизит может использоваться как составная часть специального механизма разделения данных
 

Выбор файла 1С 8.3

Диалог выбора файла и отказ от модальности в 1С 8.3

Получение данных динамического списка 1С 8.3

      Динамический список обеспечивает быстрый просмотр больших объёмов данных. Но получить дополнительную информацию, например количество строк в списке, напрямую мы не можем.
      Давайте рассмотрим то, как это можно сделать. Например получить таблицу значений по данным динамического списка

Установка отбора в динамическом списке (1C 8.2, 8.3)

Рассмотрим пример программной установки отборов в динамических списках 1С

Представление объектов (ссылок) в 1С

Пара слов о том, как можно изменить получаемое представление объекта (ссылки) в 1С

Работаем с регистрами сведений

Разберем структуру таблиц регистров сведений в СУБД, механизмы предоставляемые платформой для операций чтения, записи и удаления записей периодических и непериодических регистров сведений, а также регистров подчиненных регистратору.

Версия 8.3.7 и приятные новшества

Приветствую! В данном обзоре предлагаю рассмотреть некоторые новшества в механизмах платформы 1С:Предприятие версии 8.3.7.