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