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