Как получить значение перечисления
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Полный синтаксис (нажмите, чтобы раскрыть)
Перечисления
Описание:
Перечисления являются средством для работы с элементами данных, список возможных значений которых жестоко задан в данной прикладной задаче. Ссылки на элементы перечисления могут быть использованы в реквизитах объектов конфигурации.
Например, в конфигурации можно задать перечисление «ВидыКонтрагентов», определяющее допустимые виды контрагентов, со значениями «Организация» и «ФизЛицо».
Набор значений перечисления задается при конфигурировании.
Оглавление (нажмите, чтобы раскрыть)
- Как вывести все значения перечисления
- Как открыть форму списка значений перечисления
- Как открыть форму выбора значений перечисления
- Скачать и выполнить эти примеры на компьютере
/// Как вывести все значения перечисления в 1с 8.3, 8.2 &НаСервере Процедура КакВывестиВсеЗначенияПеречисленияНаСервере() ВременаГода = Перечисления.ВременаГода; // первый способ Для Каждого Время Из ВременаГода Цикл Сообщить(Время); КонецЦикла; // второй способ Для Индекс = 0 По ВременаГода.Количество() - 1 Цикл Сообщить(ВременаГода.Получить(Индекс)); КонецЦикла; КонецПроцедуры /// Как открыть форму списка значений перечисления в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьСписокЗначенийПеречисления(Команда) ОткрытьФорму("Перечисление.ВременаГода.ФормаСписка"); КонецПроцедуры /// Как открыть форму выбора значений перечисления в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуВыбораЗначенияПеречисления(Команда) ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораПеречисления", ЭтотОбъект); ОткрытьФорму("Перечисление.ВременаГода.ФормаВыбора". ОповещениеОЗакрытии); КонецПроцедуры &НаКлиенте Процедура ПослеВыбораПеречисления(РезультатЗакрытия, ДополнительныеПараметры) Экспорт Если ЗначениеЗаполнено(РезультатЗакрытия) Тогда Сообщить(РезультатЗакрытия); КонецЕсли; КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере
Перечисления в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Работа с перечислениями
Перечисление — это средство работы с элементами данных, список возможных значений которых жёстко задан в конфигурации и при выполнении задачи не может быть изменён. Так, например, для перечисления «Виды контрагентов» может быть задан следующий список значений:
- Физическое лицо ;
- Дочернее общество ;
- Зависимое общество ;
- Прочая организация .
В отличие от справочника, списки значений в перечислении задаются исключительно в процессе их создания в Конфигураторе и при выполнении задачи не могут быть изменены.
Создание и редактирование перечислений в Конфигураторе
Для создания нового перечисления в Конфигураторе необходимо щёлкнуть правой кнопкой мыши по значку «Перечисления» или значку любого конкретного перечисления и в выпадающем контекстовом меню выбрать пункт « Новое Перечисление » (см. рис. ниже). Тоже самое можно сделать и через главное меню Конфигуратора, последовательно выбрав пункты « Действия −> Новый элемент ».

Открыть же для редактирования уже созданное в конфигурации перечисление можно выбрав в контекстовом меню пункт « Редактировать » (см. рис. выше) или в главном меню — пункты « Действия −> Редактировать элемент ». При этом на экран будет выведено окно редактирования объекта типа » Перечисление » (см. рис. ниже).
В окне свойств объекта типа » Перечисление » необходимо указать идентификатор перечисления, по которому к перечислению можно будет обращаться в программном коде. В поле «Синоним» можно указать необязательный синоним идентификатора перечисления, который в дальнейшем будет использоваться при создании надписей к полям ввода типа » Перечисление » в различных формах. В поле «Комментарий» можно указать необязательный комментарий, текст которого в дальнейшем может использоваться для вывода всплывающих подсказок.

Для добавления нового значения в перечисление необходимо щёлкнуть по кнопке «Новый» под полем «Значения» (см. рис. выше). При этом на экран будет выведено окошко редактирования свойств нового значения (см. рис. ниже), в котором можно задать идентификатор значения (по идентификатору можно будет обращаться к значению в программном коде), строку-комментарий и экранное представление значения (как оно будет выводиться в полях форм и в списках для выбора).
Обращение к перечислениям из программного кода
Средства языка 1С предоставляют возможность непосредственного доступа к заданным в конфигурации значениям перечислений в любом программном модуле (перечисления принадлежат глобальному контексту задачи). В терминах языка перечисления аналогичны системным константам, то есть идентификаторы перечислений могут размещаться только в правой части оператора присваивания, в выражениях, быть параметрами процедур, функций или методов в любом программном модуле. При этом идентификатор и значение перечисления записываются через точку после ключевого слова «Перечисление» (англоязычный синоним — «Enum»), то есть полное имя значения перечисления записывается следующим образом:
Перечисление.ИмяПереч>.ЗначениеПереч>
- < ИмяПереч >— идентификатор вида перечисления, как он записан в Конфигураторе;
- < ЗначениеПереч >— идентификатор значения перечисления, как он записан в Конфигураторе.
Пример обращения к значению перечисления в программном коде:
Если Док.Сотрудник.Тип = Перечисление.ТипСотрудника.Штатный Тогда Льготы = 1; Иначе Льготы = 0; КонецЕсли;
Методы перечислений
Объект типа » Перечисление » является частью глобального контекста системы «1С:Предприятие» и обладает целым рядом методов.
Получить доступ к перечислению конкретного вида по его идентификатору (т.е. получить ссылку на конкретный объект типа » Перечисление » ) позволяет метод ПолучитьАтрибут() . Англоязычный синоним имени метода — GetAttrib() .
ПолучитьАтрибут(ИмяПеречисления>)
где < ИмяПеречисления >— строковое выражение, содержащее идентификатор вида перечисления, как он задан в Конфигураторе.
Для i=1 По Перечисление.ПолучитьАтрибут(ВидПеречисления).КоличествоЗначений() Цикл СписокЗначенийПеречисления.НоваяСтрока(); СписокЗначенийПеречисления.Значение = Перечисление.ПолучитьАтрибут(ВидПеречисления).ЗначениеПоНомеру(i); КонецЦикла;
Определить общее количество значений в данном виде перечисления позволяет метод КоличествоЗначений() (англоязычный синоним — Count() ). Параметры у метода отсутствуют.
// отобразим все значения перечисления Всего = Перечисление.ВидыТоваров.КоличествоЗначений(); Для Ном = 1 По Всего Цикл Сообщить(Перечисление.ВидыТоваров.ЗначениеПоНомеру(Ном)); КонецЦикла;
Получить значение перечисления, соответствующее указанному номеру позиции в списке , позволяет метод ЗначениеПоНомеру() (англоязычный синоним — ValueByIndex() ). Возвращаемым значением метода является строковое представление значения перечисления.
ЗначениеПоНомеру(Номер>)
где < Номер >— числовое выражение, содержащее номер позиции значения перечисления, заданный в Конфигураторе. Нумерация позиций значений начинается с 1.
Пример использования метода приведён выше.
Получить строковое представление значения перечисления по идентификатору позволяет метод ЗначениеПоИдентификатору() (англоязычный синоним — ValueByIdentifier() ). Если указанный идентификатор в перечислении не найден, возвращается пустое значение.
ЗначениеПоИдентификатору(Идентификатор>)
где < Идентификатор >— строковое выражение, содержащее идентификатор значения перечисления, как он задан в Конфигураторе.
Пример использования метода:
ЗначениеДляВыборки = Перечисление.ВидыТоваров.ЗначениеПоИдентификатору("Продукты");
Методы значений перечислений
Значения перечислений также обладают целым рядом методов. Данные методы используются преимущественно при работе с реквизитами справочников, документов и элементами диалогов, имеющими тип » Перечисление » .
Определить, выбрано ли значение реквизита типа » Перечисление » , позволяет метод Выбран() (англоязычный синоним — Selected() ). Он не имеет параметров и возвращает число 1, если значение реквизита выбрано, или 0, если значение реквизита не выбрано.
// ВыбКатТовара - реквизит диалога типа "Перечисление.КатегорииТоваров" Если ВыбКатТовара.Выбран() = 0 Тогда // Если категория товара в диалоге не выбрана, // то формируем отчет без условий Заголовок1 = "По всем категориям товара."; Иначе // Если в диалоге выбрана категория товара // то формируем отчет только по выбранной категории Заголовок1 = "Отчет по категории: " + ВыбКатТовара; КонецЕсли;
Получить порядковый номер значения в перечислении позволяет метод ПорядковыйНомер() (англоязычный синоним — Number() ). Параметры у метода отсутствуют.
// отобразим порядковый номер значения перечисления Сообщить(Перечисление.КатегорииТоваров.Продовольственные.ПорядковыйНомер());
Получить идентификатор значения перечисления позволяет метод Идентификатор() (англоязычный синоним — Identifier() ). Метод не имеет параметров, а его возвращаемым значением является строка, содержащая идентификатор значения, как он задан в Конфигураторе.
// отобразим все идентификаторы значений перечисления Всего = Перечисление.КатегорииТоваров.КоличествоЗначений(); Для Ном=1 По Всего Цикл КатТов = Перечисление.КатегорииТоваров.ЗначениеПоНомеру(Ном); Сообщить(КатТов.Идентификатор()); КонецЦикла;
Получить название (идентификатор) вида перечисления , используемого в реквизите диалогового окна, позволяет метод Вид() (англоязычный синоним — Kind() ). Параметры у метода отсутствуют, а возвращаемым значением является строка, содержащая идентификатор вида перечисления.
// ИзмерениеТовара – реквизит диалога ВидПереч = ИзмерениеТовара.Вид();
Получить представление вида (синоним) перечисления , используемого в реквизите диалогового окна, позволяет метод ПредставлениеВида() (англоязычный синоним — KindPresent() ). Параметры у метода отсутствуют, а возвращаемым значением является строка, содержащая синоним вида (если синоним не указан, возвращается идентификатор).
// ИзмерениеТовара – реквизит диалога Представление = ИзмерениеТовара.ПредставлениеВида();
Другие статьи по схожей тематике
- Объект » СписокЗначений «
- Объект » ТаблицаЗначений «
- Работа со справочниками в 1С
- Работа с константами
- Работа с журналами документов
- Работа с формами
Перечисления
Добавление перечислений в конфигурацию на платформе 1С 8.3.
В дереве объектов метаданных на узле “Перечисления” добавим новый объект и назовем его “Softrema_ПолФизическогоЛица”, в поле синоним введем “(Softrema) Пол физического лица”.

Для добавления значений перечисления перейдем на вкладку “Данные” и добавим два значения:

- Мужской
- Женский
На этом наше перечисление готово. Что бы продемонстрировать работу созданного объекта, добавим в нашу конфигурацию справочник с одним реквизитом, тип реквизита выберем “Перечисление — Softrema_ПолФизическогоЛица”.

Запустим отладку по кнопке “F5” и выберем добавленный справочник. По кнопке “Создать” откроется окошко с наименованием справочника, а так же с добавленным ранее перечислением “(Softrema) Пол физического лица” и значениями: “мужской” и “женский”.

Как получить значение перечисления на клиенте?
Не редко бывают случаи в разработке на 1С, когда нужно написать какое ни будь условие на клиенте в котором участвует значение перечисления. Можно сделать серверную функцию, которая вернет нужное значение, но будет элегантнее, если воспользоваться конструкцией платформы 1С, которая позволит получить значение перечисления на клиенте:
ЗначениеПеречисления = ПредопределенноеЗначение ( «Перечисление. Softrema_ПолФизическогоЛица. Женский» );
Результатом выполнения вернется ссылка на требуемый элемент. Стоит заметить, что использование данного оператора инициирует обращение к серверу.
Как получить значение перечисления на сервере?
Для получения значения перечисления на сервере, нужно обратиться к нему как к любому предопределенному значению объекта 1С:
ЗначениеПеречисления = Перечисления . Softrema_ПолФизическогоЛица . Женский ;
Как получить значение перечисления в запросе 1С?
В некоторых запросах 1С требуется использовать значение перечисления, например, при сравнении или для формирования итогового результата запроса. Что бы подставить значение перечисления в запросе, можно воспользоваться двумя вариантами:
- передать значение в параметрах
- использовать служебную конструкцию “Значение”.
Передача значения в параметрах
Запрос = Новый Запрос ( «ВЫБРАТЬ
| СотрудникиКомпании.Ссылка КАК Ссылка
|ИЗ
| Справочник.СотрудникиКомпании КАК СотрудникиКомпании
|ГДЕ
| СотрудникиКомпании.ПолФизическогоЛица = &ПолФизическогоЛица» );
Запрос . Параметры . Вставить ( «ПолФизическогоЛица» , Перечисления . Softrema_ПолФизическогоЛица . Женский );
Использование служебной конструкции “Значение”
Запрос = Новый Запрос ( «ВЫБРАТЬ
| СотрудникиКомпании.Ссылка КАК Ссылка
|ИЗ
| Справочник.СотрудникиКомпании КАК СотрудникиКомпании
|ГДЕ
| СотрудникиКомпании.ПолФизическогоЛица = ЗНАЧЕНИЕ(Перечисление. Softrema_ПолФизическогоЛица.Женский)» );
Вернуться назад
IncludeComponent(«bitrix:sender.subscribe», «», array( «SET_TITLE» => «N» ));?>
—> SOFTREMA ™ (СОФТРЕМА ™) является зарегистрированной товарной маркой

Почему Мы?
- Партнерский статус 1С
- Сертификаты и настоящие отзывы
- Опытные сотрудники
- Гарантия на работы
- Желание помочь клиенту
- Индивидуальный подход
- Доступные цены
Наш Telegram бот

Поможет заказать услугу или купить программное обеспечение.
Как получить значение перечисления в 1С 8.2 – 8.3
Альтернативный способ получения имени значения перечисления:
ИмяЗначенияПеречисления = XMLстрока ( СсылкаНаПеречисление ) ;
Полезный прием для работы с перечислениями при COM соединении с другой ИБ 8.0 (например при обмене данных):
Надо передать ссылку на перечисление:
V8 — COM объект «V8.Application» — ИБ внешнего соединения
СсылкаНаПеречислениеCOM — COM объект — ссылка на перечисление в ИБ внешнего соединения
ИмяЗначенияПеречисленияCOM = V8 . XMLString ( СсылкаНаПеречислениеCOM ) ;
ПредставлениеПеречисленияCOM = V8 . String ( СсылкаНаПеречислениеCOM ) ; //синоним
ИмяПеречисленияCOM = СсылкаНаПеречислениеCOM . Метаданные ( ) . Имя ;
СсылкаНаПеречисление = XMLЗначение ( Тип ( «ПеречислениеСсылка.» +ИмяПеречисленияCOM ) ,
ИмяЗначенияПеречисленияCOM ) ;
Разумеется имена перечислений в обоих базах должны быть идентичными.
Пример получения значений перечисления запросом
Запрос= новый запрос ;
запрос . Текст= «ВЫБРАТЬ
| ВидыОС.Ссылка,
| ВидыОС.Порядок КАК Индекс
| Перечисление.ВидыОС КАК ВидыОС» ;
Выборка=Запрос . Выполнить ( ) . Выбрать ( ) ;
Пока Выборка . Следующий ( ) цикл
Сообщить ( «» +Выборка . ссылка+ » : » +Выборка . индекс ) ;
конецЦикла ;
//Пример для отбора на стороне COMсервера:
Отбор = v8 . Новый ( «Структура» ) ;
МД=v8 . XMLTypeOf ( v8 . Перечисления [ ИмяПеречисления ] . ПустаяСсылка ( ) ) ;
Отбор . Вставить ( «ВидДоговора» , v8 . XMLЗначение ( v8 . FromXMLType ( МД ) , ИмяЗначенияПеречисления ) ) ;
Если Вы хотите больше узнать о программировании в 1С, тогда регистрируйтесь на курс: 1С 8.3 Старт >>>
Оставьте ответ
Для отправки комментария вам необходимо авторизоваться.
Регистрация в один клик через соцсети
Метки
[an error occurred while processing the directive]
Ваш сеанс будет отключен через 60 минут
Ваш личный «Одинесник» в телеграмм!
Автономный бот “Chat with RTX” с обучением в 1С
1C_SAFEARCHIVE V1.1 – Видео обзор
1C_SafeArchive v1.2 – безопасное резервное копирование файловых баз 1С
1С Предприятие на веб сервере Apache (+ Настройка MPM Prefork)