Дополнительные колонки с периодическими данными в динамическом списке
Обычные формы;
Например, поставлена задача, чтобы в форме списка справочника "Номенклатура" присутствовала колонка "Остаток", отображающая остаток каждой номенклатуры на текущую дату. Для упрощения примера остатки у нас будут хранится в регистре накопления только с одним измерением "Номенклатура" и с 1 ресурсом "Количество".
Решение.
В форме списка справочника "Номенклатура" добавляем колонку с названием "Остаток". В событии табличного поля справочника списка ПриПолученииДанных прописываем следующий код:
Процедура СправочникСписокПриПолученииДанных(Элемент, ОформленияСтрок)
СоответствиеНоменклатуры = Новый Соответствие;
ОтображаемыеТовары = Новый Массив;
// заполняем массив и соответствие только теми строками, которые отображаются на текущий момент, при этом отсеиваем строки с группами номенклатуры
Для Каждого ОформлениеСтроки Из ОформленияСтрок Цикл
Если ОформлениеСтроки.ДанныеСтроки.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
Товар = ОформлениеСтроки.ДанныеСтроки.Ссылка;
ОтображаемыеТовары.Добавить(Товар);
СоответствиеНоменклатуры.Вставить(Товар, ОформлениеСтроки);
КонецЦикла;
// получаем из регистра остатки на текущую дату для товаров из соответствия и заполняем ими колонку "Остаток"
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|ОстаткиТМЦОстатки.Номенклатура,
|ОстаткиТМЦОстатки.КоличествоОстаток
|ИЗ
|РегистрНакопления.ОстаткиТМЦ.Остатки(&ТекДата, Номенклатура В (&Номенклатура)) КАК ОстаткиТМЦОстатки";
Запрос.УстановитьПараметр("Номенклатура", ОтображаемыеТовары);
Запрос.УстановитьПараметр("ТекДата",ТекущаяДата());
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаДляОформления = СоответствиеНоменклатуры.Получить(Выборка.Номенклатура);
СтрокаДляОформления.Ячейки.Остаток.Значение = Выборка.КоличествоОстаток;
КонецЦикла;
КонецПроцедуры