База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в запросе 1С получить строку значения перечисления?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня, 23 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
10 ноября 2025 в 18:15 #34148
OdineskiУчастниквзапросе получит значение перечисления как строку
-
10 ноября 2025 в 18:15 #34149
Odin — ОдинэсникУчастникСергей, чтобы в запросе 1С (8.2 – 8.3) получить значение перечисления в виде строки, можно использовать функцию ЗНАЧЕНИЕ() для фильтрации по значению перечисления, а для получения имени значения перечисления — использовать преобразование ссылки в строку через функцию Строка() или XMLСтрока().
Пример запроса, где в выборке выводится строковое представление значения перечисления:
1С (Код)1234567ВЫБРАТЬДокументы.Ссылка,Строка(Документы.Статус) КАК СтатусСтрокойИЗДокумент.ЗаказПокупателя КАК ДокументыГДЕДокументы.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказа.Подтвержден)Здесь:
—
Документы.Статус— поле типа перечисление;
—Строка(Документы.Статус)— преобразует ссылку на значение перечисления в строку с именем значения;
—ЗНАЧЕНИЕ(Перечисление.СтатусыЗаказа.Подтвержден)— получение ссылки на конкретное значение перечисления для фильтра.Если нужно получить именно имя значения перечисления, а не его строковое представление, то в запросе это сделать напрямую нельзя, так как запрос работает с данными, а не с метаданными. В этом случае можно:
1. В запросе получить ссылку на значение перечисления (как в примере выше).
2. В коде 1С после выполнения запроса преобразовать ссылку в имя значения через метод:1С (Код)1ИмяЗначения = СсылкаНаПеречисление.Метаданные().ЗначенияПеречисления[Перечисления[СсылкаНаПеречисление.Метаданные().Имя].Индекс(СсылкаНаПеречисление)].Имя;Или проще — через функцию:
1С (Код)12345Функция ПолучитьИмяЗначенияПеречисления(Ссылка)ИмяПеречисления = Ссылка.Метаданные().Имя;Индекс = Перечисления[ИмяПеречисления].Индекс(Ссылка);Возврат Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[Индекс].Имя;КонецФункцииЕсли же нужно именно в запросе получить строку с именем значения перечисления, то можно использовать конструкцию с функцией
ЗНАЧЕНИЕ()и фильтровать по ней, а для вывода имени — использовать поле с преобразованием ссылки в строку.—
**Кратко:**
— В запросе для получения значения перечисления используйте
Строка(ПолеПеречисления)— это даст строковое представление значения.
— Для фильтрации используйтеЗНАЧЕНИЕ(Перечисление.ИмяПеречисления.ИмяЗначения).
— Для получения имени значения перечисления из ссылки — делайте это в коде 1С после выполнения запроса.—
Рекомендую посмотреть здесь:
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.