Имя: Пароль:
1C
1С v8
СКД
0 CyberDream
 
30.11.11
12:33
Не так давно разбираюсь с СКД, по сему вопрос. (книга Хрусталевой лежит на столе, если бы нашел там ответ, не задавал бы вопрос)

Есть отчет построенный на основании схемы компоновки данных. В настройках схеме компоновки есть группировки:

Склад
 Поставщик
   Партия
     Номенклатура

Хочу в диалог вывести список значений с пометкой напротив каждой из группировок, чтобы пользователь мог выбирать какую группировку включать в отчет, а какую нет. Сразу оговорюсь в данном случае я не использую стандартную форму настроек. Задача сводится к вводу в диалог список группировок с возможностью их включения / выключения.
1 CyberDream
 
30.11.11
12:38
Попробовал сделать следующие:
Элементу диалога присвоил тип Отчет.КомпоновщикНастроект.Настройки.Выбор, где содержатся все доступные поля источника данных. Но тут, если попытаться убрать флажки с некоторых полей, ничего не происходит, поля все равно выводятся. Отключение работает только на поле-ресурсе.
2 DrShad
 
30.11.11
12:39
видимо полохо еще прочитал мануал
3 CyberDream
 
30.11.11
12:40
пошел читать еще раз - спасибо
4 PVV65
 
30.11.11
13:36
(0) Создаешь форму. На форме размещаешь ТП: имя - "СписокПолей", тип - "СписокЗначений". В модуле формы пишешь -


Процедура ПриОткрытии()
   Для Каждого ЭлементСтруктуры ИЗ КомпоновщикНастроек.Настройки.ДоступныеПоляГруппировок.Элементы Цикл
       СписокПолей.Добавить(ЭлементСтруктуры.Поле);
   КонецЦикла;
КонецПроцедуры

Процедура СписокПолейПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
   КомпоновщикНастроек.Настройки.Структура.Очистить();
   Группировка = КомпоновщикНастроек.Настройки;
   
   Для Каждого Поле Из СписокПолей Цикл
       Если Поле.Пометка Тогда
           Группировка = Группировка.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
           ВыбранноеПоле = Группировка.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
           ПолеГруппировки = Группировка.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
           ПолеГруппировки.Использование = Истина;
           ПолеГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;
           ПолеГруппировки.Поле = Поле.Значение;
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры


Вторая процедура - это обработчик события ТП.
Ошибка? Это не ошибка, это системная функция.