Перейти к содержимому

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

  • автор:

Как обратиться к перечислению в запросе 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.х

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

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