Имя: Пароль:
1C
1С v8
Пользовательский отбор по программно добавленой схеме данных в СКД
0 vladnet
 
13.01.12
16:25
Ситуация - у формы есть реквизит формы типа: КомпоновщикНастроекКомпоновкиДанных, для предоставления пользователю возможности произвольного отбора в СКД. Но сама схема скд добавляется программно. Выполнить СКД проблем нет. Но никак не могу решить вопрос чтобы пользователь добавил в нее сам произвольные отборы, делаю так:

   лСКД=Новый СхемаКомпоновкиДанных;
   
   лИсточникДанных=лСКД.ИсточникиДанных.Добавить();
   лИсточникДанных.Имя="ИсточникДанных";
   лИсточникДанных.ТипИсточникаДанных="Local";
   
   лНаборДанныхЗапрос=лСКД.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
   лНаборДанныхЗапрос.ИсточникДанных="ИсточникДанных";
   лНаборДанныхЗапрос.Запрос=
   "ВЫБРАТЬ
   |    Список.Ссылка КАК Ссылка
   |ИЗ
   |    "+Модули.Типы().ТипЕдинственноеЧисло(Объект.ТипОбъекта)+"."+Объект.ВидОбъекта+" КАК Список";
   
   
   Объект.НастройкиКомпоновки.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(лСКД));

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

Что я забыл сделать?
1 Kom-off
 
13.01.12
16:47
Разместить на форме отбор от "реквизита формы типа: КомпоновщикНастроекКомпоновкиДанных". Только не помню точно какие настройки надо размещать (их там 3 вида), то ли текущие, но не фиксированные это точно.
2 vladnet
 
13.01.12
16:51
(1) В том то и дело что я разместил, но при выборе поля для отбора - список пуст.

Вроде насколько понимаю все должно работать, я проинициализировал НастройкиКомпоновки из произвольного СКД, он должен был запомнить с какими полями что можно сделать, потом позже эти настройки я снова закину в СКД и сформирую отчет. Но вот не получается (((((
3 vladnet
 
13.01.12
17:40
Решил вопрос, нужно через временное хранилище почему то делать:

   лИсточникНастроек=Новый ИсточникДоступныхНастроекКомпоновкиДанных(ПоместитьВоВременноеХранилище(лСКД, Новый УникальныйИдентификатор));
   Объект.НастройкиКомпоновки.Инициализировать(лИсточникНастроек);
Закон Брукера: Даже маленькая практика стоит большой теории.