Событие обновления динамического списка.

1. Кадош 07.09.18 12:51 Сейчас в теме
Добрый день.
Необходимо получать итог по колонке динамического списка. Пользователь использует отборы и поиск.
Какое событие будет отражать изменение динамического списка?
Сейчас использую обработчик ожидания.

Код итогов ДС
guevara74; +1 Ответить
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
10. ben19791010 10.09.18 04:45 Сейчас в теме
(1)
Пользователь использует отборы и поиск

безобидней сделать кнопку итог наверное
11. ben19791010 10.09.18 05:04 Сейчас в теме
(1) еще можно глянуть в конфигурации БП 3.0 Журналдокументов-Деньги форму БанковскиеВыписки и как там реализовано суммирование итогов НаДату по выбранному р.счету
12. ben19791010 10.09.18 05:07 Сейчас в теме
(1)
Сейчас использую обработчик ожидания

это я к тому что может и не нужно ломать стереотипы )

&НаКлиенте
Процедура ОтборБанковскийСчетПриИзменении(Элемент)
	
	ОтборБанковскийСчетИспользование = ЗначениеЗаполнено(ОтборБанковскийСчет);
	ОтборБанковскийСчетПриИзмененииСервер();
	
	ПересчитатьИтоги();
	
КонецПроцедуры


&НаКлиенте
Процедура ПересчитатьИтоги()
	
	// Вызовет пересчет итогов
	ТекДанные = Элементы.Список.ТекущиеДанные;
	
	Если ТекДанные = Неопределено Тогда
		Если ИтогиВключены Тогда
			ВсегдаОбновлять = Ложь;
			ПодключитьОбработчикОжидания("Подключаемый_ОбновитьИтогиОбработчик", 0.2, Истина);
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры
Показать
13. kasper076 109 27.09.19 17:34 Сейчас в теме
15. travacula 02.09.22 12:22 Сейчас в теме
(1)При получении данных записываем флаг изменения в настройку

&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
    ХранилищеСистемныхНастроек.Сохранить("Документ.ФормаСписка", "Изменение", Истина); 
КонецПроцедуры


При активизации строки считываем флаг изменения, выполняем необходимые действия, затем сбрасываем флаг. Можно дополнительно настроить ПодключитьОбработчикОжидания() для формы

Процедура СписокПриАктивизацииСтроки(Элемент)

	Изменение = ВосстановитьЗначениеСервер("Документ.ФормаСписка", "Изменение"); 
	Если Изменение Тогда
		
       // Необходимые вычисления, например получаем количество записей 
       //в динамическом списке и подставляем его в итоги
		
		ПоместитьВХранилище("Документ.ФормаСписка", "Изменение", Ложь);
	КонецЕсли;

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


&НаСервере
Процедура ПоместитьВХранилище(ИмяОбъект, ИмяПараметр, Значение)
	
	 ХранилищеСистемныхНастроек.Сохранить(ИмяОбъект, ИмяПараметр, Значение); 
	 
КонецПроцедуры
Показать
2. t.v.s. 113 07.09.18 14:07 Сейчас в теме
Динамический список подгружает данные порциями, стороить по этим данным итоги методологически неправильно. Используйте для этих целей отдельный запрос
Hobbit_Jedi; al0shka; +2 Ответить
4. Кадош 07.09.18 14:15 Сейчас в теме
3. Timur.V 79 07.09.18 14:09 Сейчас в теме
6. Кадош 07.09.18 14:17 Сейчас в теме
(3) Я видел эти костыли. Они актуальны были до появления методов указанных в моем вышеприведенным коде.
7. Timur.V 79 07.09.18 14:22 Сейчас в теме
(6)
Описание на сайте 1с - ссылка
//Доступно с релиза 8.3.6.1977 

СхемаКомпоновкиДанных = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
    НастройкиКомпоновкиДанных = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных
                                                  ,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
    
    ТаблицаЗначений = Новый ТаблицаЗначений;
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    ИтоговаяСумма = ТаблицаЗначений.Итог("СуммаДокумента");
Показать
8. Кадош 07.09.18 14:26 Сейчас в теме
(7) вы код из шапки читали? Именно так я и получаю данные.
Вопрос в том, в какое событие поместить этот код, чтобы при любом изменении динамического списка он отработал.
9. Timur.V 79 07.09.18 14:30 Сейчас в теме
(8)
Может так - ссылка.
Отлов события "Обновление динамического списка". Проблема и решение.
5. Timur.V 79 07.09.18 14:16 Сейчас в теме
Возможно, вы таки и делаете как описано в этой статье.
14. frkbvfnjh 799 26.08.21 08:31 Сейчас в теме
Разрабы платформы законченные люди - мало того что не дали нормального механизма получения итогов, так еще и событие обновления динамического списка не сделали. Я так понимаю решение так и не найдено?
user1270109; +1 Ответить
16. 0xFFFFFF 29.09.22 15:03 Сейчас в теме
Не дали, потому что динамический список это тебе не таблица значений.
Итоги могут поменяться в момент прокрутки (один скроллит, другой добавляет запись). На то он и динамический.
А запрашивать итоги в момент скроллинга по всей таблице, да еще и с наложенными отборами - это не комильфо. Совершенно.
Текущий итог можешь получить сам, используя СКД, на который натягивается запрос динамического списка с установленными отборами.
И да, прежде чем обвинять разрабов, изучи лучше детальнее что к чему.
shaykhelov; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот