Как найти значение перечисления по наименованию 1с

Работа с перечислениями

Для работы с перечислениями предназначена ветвь Перечисления дерева конфигурации.

Перечисление является объектом метаданных ссылочного типа и поэтому метод ПустаяСсылка() возвращает пустое значение ссылки на перечисление данного вида.

Пример:

ВидКонтрагента = Перечисления.ВидыКонтрагентов.ПустаяСсылка();

Как получить имя значения перечисления заданное в метаданных?

Чтобы определить имя значения перечисления заданное в метаданных, имея значение типа ПеречислениеСсылка, необходимо найти объект метаданных и получить его имя:

ЗначениеПеречисления = Перечисления.ВидыКонтрагентов.Организация; ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя; 

Как получить индекс значения перечисления заданное в метаданных?

Метод Метаданные объекта ПеречислениеСсылка, как и у других аналогичных типов, выдает объект метаданных перечисления, а не значения перечисления.

Метод Индекс возвращает порядковый номер (индекс) перечисления в списке перечислений. Если не найдено, то возвращается -1.

ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления); 

Поиск объекта метаданных значения перечисления может быть выполнен по индексу значения перечисления, полученного у менеджера перечисления:

ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя;

Свойство ЗначенияПеречисления содержит коллекцию объектов метаданных, описывающих значения данного перечисления.

Если известно имя самого перечисления и имя его значения, то получить ссылку которая будет являться значением, например субконто, можно следующим образом: 

ПеречислениеСсылка = Перечисления[ИмяПречисления][ИмяЗначения];

Данную операцию целесообразно выполнить внутри оператора попытки :

 Функция ПолучитьСсылкуНаЗначениеПеречисления( пИмяПеречисления, пИмяЗначения ) Экспорт        
Попытка
Возврат Перечисления[пИмяПеречисления][пИмяЗначения];
исключение
Сообщить("Ошибка получения ссылки на значение перечисления. " + пИмяПеречисления + " :: " + пИмяЗначения);
Возврат неопределено;
КонецПопытки;
КонецФункции

КАК ИСПОЛЬЗОВАТЬ ПЕРЕЧИСЛЕНИЕ В ЗАПРОСЕ ?

 Запрос.Текст = "
|ВЫБРАТЬ
// ...

 |ГДЕ
| ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)

 // ...
|";

Авто добавление обработки в справочник Внешних обработок 0
Чтобы не изменять типовую конфигурацию приходится использовать типовой механизм внешних печатных форм и обработок. Данный код проверяет – добавлена ли открываемая обработка в конфигурацию, если нет – задает вопрос и при положительном ответе – автома


Ввести перечисление, выбор перечисления 2

// В 8-ой версии нет такой фунции, но можно сделать так:
ЗначПер=Перечисления.Важность.Средняя; //Установим перечисление предлагаемое выбрать по умолчанию
Если ВвестиЗначение(ЗначПер,”Выберите важность:”) тогда
Сообщить(ЗначПер); //обработка в


Временные таблицы, что из себя представляют и как с ними работать? 7
Временные таблицы – хранятся на сервере и позволяют писать более простые запросы.
Временные таблицы хранятся в объекте типа МенеджерВременныхТаблиц . Когда этот объект уничтожается, уничтожаются и временные таблицы.
Чтобы создать временную таблицу


Выборка (перебор) элементов справочника 4

// Выбрать( , , , )
Номенклатура = Справочники.Номенклатура;
Отбор = Новый Структура(“ТипНоменклатуры”);
Пусто = Перечисления.ТипыНоменклатуры.ПустаяСсылка();
Отбор.ТипНоменклатуры = Пусто;
Выборка = Номенклатура.Выбрать(,,Отбор, “Наимено


Выбрать движения, получить выборку записей регистра накопления 2
Пример 1 :
//Взаиморасчеты за период, хотя, это лучше выбирать запросом , он в примере 3
Отбор = Новый Структура(“Организация”, Организация);
НаборЗаписей = РегистрыНакопления.ВзаиморасчетыСРаботникамиОрганизаций.Выбрать(ПериодРегистрации, КонецМе


Посмотреть все результаты поиска похожих

 

Партнёрская программа 1С и Бланка

 

Как получить значение перечисления по имени?

Я
   SAP

15.04.08 – 18:32

Как получить значение перечисления по имени в восьмерке? К сожалению, поиск у меня не срабатывает, поэтому прошу не ругать.

   artem666

1 – 15.04.08 – 18:43

чего? какое имя? обращайся просто – перечисления.твоеперечисление.имяперечисления

   SAP

2 – 15.04.08 – 18:45

У меня есть имя значения перечисления (символьная строка) мне надо имея это получить ссылку на значение, как это сделать?

   Scooter

3 – 15.04.08 – 18:46

здесь пошукай Книга знаний: v8: Работа с перечислениями

   Leksus

4 – 15.04.08 – 18:47

(0) Писать свою функцию, а так только по индексу

   SAP

5 – 15.04.08 – 18:53

Функцию, в смысле, компоненту?

   Asmody

Модератор

6 – 15.04.08 – 18:56

вы чего, издеваетесь?

Перечисления.ИмяПеречисления[ИмяЗначенияПеречисления] – не катит уже?

  

Asmody

Модератор

7 – 15.04.08 – 18:58

(6)+ до кучи:
Перечисления[ИмяПеречисления][ИмяЗначенияПеречисления]  – тоже работает

TurboConf — расширение возможностей Конфигуратора 1С

// Возвращает значение перечисления или Неопределено
//
Функция ВернутьЗначениеПеречисления(ВидПеречисления, ЗначениеТекст)ЗначениеПеречисления = Неопределено;

    Для Каждого

ТекЗначение Из Метаданные.Перечисления[ВидПеречисления].ЗначенияПеречисления Цикл
        Если
ТекЗначение.Имя = ЗначениеТекст Или ТекЗначение.Синоним = ЗначениеТекст Тогда
           
ЗначениеПеречисления = Перечисления[ВидПеречисления][ТекЗначение.Имя];
            Прервать;
        КонецЕсли;
    КонецЦикла;

    Возврат

ЗначениеПеречисления;

КонецФункции

Чтобы определить имя значения перечисления заданное в конфигурации, имея значение типа ПеречислениеСсылка, необходимо найти объект метаданных и получить его имя.

Метод Метаданные объекта ПеречислениеСсылка, как и у других аналогичных типов, выдает объект метаданных перечисления, а не значения перечисления.

Поиск объекта метаданных значения перечисления может быть выполнен по индексу значения перечисления, полученного у менеджера перечисления.

Например:

ЗначениеПеречисления = Перечисления.ВидыКонтрагентов.Организация;
ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя;
ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления);
ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя;

Добавить комментарий