Имя: Пароль:
1C
1С v8
Доступные поля в скд
0 chingiz
 
23.08.11
09:27
Появилась проблема. Как программно добавить доступные поля? Есть параметры, которые отображаются при выводе отчета(в папке параметры), нужно их скопировать в такую же папку, только свою(учебное задание).
1 lxs
 
23.08.11
09:29
СП украли? Там все есть. У Хрусталевой тоже.
2 chingiz
 
23.08.11
09:53
Использовал, но недопонимаю некоторые вещи. в сп нашел примерную схему добавления, но не понимаю что есть .Поле и .ПутьКДанным? Объясните пожалуйста если не сложно.

ПолеНов=НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
   ПолеНов.Поле="лала";
   ПолеНов.ПутьКДанным= ?;
   ПолеНов.Заголовок="Заголовок1";
3 chingiz
 
23.08.11
09:53
Я только первую неделю в скд, так что программная настройка для меня - потрясение 8)
4 chingiz
 
23.08.11
14:47
В общем допилил все что хотел+добавляем доступные поля в папке. Если что, то настраивается уже созданная схемакомпоновкиданных, а не создается с нуля. Совет другим новичкам - учитесь пользоваться синтаксис-помощником, помогает лучше интернета. Оставлю для истории, вдруг кому пригодится ибо в интернете отыскать это все тяжеловато.

//запрос на хар-ки
   ЗапросКол=Новый Запрос;
   ЗапросКол.Текст=
   "ВЫБРАТЬ
   |    СвойстваНоменклатуры.Ссылка
   |ИЗ
   |    ПланВидовХарактеристик.СвойстваНоменклатуры КАК СвойстваНоменклатуры";
   
   //Выполним запрос и запишем результат в переменную РезультатЗапроса
   РезультатЗапроса=ЗапросКол.Выполнить();
   Выборка = РезультатЗапроса.Выбрать();
   
   ВремЗапрос="";
   ВремПоля="";
   НомерТекПеременной = 0;
   
   НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1;                      
       
   //формируем вложенные запросы относительно количества характеристик                  
   Пока Выборка.Следующий() Цикл        
       
       НомерТекПеременной = НомерТекПеременной + 1;
       ТекПеременнаяИмени = "ВидСвойства" + НомерТекПеременной;
                       
       ВремЗапрос=ВремЗапрос+ "
        |ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
        |    ЗначенияСвойствНоменклатуры.НаборСвойств КАК НаборСвойств,
        |    ЗначенияСвойствНоменклатуры.Значение КАК Значение
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствНоменклатуры КАК ЗначенияСвойствНоменклатуры
        |ГДЕ
        |    ЗначенияСвойствНоменклатуры.ВидСвойства = &"+ТекПеременнаяИмени+") КАК "+ТекПеременнаяИмени+"
        |ПО ЗначенияСвойствНоменклатуры.НаборСвойств = "+ТекПеременнаяИмени+".НаборСвойств";
               
       ВремПоля = ВремПоля + "," + Символы.ПС + ТекПеременнаяИмени + ".Значение КАК " + ТекПеременнаяИмени + "Значение";
       
       //добавляем параметры ВидСвойства
       ПараметрыСхемы  = СхемаКомпоновкиДанных.Параметры.Добавить();
       ПараметрыСхемы.Имя = ТекПеременнаяИмени;
       ПараметрыСхемы.Заголовок = ТекПеременнаяИмени;
       ПараметрыСхемы.Значение = Выборка.Ссылка;
       ПараметрыСхемы.ОграничениеИспользования = Истина;
       
       //добавляем новые доступные поля
       ПолеНов=Наборданных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
       ПолеНов.Поле=ТекПеременнаяИмени +"Значение";
       ПолеНов.ПутьКДанным= "ВидСвойств."+ТекПеременнаяИмени;
       ПолеНов.Заголовок = Выборка.Ссылка.наименование;
       
   КонецЦикла;
   
   //заменяем запрос скд на нужный    
   НаборДанных.Запрос=
   "ВЫБРАТЬ РАЗЛИЧНЫЕ
   |    ЗначенияСвойствНоменклатуры.НаборСвойств КАК НаборСвойств"
   +ВремПоля+
   "
   |ИЗ
   |    РегистрСведений.ЗначенияСвойствНоменклатуры КАК ЗначенияСвойствНоменклатуры"+
   ВремЗапрос;
   
   //формируем вывод в результирующий документ
   Настройки = КомпоновщикНастроек.Настройки;
   КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший