27.04.2018

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Транзакция не активна «1С:Предприятие»

  Давайте рассмотрим как правильно организовать работу с транзакциями в 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.