gifts2017

Пример отбора данных из табличной части обработки (документа) с использованием компоновки

Опубликовал ediks (ediks) в раздел Программирование - Работа с интерфейсом

Пример отбора данных из табличной части обработки (документа) с использованием компоновки.

Недавно возникла задача отобрать данные из табличной части обработки по каким-либо критериям и полученную таблицу значений нужным образом обработать. Например, отобрать всех контрагентов - физиков, т.е. по Контрагент.Юр/физ.лицо = физ.лицо, свернуть эту таблицу и записать обратно в исходную. Первое, что пришло в голову - отобрать данные, используя построитель отчета. Построитель позволяет работать с внешним источником данных - в данном случае с таблицей значений. Но как выяснилось, у него есть существенное ограничение - в случае с внешним источником данных построитель не позволяет отбирать по подчиненным полям отбора.

Попробуем воспользоваться компоновкой. Создаем макет компоновки, создаем набор данных "Объект", указываем типы и запускаем обработку. Вот тут выясняется, что и компоновка данных не позволяет использовать подчиненные поля - при формировании запроса выдается сообщение "Поле Контрагент.Юр/физ.лицо не найдено". Копание на форуме 1С подсказало решение - нужно добавить еще один источник данных "Запрос" - запрос по контрагентам и объединить с набором данным "Объект" по контрагенту.

Дальше все просто - пример обработки прилагается. Кнопка "Заполнить" заполняет табличную часть данными. В качестве исходных данных был использован регистр "Взаиморасчеты с контрагентами", но можно использовать любой источник данных. Кнопка "Открыть отбор" открывает форму отбора. В форме отбора кнопка "Отобрать" заполняет таблицу значений, а кнопка "Выполнить" переносит таблицу в исходную форму.

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

Вот такое скромное исследование. Может быть кому-нибудь и пригодится.

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Пример отбора с использованием компоновки
.epf 26,97Kb
15.11.09
179
.epf 26,97Kb 179 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. rasswet (rasswet) 27.04.10 10:15
2. ediks (ediks) 27.04.10 18:14
3. rasswet (rasswet) 27.04.10 23:37
(2) ну вроде и описание и пример есть.
правда у меня на бух не взлетело. нет регистра из примера. а за 5 минут на другой не перепишу..но идея интересная.
4. ediks (ediks) 28.04.10 09:42
(3) Мне кажется, там особых сложностей нет - заменить запрос в процедуре ИнициализироватьПостроитель() модуля объекта. Например, подставить регистр бухгалтерии.
5. Elena Qivanova (Elena_Q) 10.10.11 04:53
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа