Имя: Пароль:
1C
1С v8
Подскажите как добавить отбор Построителю отчета.
0 Grinspen
 
28.06.10
16:28
ПостроительЗатрат = Новый ПостроительОтчета;
   ПостроительЗатрат.Текст = "ВЫБРАТЬ
                             |    СтатьиЗатрат.Ссылка КАК СтатьяЗатрат
                             |ИЗ
                             |    Справочник.СтатьиЗатрат КАК СтатьиЗатрат
                             |ГДЕ
                             |    (НЕ СтатьиЗатрат.ЭтоГруппа)";
                             

   

ПостроительЗатрат.УстановитьНастройки();

   
//Нужно добавить построителю еще и отбор.
ПостроительЗатрат.Отбор.Добавить(); //не хочет работать...
1 shuhard_серый
 
28.06.10
16:30
(0) {} тебя спасут
2 Grinspen
 
28.06.10
16:33
(1) вообще-то у меня два построителя отчета. один с отбором и текстом.
другой я создаю с другим текстом запроса, и хочу передать ему отбор первого построителя, по идее хотелось бы просто добавить второму отбор и заполнить его методом ЗаполнитьЗначенияСвойств()
3 Grinspen
 
28.06.10
16:34
вписывать содержимое готового отбора в {} как то неудобно.
4 Grinspen
 
28.06.10
16:35
объясните ктонить почему ПостроительЗатрат.Отбор.Добавить(); не работает, все ругается на неверное значение параметра 1, я там строкой указываю имя поля.
5 Alex_MA
 
28.06.10
16:43
(0)
Если ПостроительОтчета.Отбор.Найти("ЗаказКонтрагент") = Неопределено Тогда
       ПостроительОтчета.Отбор.Добавить("ЗаказКонтрагент", "ЗаказКонтрагент", "Заказ покупателя контрагент");
       ПостроительОтчета.Отбор.ЗаказКонтрагент.Установить(ОтборКонтрагент);
   Иначе
       ПостроительОтчета.Отбор.ЗаказКонтрагент.Установить(ОтборКонтрагент);
   КонецЕсли;
   ПостроительОтчета.Отбор.ЗаказКонтрагент.Использование = Ложь;
6 Alex_MA
 
28.06.10
16:46
(4)а в доступных полях есть поле, которое ты в отбор пытаешься "втитюхать" ?
7 Grinspen
 
28.06.10
18:11
ПостроительЗатрат = Новый ПостроительОтчета;
   ПостроительЗатрат.Текст   = "ВЫБРАТЬ
                             |    СтатьиЗатрат.Ссылка КАК СтатьяЗатрат
                             |ИЗ
                             |    Справочник.СтатьиЗатрат КАК СтатьиЗатрат
                             |ГДЕ
                             |    (НЕ СтатьиЗатрат.ЭтоГруппа)";
                             

   ПостроительЗатрат.ДоступныеПоля.Добавить("СтатьяЗатрат",Истина);                      
   сзОтбор = ПостроительЗатрат.Отбор;            
   сзОтбор.Добавить("СтатьяЗатрат");
   сзОтбор["СтатьяЗатрат"].Использование = Истина;
   сзОтбор["СтатьяЗатрат"].Значение = ПостроительОтчета.Отбор.СтатьяЗатрат.Значение;
   сзОтбор["СтатьяЗатрат"].ВидСравнения = ПостроительОтчета.Отбор.СтатьяЗатрат.ВидСравнения;
       
   
   ПостроительЗатрат.ЗаполнитьНастройки();
   ПостроительЗатрат.Выполнить();
   ТабРезультат = ПостроительЗатрат.Результат.Выгрузить();



Да, в доступных полях есть так или иначе ругается на метод сзОтбор.Добавить("СтатьяЗатрат"); неверный тип параметра 1?!?
8 Grinspen
 
28.06.10
18:19
Вообще задача заключается в том что на форме эл. спр. есть поле отбора построителя, при открытии его настройки и отборы восстанавливаются из хранилища, при закрытии сохраняются туда. Мне нужно при записи вытащить из отбора этого построителя его элементы и выполнить свой запрос. Не хотелось бы ковырять строки таблицы отбора, там виды сравнений могут быть и в списке, и в иерархии, и не в иерархии... и т.п. хочу использовать этот отбор и выполнить свой запрос уже с ним.
9 azernot
 
28.06.10
18:26
ПостроительЗатрат.Текст   =  "ВЫБРАТЬ
                              |    СтатьиЗатрат.Ссылка КАК СтатьяЗатрат
                              |ИЗ
                              |    Справочник.СтатьиЗатрат КАК СтатьиЗатрат
                              |ГДЕ
                              |    (НЕ СтатьиЗатрат.ЭтоГруппа)
                              |{ГДЕ
                              |    СтатьиЗатрат.Ссылка.* КАК СтатьяЗатрат}"

Советую обратить внимание на вкладку "Построитель" в конструкторе запросов.
10 luns
 
28.06.10
18:31
Если " и выполнить свой запрос" то метод построителя ПолучитьЗапрос();
Если "ытащить из отбора" то метод построителя ПолучитьНастройки();
11 Grinspen
 
29.06.10
06:03
(9) Спасибо, вот точно вредно по ночам работать, утром посмотрел я оказывается пытался отбор создать до заполнения настроек с текстом запроса, и без указания поля построителя в запросе :))
12 Grinspen
 
29.06.10
06:06
// вот так правильно.    

ПостроительЗатрат = Новый ПостроительОтчета;
   ПостроительЗатрат.Текст   = "ВЫБРАТЬ
                               |    СтатьиЗатрат.Ссылка КАК СтатьяЗатрат
                               |{ВЫБРАТЬ
                               |    СтатьяЗатрат.*}
                               |ИЗ
                               |    Справочник.СтатьиЗатрат КАК СтатьиЗатрат
                               |ГДЕ
                               |    (НЕ СтатьиЗатрат.ЭтоГруппа)
                               |{ГДЕ
                               |    СтатьиЗатрат.Ссылка.*}
                               |{УПОРЯДОЧИТЬ ПО
                               |    СтатьяЗатрат.*}";
                             

   ПостроительЗатрат.ДоступныеПоля.Добавить("СтатьяЗатрат",Истина);
   ПостроительЗатрат.ЗаполнитьНастройки();
   
   сзОтбор = ПостроительЗатрат.Отбор;            
   сзОтбор.Добавить("СтатьяЗатрат");
   сзОтбор["СтатьяЗатрат"].Использование = Истина;
   сзОтбор["СтатьяЗатрат"].ВидСравнения = ПостроительОтчета.Отбор.СтатьяЗатрат.ВидСравнения;
   сзОтбор["СтатьяЗатрат"].Значение = ПостроительОтчета.Отбор.СтатьяЗатрат.Значение;
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший