По теме из базы знаний
Найденные решения
&НаКлиенте
Процедура Построить6(Команда)
// Вставить содержимое обработчика.
объект.СчетчикЧ=0;
объект.ДГанта.Очистить();
ПодключитьОбработчикОжидания("Ожидалка",2);
УИД = Построить6НаСервере(); ///УИД - реквизит формы например, (произвольный\уникальный идентификатор)
КонецПроцедуры
&НаКлиенте
Процедура Ожидалка() Экспорт
//Элементы.Декорация1.Заголовок=Строка(ТекущаяДата());
//состояние(ТекущаяДата());
// некие действия
РезультатФЗ = ПроверитьФоновыеЗаданияНаСервере(УИД);
Если РезультатФЗ.Выполнено Тогда
Сообщить("Выполнено успешно");
ЗначениеВреквизитФормы(массивПараметров[2],"Объект");
объект.ДГанта=ЗначениеИзФайла("\\srv-250.grp.local\1csrv250obmen\dgant.dg");
//дг=массивПараметров[1];
ОтключитьОбработчикОжидания("Ожидалка");
ИначеЕсли РезультатФЗ.Выполняется Тогда
// вывести состояние
ИначеЕсли ЗначениеЗаполнено(РезультатФЗ.ТекстОшибки) Тогда
Сообщить("Возникла ошибка: " + РезультатФЗ.ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьФоновыеЗаданияНаСервере(ИДЗадания)
/// Проверка статуса фонового задания
РезультатПроверкиФЗ = новый Структура;
РезультатПроверкиФЗ.Вставить("Выполнено",Ложь);
РезультатПроверкиФЗ.Вставить("Выполняется",Истина);
РезультатПроверкиФЗ.Вставить("ТекстОшибки","");
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИДЗадания);
Если ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
РезультатПроверкиФЗ.Выполнено = Истина;
РезультатПроверкиФЗ.Выполняется = Ложь;
ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
РезультатПроверкиФЗ.Выполняется = Ложь;
РезультатПроверкиФЗ.ТекстОшибки = КраткоеПредставлениеОшибки(ФоновоеЗадание.ИнформацияОбОшибке);
ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
РезультатПроверкиФЗ.Выполняется = Ложь;
КонецЕсли;
Возврат РезультатПроверкиФЗ;
КонецФункции
&НаСервере
Функция Построить6НаСервере()
об= РеквизитФормыВЗначение("Объект");
//об.ПостроениеДГ();
//дг2=реквизитФормыВзначение("Объект.Дганта");
АдресХранилища = ПоместитьВоВременноеХранилище(
Новый Структура("Инд,КоличествоОбходов",0,1),ЭтаФорма.УникальныйИдентификатор);
ДГ1=новый ДиаграммаГанта;
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(об.Проект);
МассивПараметров.Добавить(об.ДГанта);
МассивПараметров.Добавить(об);
ключ="ПостроениеДиаграммыГанта";
ФЗ = ФоновыеЗадания.Выполнить("Диаграмма.ПостроениеДГ",МассивПараметров,ключ);
Возврат ФЗ.УникальныйИдентификатор;
КонецФункции
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
&НаКлиенте
Процедура Построить6(Команда)
// Вставить содержимое обработчика.
объект.СчетчикЧ=0;
объект.ДГанта.Очистить();
ПодключитьОбработчикОжидания("Ожидалка",2);
Построить6НаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Ожидалка() Экспорт
Элементы.Декорация1.Заголовок=Строка(ТекущаяДата());
состояние(ТекущаяДата());
// некие действия
КонецПроцедуры
&НаСервере
Процедура Построить6НаСервере()
об= РеквизитФормыВЗначение("Объект");
//об.ПостроениеДГ();
//дг2=реквизитФормыВзначение("Объект.Дганта");
АдресХранилища = ПоместитьВоВременноеХранилище(
Новый Структура("Инд,КоличествоОбходов",0,1),ЭтаФорма.УникальныйИдентификатор);
ДГ1=новый ДиаграммаГанта;
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(об.Проект);
МассивПараметров.Добавить(об.ДГанта);
МассивПараметров.Добавить(об);
ключ="ПостроениеДиаграммыГанта";
ФЗ = ФоновыеЗадания.Выполнить("Диаграмма.ПостроениеДГ",МассивПараметров,ключ);
//Диаграмма.ПостроениеДГ(об.Проект,об.ДГанта,об);
//
ФЗ = ФЗ.ОжидатьЗавершенияВыполнения();
//анализируем состояние фонового задания
Если ФЗ.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
Сообщить("Выполнено успешно");
ЗначениеВреквизитФормы(массивПараметров[2],"Объект");
объект.ДГанта=ЗначениеИзФайла("\\srv-250.grp.local\1csrv250obmen\dgant.dg");
//дг=массивПараметров[1];
иначеесли
ФЗ.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
Сообщить("Ошибка при выполнении " + ФЗ.ИнформацияОбОшибке.Описание);
ИначеЕсли ФЗ.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
Сообщить("Задание отменено");
КонецЕсли;
//
конецПроцедуры
Собственно, всё работает, кроме того, что песочные часы висят, пока не завершится фоновая процедура. А обработчик ожидания, который в данном случае дату-время, хотя бы, должен выводить во время работы фоновой процедуры. Но обработчик на форме работает ТОЛЬКО после завершения фоновой процедуры
&НаКлиенте
Процедура Построить6(Команда)
// Вставить содержимое обработчика.
объект.СчетчикЧ=0;
объект.ДГанта.Очистить();
ПодключитьОбработчикОжидания("Ожидалка",2);
Построить6НаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Ожидалка() Экспорт
Элементы.Декорация1.Заголовок=Строка(ТекущаяДата());
состояние(ТекущаяДата());
// некие действия
КонецПроцедуры
&НаСервере
Процедура Построить6НаСервере()
об= РеквизитФормыВЗначение("Объект");
//об.ПостроениеДГ();
//дг2=реквизитФормыВзначение("Объект.Дганта");
АдресХранилища = ПоместитьВоВременноеХранилище(
Новый Структура("Инд,КоличествоОбходов",0,1),ЭтаФорма.УникальныйИдентификатор);
ДГ1=новый ДиаграммаГанта;
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(об.Проект);
МассивПараметров.Добавить(об.ДГанта);
МассивПараметров.Добавить(об);
ключ="ПостроениеДиаграммыГанта";
ФЗ = ФоновыеЗадания.Выполнить("Диаграмма.ПостроениеДГ",МассивПараметров,ключ);
//Диаграмма.ПостроениеДГ(об.Проект,об.ДГанта,об);
//
ФЗ = ФЗ.ОжидатьЗавершенияВыполнения();
//анализируем состояние фонового задания
Если ФЗ.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
Сообщить("Выполнено успешно");
ЗначениеВреквизитФормы(массивПараметров[2],"Объект");
объект.ДГанта=ЗначениеИзФайла("\\srv-250.grp.local\1csrv250obmen\dgant.dg");
//дг=массивПараметров[1];
иначеесли
ФЗ.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
Сообщить("Ошибка при выполнении " + ФЗ.ИнформацияОбОшибке.Описание);
ИначеЕсли ФЗ.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
Сообщить("Задание отменено");
КонецЕсли;
//
конецПроцедуры
Собственно, всё работает, кроме того, что песочные часы висят, пока не завершится фоновая процедура. А обработчик ожидания, который в данном случае дату-время, хотя бы, должен выводить во время работы фоновой процедуры. Но обработчик на форме работает ТОЛЬКО после завершения фоновой процедуры
&НаКлиенте
Процедура Построить6(Команда)
// Вставить содержимое обработчика.
объект.СчетчикЧ=0;
объект.ДГанта.Очистить();
ПодключитьОбработчикОжидания("Ожидалка",2);
УИД = Построить6НаСервере(); ///УИД - реквизит формы например, (произвольный\уникальный идентификатор)
КонецПроцедуры
&НаКлиенте
Процедура Ожидалка() Экспорт
//Элементы.Декорация1.Заголовок=Строка(ТекущаяДата());
//состояние(ТекущаяДата());
// некие действия
РезультатФЗ = ПроверитьФоновыеЗаданияНаСервере(УИД);
Если РезультатФЗ.Выполнено Тогда
Сообщить("Выполнено успешно");
ЗначениеВреквизитФормы(массивПараметров[2],"Объект");
объект.ДГанта=ЗначениеИзФайла("\\srv-250.grp.local\1csrv250obmen\dgant.dg");
//дг=массивПараметров[1];
ОтключитьОбработчикОжидания("Ожидалка");
ИначеЕсли РезультатФЗ.Выполняется Тогда
// вывести состояние
ИначеЕсли ЗначениеЗаполнено(РезультатФЗ.ТекстОшибки) Тогда
Сообщить("Возникла ошибка: " + РезультатФЗ.ТекстОшибки);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьФоновыеЗаданияНаСервере(ИДЗадания)
/// Проверка статуса фонового задания
РезультатПроверкиФЗ = новый Структура;
РезультатПроверкиФЗ.Вставить("Выполнено",Ложь);
РезультатПроверкиФЗ.Вставить("Выполняется",Истина);
РезультатПроверкиФЗ.Вставить("ТекстОшибки","");
ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИДЗадания);
Если ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Завершено Тогда
РезультатПроверкиФЗ.Выполнено = Истина;
РезультатПроверкиФЗ.Выполняется = Ложь;
ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда
РезультатПроверкиФЗ.Выполняется = Ложь;
РезультатПроверкиФЗ.ТекстОшибки = КраткоеПредставлениеОшибки(ФоновоеЗадание.ИнформацияОбОшибке);
ИначеЕсли ФоновоеЗадание.Состояние = СостояниеФоновогоЗадания.Отменено Тогда
РезультатПроверкиФЗ.Выполняется = Ложь;
КонецЕсли;
Возврат РезультатПроверкиФЗ;
КонецФункции
&НаСервере
Функция Построить6НаСервере()
об= РеквизитФормыВЗначение("Объект");
//об.ПостроениеДГ();
//дг2=реквизитФормыВзначение("Объект.Дганта");
АдресХранилища = ПоместитьВоВременноеХранилище(
Новый Структура("Инд,КоличествоОбходов",0,1),ЭтаФорма.УникальныйИдентификатор);
ДГ1=новый ДиаграммаГанта;
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(об.Проект);
МассивПараметров.Добавить(об.ДГанта);
МассивПараметров.Добавить(об);
ключ="ПостроениеДиаграммыГанта";
ФЗ = ФоновыеЗадания.Выполнить("Диаграмма.ПостроениеДГ",МассивПараметров,ключ);
Возврат ФЗ.УникальныйИдентификатор;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот