Имя: Пароль:
1C
1С v8
Компоновщик настроек и построитель запроса
0 Iakovlev
 
30.04.15
11:02
Перевожу отчет с обычной формы на управляемую.

Для формирования отчета используется построитель отчета, который формирует отчет в соответствии с настройками, задающимися в таблице на форме через этот же построитель.

В управляемой форме для настроек я использую схему компоновки данных и компоновщик настроек, но проблема в том, что изначально (на обычной форме) весь отчет по сути формируется программно через работу с результатом построителя отчета(тип "РезультатЗапроса"), а на управляемых формах ипользовать построитель отчета нельзя.

Попробовав делать это через построитель запроса, я столкнулся с такой проблемой, что не получается передать настройки компоновщика в построитель запроса поскольку не совпадают типы данных.

То есть мне нужно либо как-то передать настройки компоновщика настроек в построитель запроса, либо через формирование отчета через схему компновоки данных получить результат запроса. И я не вижу выхода ни из того, ни из другого
1 DmitrO
 
30.04.15
11:16
вот от этого
"по сути формируется программно через работу с результатом построителя отчета(тип "РезультатЗапроса")"
надо попробовать избавиться
пусть отчет строится механизмами СКД.
2 Iakovlev
 
30.04.15
12:09
А каким образом мне тогда получить результат запроса?
3 Iakovlev
 
30.04.15
12:14
"надо попробовать избавиться
пусть отчет строится механизмами СКД."
Это не представляется возможным сделать, потому что во-первых кода очень много, во-вторых методы этого кода предназначены для типа "КоллекцияКолонокРезультатаЗапроса", который находится в результате запроса. Без этого кода впринципе ничего не формируется
4 DmitrO
 
30.04.15
13:05
(3)я какраз и имел в виду: принципиально перерефакторить код, чтобы он не работал с результатом запроса вообще
5 DmitrO
 
30.04.15
13:06
да это много, иногда и результат (отчет) получается в несколько другом виде, но у меня пока везде получалось
6 Iakovlev
 
30.04.15
13:15
То есть других вариантов в принципе нет?
7 DmitrO
 
30.04.15
14:01
другие варианты это:
- на основе настроек СКД самому программно формировать настройки построителя;
- реализовать самому настройки построителя в упр. форме (на основе универсальных коллекций);
- настраивать СКД, компоновать до текста запроса, но не выполнять, а забирать запрос и выполнять простым запросом тем самым получать РезультатЗапроса (в данном случае нам построитель уже не нужен, но надо будет как-то расставить значения параметров из отбора).

все варианты в принципе реальны, но объем работ мне кажется сопоставим с переаботкой самого отчета; кроме того, при переработке некоторого блока, обычно он всегда получается лучше и оптимальнее.
8 Iakovlev
 
07.05.15
08:11
Решил проблему.
Удалось найти способ передать настройки из компоновщика настроек в построитель запроса. В таблице настроек отборов отчета было 4 колонки "Использование", "Поле", "Вид сравнения" и "Значение". Главная проблема заключалась в том, что виды сравнения построителя запроса имеют тип "ВидСравнения", а виды сравнения компоновщика настроек имеют тип "ВидСравненияКомпоновщикаНастроек". Путём написания своей функции сопоставления видов сравнения я передал все отборы, но при этом не все сравнения удаётся сопоставить.