Версия для печати темы (https://pro1c.org.ua/index.php?s=8978672605b9acad7120c671f31b044c&showtopic=67515)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Как скрыть некоторые значения перечисления из списка выбора в реквизите формы (Управляемы формы)

Автор: AnryMc 27.03.24, 14:57

ДАНО:
Есть Перечисление АААААА со значениями:
- Значение 1
- Значение 2
- Значение 3
- Значение 4
- Значение 5

На форме есть реквизит (поле выбора) с данными - Перечисление ААААА

ЗАДАЧА: Показать пользователю в списке выбора только значения:
- Значение 1
- Значение 3
- Значение 5

ВОПРОС: Как это можно реализовать?

P.S.
Код:

НужныйСписок = НОВЫЙ СписокЗначений;
НужныйСписок.Добавить(Перечисления.ААААА.Значение1);
НужныйСписок.Добавить(Перечисления.ААААА.Значение3);
НужныйСписок.Добавить(Перечисления.ААААА.Значение5);

//ВЫРИАНТ 1
//Остается "первоначальный" список и добавляется "новый"
//Получается такой:
//- Значение 1
//- Значение 2
//- Значение 3
//- Значение 4
//- Значение 5
//- Значение 1
//- Значение 3
//- Значение 5

Элементы.МойРеквизит.СписокВыбора.Очистить();
Элементы.МойРеквизит.СписокВыбора.Добавить(НужныйСписок );

//ИЛИ
//ВАРИАНТ 2
//РАБОТАЕТ ТОЛЬКО НА ТОЛСТОМ КЛИЕНТЕ

Элементы.МойРеквизит.СписокВыбора.ДоступныеЗначения(НужныйСписок );

Автор: alex-l1904 27.03.24, 15:45

AnryMc @ Сегодня, 15:57 * ,

треба на потрібному полі форми зробити обробник НачалоВыбора

там треба

СтандартнаяОбработка = Ложь;


далі формуєте список значень і потім

ВыбранноеЗначение = ВыбратьИзСписка(спВыбора, Элемент);

Автор: AnryMc 27.03.24, 16:58

Цитата(alex-l1904 @ 27.03.24, 16:45) *
обробник НачалоВыбора


Спасибо.

Об этом не подумал.

З,Ы, Сделал. Получилось

Цитата(AnryMc @ 27.03.24, 17:24) *
З,Ы, Сделал. Получилось



Правда через ЖЖЖЖЖЖ:

т.к. ВыбранноеЗначение = ВыбратьИзСписка(спВыбора, Элемент); //это Значение перичесления НаКлиенте

то пришлось передать на сервер
&НаСервере
Процедура УстановитьНужноеЗначение(текЗначение = НЕОПРЕДЕЛЕНО)
    
    Если текЗначение <> НЕОПРЕДЕЛЕНО Тогда
        
        Существующие = Метаданные.Перечисления.МОЕПЕРЕЧИСЛЕНИЕ.ЗначенияПеречисления;
        
        Для КАЖДОГО текЗн ИЗ Существующие Цикл
            
            Если СокрЛП(текЗн.Синоним) = текЗначение Тогда
                
                Объект.МОЙРЕКВИЗИТ= Вычислить("Перечисления.МОЕПЕРЕЧИСЛЕНИЕ."+текЗначение .Имя);
                
                Прервать;
                
            КонецЕсли;
            
        КонецЦикла;
        
    КонецЕсли;
    
КонецПроцедуры

Автор: alexxbely 28.03.24, 11:06

AnryMc @ Вчера, 15:57 * ,
Я б в палітрі властивостей елемента форми встановив прапорець "РежимВыбораИзСписка" и в полі "СписокВыбора" обрав тільки ті значення, що потрібні

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua