Цитата(TipsyKID @ 29.10.14, 13:45)
Думаю Вы имеете ввиду вот это : [необходимо зарегистрироваться для просмотра ссылки]
Да мне нужно это! Пишу через постоитель запросов, вот код:
Процедура РегистрСведенийСписокПриПолученииДанных(Элемент, ОформленияСтрок)
Источник = Элемент.Значение;
//Запрос = Новый Запрос;
ОтборСтрок = Элемент.Значение.Отбор;
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Источник);
// Добавляются необходимые отборы, такие же как в отборы в табличной части.
Для Каждого ЭлементОтбора Из ОтборСтрок Цикл
Если ЭлементОтбора.Использование Тогда
НовыйОтбор = ПостроительЗапроса.Отбор;
НовыйОтбор.Добавить(ЭлементОтбора.Имя); // ОШИБКА НЕ УДАЕТСЯ ДОБАВИТЬ!
НовыйОтбор.Использование = Истина;
НовыйОтбор.ВидСравнения = ЭлементОтбора.ВидСравнения; // нужный вид сравнения
НовыйОтбор.ЗначениеС = ЭлементОтбора.ЗначениеС;
НовыйОтбор.ЗначениеПо = ЭлементОтбора.ЗначениеПо;
НовыйОтбор.Значение = ЭлементОтбора.Значение;
КонецЕсли;
КонецЦикла;
ПостроительЗапроса.Выполнить ();
Результат = ПостроительЗапроса.Результат.Выгрузить(); // отобранные строки типа РезультатЗапроса
Если ЗначениеЗаполнено(Результат) Тогда
ТабличноеПолеИнформация = Результат;
ТабличноеПолеИнформация.Колонки.Добавить("КоличествоВагонов",,"Количество вагонов",);
Для каждого Строка Из ТабличноеПолеИнформация Цикл
Строка.КоличествоВагонов = 1;
КонецЦикла;
ТабличноеПолеИнформация.Свернуть("НоменклатураПрибытие","ВесПоПрибытию, КоличествоВагонов");
КонецЕсли;
КонецПроцедуры
Как передать отбор с формы списка в отбор построителя запроса?
Описание ошибки:
{РегистрСведений.ПростойВагона.Форма.ФормаСписка.Форма(486)}: Ошибка при вызове метода контекста (Добавить)
НовыйОтбор.Добавить(ЭлементОтбора.Имя);
по причине:
Недопустимое значение параметра (параметр номер '1')
с отбором разобрался, код ниже. Все добавляется. Вопрос другой)) Как в построитель запроса добавить поле со значением "1" - число?
И ещё там где ВидСравнения, ошибка, не могу установить вид сравнения такой как выбран на форме. Почему?
Процедура РегистрСведенийСписокПриПолученииДанных(Элемент, ОформленияСтрок)
Источник = Элемент.Значение;
ОтборСтрок = Элемент.Значение.Отбор;
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Источник);
ПостроительЗапроса.ДоступныеПоля.Добавить("КоличествоВагонов",,,);
ПостроительЗапроса.ДоступныеПоля.КоличествоВагонов = 1;
Для Каждого НастройкаОтбора Из ПостроительЗапроса.ДоступныеПоля Цикл
НастройкаОтбора.Отбор = Истина;
КонецЦикла;
// Добавляются необходимые отборы, такие же как в отборы в табличной части.
Для Каждого ЭлементОтбора Из ОтборСтрок Цикл
Если ЭлементОтбора.Использование Тогда
//Есть = Истина;
НовыйОтбор = ПостроительЗапроса.Отбор;
НовыйОтбор.Добавить(Строка(ЭлементОтбора.Имя));
НовыйОтбор[ЭлементОтбора.Имя].Использование = Истина;
НовыйОтбор[ЭлементОтбора.Имя].ВидСравнения = ЭлементОтбора.ВидСравнения; // нужный вид сравнения
НовыйОтбор[ЭлементОтбора.Имя].ЗначениеС = ЭлементОтбора.ЗначениеС;
НовыйОтбор[ЭлементОтбора.Имя].ЗначениеПо = ЭлементОтбора.ЗначениеПо;
НовыйОтбор[ЭлементОтбора.Имя].Значение = ЭлементОтбора.Значение;
КонецЕсли;
КонецЦикла;
ПостроительЗапроса.Выполнить ();
Результат = ПостроительЗапроса.Результат.Выгрузить(); // отобранные строки типа РезультатЗапроса
Если ЗначениеЗаполнено(Результат) Тогда
ТабличноеПолеИнформация = Результат;
ТабличноеПолеИнформация.Колонки.Добавить("КоличествоВагонов",,"Количество вагонов",);
Для каждого Строка Из ТабличноеПолеИнформация Цикл
Строка.КоличествоВагонов = 1;
КонецЦикла;
ТабличноеПолеИнформация.Свернуть("НоменклатураПрибытие","ВесПоПрибытию, КоличествоВагонов");
КонецЕсли;
КонецПроцедуры