Имя: Пароль:
1C
 
формирование списка значений из перечислений
0 Александр056
 
18.07.16
17:15
Доброго! цель в 1 реквизите ТЧ, кот является перечислением, ограничить набор значений доступных пользователю, в зависимости от вида операции документа.
Сделал:
добавил процедуру в модуле менеджера Перечисления:


Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    
    Если Параметры.свойство("ВидОперации") тогда
        ДанныеВыбора = новый СписокЗначений;
        Если Параметры.видОперации = Перечисления.ВТК_ВидыОперацийУстановкиЦен.ЦеныЗаказчика тогда
            ДанныеВыбора.Добавить(Перечисления.ВТК_ТипыЦен.ЦенаВТК);
            ДанныеВыбора.Добавить(Перечисления.ВТК_ТипыЦен.ЦенаПодрячикВТК);
        ИначеЕсли Параметры.видОперации = Перечисления.ВТК_ВидыОперацийУстановкиЦен.ЦеныПодрядчика тогда
            ДанныеВыбора.Добавить(Перечисления.ВТК_ТипыЦен.ЦенаПодрядчика);
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры


в модуле формы так же сделал процедурку;

&НаКлиенте
Процедура ВыполненныеРаботыТипЦеныНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    СформироватьПараметрВыбора();
КонецПроцедуры

&НаСервере
Процедура СформироватьПараметрВыбора()
    ПараметрыСписка = новый Структура;
    ПараметрыСписка.Вставить("ВидОперации",Объект.ВидОперации);
    Перечисления.ВТК_ТипыЦен.ПолучитьДанныеВыбора(ПараметрыСписка);
КонецПроцедуры


в итоге формируется, список получается, заполненный, но! в поле выбора, в ТЧ, нет доступных значений, почему??
1 aleks_default
 
18.07.16
17:25
ПолучитьДанныеВыбора() первый параметр ДанныеВыбора а не параметры
2 aleks_default
 
18.07.16
17:26
Сори не то,
Т.е. ПолучитьДанныеВыбора куда по-твоему возвращает полученный список?
3 Александр056
 
18.07.16
17:54
(2) не понял, это вообще процедура)
сделал по другому, все на форме...

&НаКлиенте
Процедура ВыполненныеРаботыТипЦеныНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
ОбновитьСписокЗначенийТипЦены();
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьСписокЗначенийТипЦены()
    
    Список = Элементы.ВыполненныеРаботыТипЦены.СписокВыбора;
    Список.ЗагрузитьЗначения(ПолучитьМассив());
        
КонецПроцедуры

&НаСервере
Функция ПолучитьМассив()
    
    МассивЦен = новый Массив;
    Если Объект.видОперации = Перечисления.ВТК_ВидыОперацийУстановкиЦен.ЦеныЗаказчика тогда
        МассивЦен.Добавить(ПредопределенноеЗначение("Перечисление.ВТК_ТипыЦен.ЦенаВТК"));
        МассивЦен.Добавить(ПредопределенноеЗначение("Перечисление.ВТК_ТипыЦен.ЦенаПодрячикВТК"));
    ИначеЕсли Объект.видОперации = Перечисления.ВТК_ВидыОперацийУстановкиЦен.ЦеныПодрядчика тогда
        МассивЦен.Добавить(ПредопределенноеЗначение("Перечисление.ВТК_ТипыЦен.ЦенаПодрядчика"));
    КонецЕсли;
    
    Возврат МассивЦен;
    
КонецФункции
Независимо от того, куда вы едете — это в гору и против ветра!