Имя: Пароль:
1C
1С v8
СКД: Черный ящик и вопрос для телепатов.
, ,
0 Ksandr
 
27.02.12
22:01
Есть отчет на СКД.
Есть параметр типа булево, значение которого является полем (Поле1).
Есть группировка, у которой настроен отбор Поле1 = Истина

Суть этого всего - простое включение/выключение дополнительной детализации отчета.

Процедура Сформировать сначала устанавливает параметр, затем вызывает СкомпоноватьРезультат.

Собственно проблема: Все работает как и задумано только первый раз после запуска отчета. Начиная со второго нажатия отбор в группировке ни на что не реагирует, как его не меняй.

ЧЯДТН?
Может кто сталкивался
1 DexterMorgan
 
27.02.12
22:04
(0) Суть этого всего - простое включение/выключение дополнительной детализации отчета.
Я правильно понимаю, что речь идет о свертке/разворачиванию группировок?
2 Ksandr
 
27.02.12
22:06
(1) Да.
3 Ksandr
 
27.02.12
22:10
Хотя можно конечно сделать и рекурсивный обход структуры настроек с поиском по имени
4 Ksandr
 
27.02.12
22:26
попробовал иначе. Сделал рекурсивный обход группировок. История повторяется. Настройки компоновщика меняются - результат остается
5 Ksandr
 
27.02.12
22:27
т.е. при отключении в настройках группировки она все равно выводится
работает только для первого формирования, после первого не учитываются изменения настроек
6 le_
 
27.02.12
22:38
Покажи как компоновщику настройки передаются.
7 Ksandr
 
27.02.12
22:39
(6) Никак :)

   Группировка = НайтиГруппировкуПоИмени(КомпоновщикНастроек.Настройки.Структура, "Товары");
   Группировка.Использование = НЕ ВыводитьКратко;
   мТаблицаПометок.Очистить();
   СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки);
8 le_
 
27.02.12
22:49
СхемаКомпоновкиДанных = ПолучитьМакет("ТвояСхема");
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;//а если сюда нужные настройки подставить?
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.Результат);
ПроцессорВывода.НачатьВывод();
Пока Истина Цикл
   ОбработкаПрерыванияПользователя();
   
   ЭлементРезультатаКомпоновкиДанных = ПроцессорКомпоновкиДанных.Следующий();
   Если ЭлементРезультатаКомпоновкиДанных = Неопределено Тогда
       Прервать;
   КонецЕсли;
   
   ПроцессорВывода.ВывестиЭлемент(ЭлементРезультатаКомпоновкиДанных);
КонецЦикла;
ПроцессорВывода.ЗакончитьВывод();
9 Ksandr
 
27.02.12
22:56
(8) Если использовать НастройкиПоУмолчанию то установленные на форме отборы и настройки не будут учитываться, т.к. они находятся в КомпоновщикНастроек.Настройки.*

Хотя интереса ради можно попробовать программный вывод.
10 le_
 
27.02.12
23:02
(9)Попробуй
КомпоновщикНастроек.Настройки;
или
КомпоновщикНастроек.ПользовательскиеНастройки;
Основная теорема систематики: Новые системы плодят новые проблемы.