Имя: Пароль:
1C
1С v8
УФ. Как передать на форму данные из обработчика СписокПриПолученииДанныхНаСервере?
0 Тенепопятам
 
07.06.23
15:30
Форма списка документов. В документу поле "Сумма". Нужно в зависимости от отборов на форме и не только пересчитывать итоговую сумму, которая отображается в шапке формы. Проблема в том, что СписокПриПолученииДанныхНаСервере() выполняется на сервере без контекста, Оповестить() не подходит по этой же причине. Как обновить итоговую сумму?
1 Lite777888
 
07.06.23
15:42
Через временное хранилище.
2 timurhv
 
07.06.23
20:50
(0) Самая итоговая сумма у вас с учетом отборов уже считается?
Сумму необходимо рассчитывать при изменении отборов через обработчик ожидания.
Серверный вызов будет 1, т.к. при каждом выводе строки обработчик отключится и подключится заново без дерганья сервера (в типовых так реализовано).

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
    
    ОтключитьОбработчикОжидания("Подключаемый_ОбновитьИтоги");
    ПодключитьОбработчикОжидания("Подключаемый_ОбновитьИтоги", 0.4, Истина);
    
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьИтоги()
    
    ОбновитьИтогиНаСервере();
    
КонецПроцедуры
3 timurhv
 
07.06.23
20:53
КэшНастроекДС  - реквизит формы

&НаСервере
Процедура ОбновитьИтогиНаСервере()
    
    НастройкиДС = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных().Отбор;
    ТекущиеНастройкиДС = Строка(НастройкиДС);
    
    Если ЭтотОбъект.КэшНастроекДС <> ТекущиеНастройкиДС Тогда
        ЭтотОбъект.КэшНастроекДС = ТекущиеНастройкиДС;
        РассчитатьИтоговыеСуммыДокументовНаСервере(Элементы, Список);
    КонецЕсли;
    
КонецПроцедуры