В запросе значение перечисления задается через функцию Значение().
Обратите внимание, что в запросе наименование объекта метаданных используется в единственном числе: “Перечисление“
Например:
ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ПолФизическихЛиц.Мужской) КАК Поле
Пустое (не выбранное) значение:
ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ПолФизическихЛиц.ПустаяСсылка) КАК Поле
Системное перечисление получается аналогично, но без указания “Перечисление”:
ВЫБРАТЬ ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК Поле
А не в запросе?
В коде модулей получить значение можно двумя способами:
Знач = Перечисления.ПолФизическихЛиц.Мужской;
//или
Знач = ПредопределенноеЗначение("Перечисление.ПолФизическихЛиц.Мужской");
Второй более универсальный, т.к. выполняется и &НаКлиенте. Первоначальный вызов значение выполняется медленнее, далее – кэшируется системой.
В 8.1 доступен только первый вариант.
Поведение Максимум() в запросе с перечислением
Если взять Минимум или Максимум от значения перечисления, запрос показывает стабильный, но не понятный результат:
- не по порядку
- не по наименованию
- не по длине имени
- скорее всего по внутреннему уид значения, которое нам недоступно простыми средствами, тем более в запросе
Задача
Есть перечисление со значениями
Необходимо в запросе получать максимальное или минимальное значение согласно его порядка
Решение
В данном случае решение усложнено, отсутствием для вас реальных данных, ведь не надо было делать вложенные соединения – порядок можно получить из значения непосредственно
ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ВидыСтраховыхПродуктов.Каско) КАК Поле ПОМЕСТИТЬ Перечисления ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ВидыСтраховыхПродуктов.ОСАГО) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ВидыСтраховыхПродуктов.ВЗР) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ВидыСтраховыхПродуктов.ГО) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ВидыСтраховыхПродуктов.ОПО) ; ВЫБРАТЬ ОценкаМин.Ссылка как МинПоПорядку, Влож.МинСтандарт, ОценкаМакс.Ссылка как МаксПоПорядку, Влож.МаксСтандарт ИЗ (ВЫБРАТЬ //Определяем максимум для значений выборки МИНИМУМ(перечисления.Порядок) КАК Мин, МАКСИМУМ(перечисления.Порядок) КАК Макс, МИНИМУМ(перечисления.Поле) КАК МинСтандарт, МАКСИМУМ(перечисления.Поле) КАК МаксСтандарт ИЗ (ВЫБРАТЬ //определяем порядок для каждого значения Перечисления.Поле КАК Поле, ВидыСтраховыхПродуктов.Порядок КАК Порядок ИЗ Перечисления КАК Перечисления ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ВидыСтраховыхПродуктов КАК ВидыСтраховыхПродуктов ПО Перечисления.Поле = ВидыСтраховыхПродуктов.Ссылка ) КАК перечисления) КАК Влож //По определенным максимумам определяем нужное значение ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ВидыСтраховыхПродуктов КАК ОценкаМакс ПО Влож.Макс = ОценкаМакс.Порядок ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.ВидыСтраховыхПродуктов КАК ОценкаМин ПО Влож.Мин = ОценкаМин.Порядок
Результат
Фараоны рекламировали себя при помощи пирамид