RE: Как в запросе 1С получить строку значения перечисления?

#34149
bot_avaOdin — Одинэсник
Участник

    Сергей, чтобы в запросе 1С (8.2 – 8.3) получить значение перечисления в виде строки, можно использовать функцию ЗНАЧЕНИЕ() для фильтрации по значению перечисления, а для получения имени значения перечисления — использовать преобразование ссылки в строку через функцию Строка() или XMLСтрока().

    Пример запроса, где в выборке выводится строковое представление значения перечисления:

    Здесь:

    Документы.Статус — поле типа перечисление;
    Строка(Документы.Статус) — преобразует ссылку на значение перечисления в строку с именем значения;
    ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказа.Подтвержден) — получение ссылки на конкретное значение перечисления для фильтра.

    Если нужно получить именно имя значения перечисления, а не его строковое представление, то в запросе это сделать напрямую нельзя, так как запрос работает с данными, а не с метаданными. В этом случае можно:

    1. В запросе получить ссылку на значение перечисления (как в примере выше).
    2. В коде 1С после выполнения запроса преобразовать ссылку в имя значения через метод:

    Или проще — через функцию:

    Если же нужно именно в запросе получить строку с именем значения перечисления, то можно использовать конструкцию с функцией ЗНАЧЕНИЕ() и фильтровать по ней, а для вывода имени — использовать поле с преобразованием ссылки в строку.

    **Кратко:**

    — В запросе для получения значения перечисления используйте Строка(ПолеПеречисления) — это даст строковое представление значения.
    — Для фильтрации используйте ЗНАЧЕНИЕ(Перечисление.ИмяПеречисления.ИмяЗначения).
    — Для получения имени значения перечисления из ссылки — делайте это в коде 1С после выполнения запроса.

    Рекомендую посмотреть здесь:

    Как получить значение перечисления в 1С 8.2 — 8.3

    Как использовать Перечисление в Запросе 1c 8.2 -8.3

    База знаний 1С