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

- Главная

- 1С Предприятие

- Программирование 1С

- 1C. Перечисление в запросе.
1C. Перечисление в запросе.
Обращаемся к перечислению в запросе.
Для того чтобы обратиться к значению перечисления в запросе, нужно использовать такую конструкцию:
Перечисление в запросе 1С
В запросе значение перечисления задается через функцию Значение().
Обратите внимание, что в запросе наименование объекта метаданных используется в единственном числе: «Перечислен ие «
Пустое (не выбранное) значение:
Системное перечисление получается аналогично, но без указания «Перечисление»:
А не в запросе?
В коде модулей получить значение можно двумя способами:
Второй более универсальный, т.к. выполняется и &НаКлиенте . Первоначальный вызов значение выполняется медленнее, далее — кэшируется системой.
В 8.1 доступен только первый вариант.
Поведение Максимум() в запросе с перечислением
Если взять Минимум или Максимум от значения перечисления, запрос показывает стабильный, но не понятный результат:
- не по порядку
- не по наименованию
- не по длине имени
- скорее всего по внутреннему уид значения, которое нам недоступно простыми средствами, тем более в запросе
Задача
Есть перечисление со значениями

Необходимо в запросе получать максимальное или минимальное значение согласно его порядка
Решение
В данном случае решение усложнено, отсутствием для вас реальных данных, ведь не надо было делать вложенные соединения — порядок можно получить из значения непосредственно
Результат

Газетные объявления содержат больше правды о том, что происходит в стране, чем газетные передовицы.
— Г. Бичер
Перечисления
Перечисления в 1С – это объект метаданных используемый для создания предопределенных значений неизменных с течением времени. Значения перечислений создаются из конфигуратора и их уже нельзя изменить из пользовательского режима.
Например, перечислением может быть:
- пол физического лица (мужской или женский)
- ставка НДС (0%, 10%, 20%)
- тип письма (исходящее, входящее).
Добавление перечислений в конфигурацию на платформе 1С 8.3.
В дереве объектов метаданных на узле “Перечисления” добавим новый объект и назовем его “Softrema_ПолФизическогоЛица”, в поле синоним введем “(Softrema) Пол физического лица”.

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

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

Как получить значение перечисления на клиенте?
Не редко бывают случаи в разработке на 1С, когда нужно написать какое ни будь условие на клиенте в котором участвует значение перечисления. Можно сделать серверную функцию, которая вернет нужное значение, но будет элегантнее, если воспользоваться конструкцией платформы 1С, которая позволит получить значение перечисления на клиенте:
ЗначениеПеречисления = ПредопределенноеЗначение ( «Перечисление. Softrema_ПолФизическогоЛица. Женский» );
Результатом выполнения вернется ссылка на требуемый элемент. Стоит заметить, что использование данного оператора инициирует обращение к серверу.
Как получить значение перечисления на сервере?
Для получения значения перечисления на сервере, нужно обратиться к нему как к любому предопределенному значению объекта 1С:
ЗначениеПеречисления = Перечисления . Softrema_ПолФизическогоЛица . Женский ;
Как получить значение перечисления в запросе 1С?
В некоторых запросах 1С требуется использовать значение перечисления, например, при сравнении или для формирования итогового результата запроса. Что бы подставить значение перечисления в запросе, можно воспользоваться двумя вариантами:
Использование Предопределенных данных конфигурации
Текст запроса может содержать предопределенные данные конфигурации, такие как:
— значения перечислений;
— предопределенные данные:
— справочников;
— планов видов характеристик;
— планов счетов;
— планов видов расчетов;
— пустые ссылки;
— значения точек маршрута бизнес-процессов.
Также текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии.
Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа:
ЗНАЧЕНИЕ(<ПредставлениеЗначения>)
Для системных перечислений <ПредставлениеЗначения> имеет вид:
<ИмяСистемногоПеречистления>.<Значение>
Допустимые имена системных перечислений приведены выше, с перечнем допустимых для каждого из них значений можно ознакомиться в его описании.
Для предопределенных данных конфигурации <ПредставлениеЗначения> имеет вид:
<ТипПредопределенногоЗначения>.<ИмяОбъектаМетаданных>.<Значение>
<ТипПредопределенногоЗначения> может быть:
— Справочник (Catalog);
— ПланВидовХарактеристик (ChartOfCharacteristicTypes);
— ПланСчетов (ChartOfAccounts);
— ПланВидовРасчета (ChartOfCalculationTypes);
— Перечисление (Enum).
В качестве <ИмяОбъектаМетаданных> указывается имя объекта метаданных, как оно задано в конфигураторе.
Для определенных в конфигурации перечислений <Значение> указывается как имя соответствующего объекта метаданных типа ЗначаниеПеречисления. Для всех остальных типов предопределенных значений <Значение> указывается как имя предопределенного элемента данных, как оно указано в конфигураторе, или ПустаяСсылка (EmptyRef) для указания пустой ссылки.
Для точек маршрутов бизнес-процессов <ПредставлениеЗначения> имеет вид:
БизнесПроцесс.<ИмяОбъектаМетаданных>.Точка.<ИмяТочкиМаршрута>.
Ниже приведены несколько фрагментов запросов, поясняющих использование предопределенных данных в запросах:
Код 1C v 8.х