Как получить значение перечисления
Перейти к содержимому

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

  • автор:

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

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 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)

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *