Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)
В отчете СКД имеется отбор по виду договоров. Вид договоров в Перечислениях.
На форму отчета СКД повесил поле выбора и при открытии заполнил его:
ЭлементыФормы.ВыборЗначения.СписокВыбора.Очистить();
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(0, "Равно");
ЭлементыФормы.ВыборЗначения.СписокВыбора.Добавить(1, "В списке");
ЭлементыФормы.ВыборЗначения.Значение = 0;
Процедура ВидДоговораПриИзменении(Элемент)
// Вставить содержимое обработчика.
Если ВыборЗначения = 0 Тогда
Выборы = ВидСравненияКомпоновкиДанных.Равно;
ИначеЕсли ВыборЗначения = 0 Тогда
Выборы = ВидСравненияКомпоновкиДанных.ВСписке;
КонецЕсли;
Для каждого Эл Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Если Эл.Представление = Элемент.Имя Тогда
Эл.Использование = ЗначениеЗаполнено(ВидДоговора);
Эл.ВидСравнения = Выборы;//ВидСравненияКомпоновкиДанных.Равно;
Эл.ПравоеЗначение = ВидДоговора;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Ошибка при установке значения атрибута контекста (ВидСравнения)
Эл.ВидСравнения = Выборы;//ВидСравненияКомпоновкиДанных.Равно;
по причине:
Несоответствие типов
alex1c @ Сегодня, 17:35
,
Спасибо, исправил, но это не помогло, все равно производится отбор по одному значению, требуется, чтобы появилось окно с подбором и кнопкой "Подбор", чтобы список сформировать, как это делается в стандартных отчетах при выборе "В списке"
Как этого добится?
создаем форму, выносим на форму табличное поле, данные - компоновщик.Отбор
Дал полю "ВидДоговора" тип "СписокЗначений"
Теперь выбор "В списке" сработал.
Но если выбираю значение "Равно", то выдает ошибку исполнения.
Я так понимаю, что при выборе "Равно", нужно изменить тип значений с "СписокЗначений" на Ссылку на нужный справочник справочник.
Как можно программно изменять тип значений?
Сделал такие махинации:
Процедура ВидДоговораПриИзменении(Элемент)
Если ВыборЗначения = 1 Тогда
Выборы = ВидСравненияКомпоновкиДанных.ВСписке;
ИначеЕсли ВыборЗначения = 0 Тогда
Выборы = ВидСравненияКомпоновкиДанных.Равно;
КонецЕсли;
Для каждого Эл Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Если Эл.Представление = Элемент.Имя Тогда
//Эл.Использование = ЗначениеЗаполнено(ВидДоговора);
Эл.ВидСравнения = Выборы;//ВидСравненияКомпоновкиДанных.ВСписке;
Эл.ПравоеЗначение = ВидДоговора;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ВыборЗначенияПриИзменении(Элемент)
// Вставить содержимое обработчика.
Если ВыборЗначения = 1 Тогда
Выборы = ВидСравненияКомпоновкиДанных.ВСписке;
ТипК = Новый ОписаниеТипов("СписокЗначений");
ЭлементыФормы.ВидДоговора.Значение = ТипК.ПривестиЗначение(Элемент);
ИначеЕсли ВыборЗначения = 0 Тогда
Выборы = ВидСравненияКомпоновкиДанных.Равно;
ТипК = Новый ОписаниеТипов("СправочникСсылка.ВидыДоговоровПоГК");
ЭлементыФормы.ВидДоговора.Значение = ТипК.ПривестиЗначение(Элемент);
КонецЕсли;
КонецПроцедуры
Процедура ВидДоговораНачалоВыбора(Элемент, СтандартнаяОбработка)
// Вставить содержимое обработчика.
Если ВыборЗначения = 1 Тогда
ТипК = Новый ОписаниеТипов("СписокЗначений");
ЭлементыФормы.ВидДоговора.Значение = ТипК.ПривестиЗначение(Элемент);
ИначеЕсли ВыборЗначения = 0 Тогда
ТипК = Новый ОписаниеТипов("СправочникСсылка.ВидыДоговоровПоГК");
ЭлементыФормы.ВидДоговора.Значение = ТипК.ПривестиЗначение(Элемент);
КонецЕсли;
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua