Имя: Пароль:
1C
1С v8
как связать элемент формы "Отбор" с заполнением документа запросом универсально?
,
0 Cerera
 
14.05.13
16:14
Сажаю на форму элемент управления "отбор". Заполняю поля отбора таким образом:

   ОтборКоличество=Отбор.Количество();
   Для Н = 1 По ОтборКоличество Цикл
       Отбор.Удалить(ОтборКоличество - Н);
   КонецЦикла;
   
   ДоступныеПоляОтбора = Отбор.ПолучитьДоступныеПоля();
   Поле = ДоступныеПоляОтбора.Добавить("Склад", "Склад",
   Новый ОписаниеТипов("СправочникСсылка.Склады"));
   Поле.Отбор = Истина;

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

На табличной части есть кнопка "заполнить". Нужно заставить её работать, чтоб в зависимости от выбранных значений отбора, запрос видоизменялся. Но это ведь гемор. Для каждого поля ставить в запрос проверки типа

   Если Отбор.Найти("Контрагент")<>Неопределено Тогда
           Если Отбор["Контрагент"].Использование=Истина Тогда
               Запрос.УстановитьПараметр("Контрагент", Отбор["Контрагент"].Значение);
               Запрос.Текст=Запрос.Текст+"И ПродажиОбороты.Контрагент В Иерархии(&Контрагент)";
           КонецЕсли;
       КонецЕсли;

А как мне лучшесделать? чтоб как в СКД желательно было. Чтоб если выбрал отбор,чтоб он работал аесли не выбрал,то не работал чтоб?
1 Cerera
 
14.05.13
16:20
Можно ли вставить СКД в документ и потом после нажатия кнопочки "сформировать", как то програмно чтоб можно было добраться до выборки результата?
2 Fragster
 
гуру
14.05.13
16:21
да, можно использовать СКД целиком программно
3 Fragster
 
гуру
14.05.13
16:22
в некоторых случаях можно использовать построитель запроса
4 Cerera
 
14.05.13
16:23
(2)а чтоб пользователь мог только отборами играть в СКД, встроенной в документ с фиксированным набором условий?
5 Kreont
 
14.05.13
16:23
(1) ну да, скорей всего так и будет попроще, см. в сторону:
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
6 Fragster
 
гуру
14.05.13
16:24
(4) да
7 Cerera
 
14.05.13
16:28
(6)а как саму СКД присобачить к документу?
8 ОбычныйЧеловек
 
14.05.13
16:29
(0) Там все очень просто - данные отбора на форме - перенеси в отбор СКД и выполнить запрос (перенос отбора - это один фикл с тремя строчками кода) - программное выполнение СКД - тоже несколько строк кода.
(7) При нажатии кнопки "Сформировать" - вызывай отчет в который передай отбор (как передать читай выше) и возвращай результат.
9 ОбычныйЧеловек
 
14.05.13
16:30
фикл --> цикл
10 Cerera
 
14.05.13
16:42
(8)а этот отчет на СКД как отдельный объект метаданных будет?
11 ОбычныйЧеловек
 
14.05.13
16:44
(10) да
12 Cerera
 
14.05.13
16:45
(11)вот как возвратить результат из отчета СКД вот это уже менее понятно.
13 ОбычныйЧеловек
 
14.05.13
16:45
+11 это самое простое, но может сделать вот так http://infostart.ru/public/73912/
14 Cerera
 
14.05.13
16:49
(13)ну мне по сути отчет не нужен. а нужен результат, полученный в результате выполнения отчета
15 ОбычныйЧеловек
 
14.05.13
16:52
(14) Посмотри тогда пример - там как раз твой случай.
16 Cerera
 
14.05.13
16:55
(15)Спасибо! скачал, разбираюсь
17 Cerera
 
14.05.13
17:01
(15)а ведь в том примере они просто к обработке прикрепили в виде макета схему компоновки данных. можно ли так же сделать в документе - прикрепить к нему схему компоновки данных?