Имя: Пароль:
1C
 
Обновление формы фоновым заданием
0 Max57
 
05.04.24
11:56
Всем привет. Есть расширение, в нем обработка с формой, которая выводится на начальной странице. На форме есть кнопка обновить. Подскажите, пожалуйста, как сделать, чтобы пользователю не надо было нажимать на кнопку обновить, а данные обновлялись фоновым заданием?
1 Климов Сергей
 
05.04.24
12:17
ПодключитьОбработчикОжидания() вам в помощь.
В обработчике пытаться получить результат выполнения фонового задания и обновлять форму.
2 Max57
 
05.04.24
12:28
(1) Я не совсем верно описал, мне нужно, чтобы форма периодически обновлялась, там табличное поле(ТЗ). Заполняется  при открытии формы и нажатии на кнопку обновить. Мне нужно сделать, чтобы в модуле формы периодически выполнялась процедура, которая заполняет табличное поле.
3 Климов Сергей
 
05.04.24
12:30
(2) Ну тогда в обработчике перезаполняйте ТЗ.
4 Max57
 
05.04.24
12:36
Вот код модуля формы обработки. Получается, что я могу в процедуру при открытии добавить обработчик?
&НаКлиенте
Процедура РасчитатьДниПроизводства(Команда)
    
    РасчитатьДниПроизводстваНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура РасчитатьДниПроизводстваНаСервере()
    
    ДниПроизводства.Очистить();    
    
    ТЧРезультат = Обработки.ОбработкаПодсчетаДнейПроизводства.РасчитатьДниПроизводства();
    
    Для Каждого СтрокаТЧ ИЗ ТЧРезультат Цикл
        Строка = ДниПроизводства.Добавить();
        Строка.НоменклатурнаяГруппа = СтрокаТЧ.НоменклатурнаяГруппа;
        Строка.СрокПроизводства = Окр(СтрокаТЧ.CрокПроизводства);
        Строка.СредняяПроизводительность = Формат(СтрокаТЧ.СредняяПроизводительность, "ЧДЦ=2");
        Строка.КоэффициентПогрешности = Формат(СтрокаТЧ.КоэффициентПогрешности, "ЧДЦ=2");
        Строка.КоличествоНаСкладе = Формат(СтрокаТЧ.КоличествоНаСкладе, "ЧДЦ=2");
        Строка.КоличествоПоЗаказамКлиентаНезакрытым = Формат(СтрокаТЧ.КоличествоПоНезакрытымЗаказам, "ЧДЦ=2");
        Строка.НеобходимоПроизвести = Формат(СтрокаТЧ.НеобходимоПроизвести, "ЧДЦ=2");
    КонецЦикла;  
    
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    РасчитатьДниПроизводстваНаСервере();
КонецПроцедуры

&НаКлиенте
Процедура ОбъектРасшСокрПриИзменении(Элемент)
    Если Объект.РасшСокр Тогда
        Элементы.ДниПроизводстваСредняяПроизводительность.Видимость = Истина;
        Элементы.ДниПроизводстваКоэффициентПогрешности.Видимость = Истина;
        Элементы.ДниПроизводстваКоличествоНаСкладе.Видимость = Истина;
        Элементы.ДниПроизводстваКоличествоПоЗаказамКлиентаНезакрытым.Видимость = Истина;
        Элементы.ДниПроизводстваНеобходимоПроизвести.Видимость = Истина;
    Иначе
        Элементы.ДниПроизводстваСредняяПроизводительность.Видимость = Ложь;
        Элементы.ДниПроизводстваКоэффициентПогрешности.Видимость = Ложь;
        Элементы.ДниПроизводстваКоличествоНаСкладе.Видимость = Ложь;
        Элементы.ДниПроизводстваКоличествоПоЗаказамКлиентаНезакрытым.Видимость = Ложь;
        Элементы.ДниПроизводстваНеобходимоПроизвести.Видимость = Ложь;    
    КонецЕсли;
КонецПроцедуры
5 Max57
 
05.04.24
12:40
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("РасчитатьДниПроизводстваНаСервере", 3600); // Например, так
КонецПроцедуры
6 Max57
 
05.04.24
12:44
(3) спасибо
7 Климов Сергей
 
05.04.24
13:01
Пожалуйста!
8 Max57
 
05.04.24
13:11
(5) В первом параметре должна быть процедура без параметров и  на клиенте
9 Мультук
 
05.04.24
13:29
(8)

&НаКлиенте
Процедура РасчитатьДниПроизводства_БезПараметров()

  РасчитатьДниПроизводства(неопределено);

КонецПроцедуры


ПодключитьОбработчикОжидания("РасчитатьДниПроизводства_БезПараметров", 3600); // Например, так


P.S.
1) Рассчитать
2) Почему бы не создать колонки в "ДниПроизводства" сразу нужного типа и далее

&НаСервере
Процедура РасчитатьДниПроизводстваНаСервере()
    
     тз = Обработки.ОбработкаПодсчетаДнейПроизводства.РасчитатьДниПроизводства();

    ДниПроизводства.Загрузить(тз);    

КонецПроцедуры
10 Max57
 
05.04.24
13:41
(9) Спасибо
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший