Получение отображаемых записей динамического списка
Понадобилось обрабатывать текущие отображаемые документы в списке. Раньше я использовал для этого обычно выделенные строки, но документов было много, выделение строк отрабатывало бы медленно. Решено было получать текущие отображаемые данные в динамическом списке, с учетом наложенных отборов.
Нашел решение на wonderland, цитирую:
Данные динамического списка могут понадобиться вам для того, чтобы распечатать их в нестандартном, «специфическом» виде. Или для того, чтобы выполнить с ними те или иные действия. Например, послать письмо всем контрагентам, которых вы отобрали в списке по некоторым признакам.
Кроме этого существует целый ряд задач, в которых пользователь, помимо списка элементов, хочет видеть ещё и итоговые данные, связанные с этим списком. Например, отобрав товары некоторой товарной группы и некоторого поставщика, он тут же хочет увидеть общее количество таких товаров в базе.
Но оно сыровато, пришлось поработать, чтобы получилось в виде функции. Недостаток в том, что показываются только отображаемые колонки, невидимые, такие как ссылка, надо добавлять программно, чем и занимается моя функция.
Важно! Передавать в функцию нужно Элементы.Список (таблицу формы), а не Список (динамический список).
Функция ПолучитьТаблицуДинамическогоСписка(Список) Экспорт //https://wonderland.v8.1c.ru/blog/poluchenie-dannykh-dinamicheskogo-spiska/ Схема = Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных(); Попытка Настройки = Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных(); Поле = Настройки.Структура[0].Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); Поле.Использование = истина; Поле.Поле = Новый ПолеКомпоновкиДанных("Ссылка"); Поле.Заголовок = "Ссылка"; Исключение ВызватьИсключение "Невозможно получить списки из текущего списка, возможно включены группировки: " + ОписаниеОшибки(); КонецПопытки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных(); //https://forum.mista.ru/topic/759927 МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"),Истина); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТЗ = Новый ТаблицаЗначений; ПроцессорВывода.НачатьВывод(); ПроцессорВывода.УстановитьОбъект(ТЗ); ТЗ = ПроцессорВывода.Вывести(ПроцессорКомпоновки); Возврат ТЗ; КонецФункции

Среда: БП 3.0.187.20. 1С 8.3.27.1688



Свежие комментарии