Регламентные задания » История » Версия 2
    « Предыдущее - 
    Версия 2/4
    (Разница(diff)) - 
    Следующее » - 
    Текущая версия
    
    Всеволод Дорофеев, 02.03.2021 00:20 
    
    
Регламентные фоновые задания¶
Добавление расписания.¶
Если указать Предопределенное - автоматически добавится на вкладку "Регламентные задания" основной формы обработки РегламентныеИФоновыеЗадания.
Или добавить в ручном режиме - Ins.
Пример отображения прогресса фонового задания¶
https://infostart.ru/public/119601/
Процедура ФоновоеЧтениеJSON(ИмяФайла) Экспорт 
   Ст = 0;
   JS = Новый ЧтениеJSON;
   Сообщить("Начало, открываем файл");
   JS.ОткрытьФайл(ИмяФайла);
   Сообщить("Файл открыт");
   Пока JS.Прочитать() Цикл
      Ст = ст + 1;
      Если Ст%100 = 0 Тогда 
         Сообщить("" + ст);
      КонецЕсли;
   КонецЦикла;
   Сообщить("окончание, закрываем файл");
   JS.Закрыть();
КонецПроцедуры
&НаСервере
Процедура ПрочитатьНаСервере()
   // Вставить содержимое обработчика.
   МассивПараметров = Новый Массив;
   МассивПараметров.Добавить(Путь);
   ФЗ = ФоновыеЗадания.Выполнить("МойМодуль.ФоновоеЧтениеJSON", МассивПараметров, , "Читам файл JSON");
   ГУИДФЗ = ФЗ.УникальныйИдентификатор;
КонецПроцедуры
&НаКлиенте
Процедура Прочитать(Команда)
   ПрочитатьНаСервере();
   ПодключитьОбработчикОжидания("Обождание", 1, Ложь);
   Состояние("Подключен обработчик");
КонецПроцедуры
&НаКлиенте
Процедура Обождание()
   Если ПолучитьДанныеФЗ() = Неопределено Тогда 
      ОтключитьОбработчикОжидания("Обождание");
      Состояние("Отключен обработчик");
   КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьДанныеФЗ()
   ФЗ = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ГУИДФЗ);
   Если ФЗ = Неопределено ИЛИ НЕ ФЗ.Состояние = СостояниеФоновогоЗадания.Активно Тогда 
      Сообщить("Состояние ФЗ: " + ФЗ.Состояние);
      Возврат Неопределено
   Иначе
      Для Каждого Ст ИЗ ФЗ.ПолучитьСообщенияПользователю(Истина) Цикл 
         ПрочитаноСтрок = ст.текст;
      КонецЦикла;
      Возврат 0
   КонецЕсли;
КонецФункции
Путь = "/home/sergey/Документы/100mb.json";