Представляет собой ссылку на значение перечисления. Используется для ссылки на значение перечисления в реквизитах объектов базы данных и переменных встроенного языка. Может быть создан с использованием функциональной формы оператора Новый. Например, ВидыТоваров = Новый(Тип("ПеречислениеСсылка.ВидыТоваров"));
Полное описание, параметры и ограничения
ПеречислениеСсылка.<Имя перечисления> (EnumRef.<Enumeration name>)
ПеречислениеСсылка.<Имя перечисления> (EnumRef.<Enumeration name>)
Доступен, начиная с версии 8.0.
Методы:
Метаданные (Metadata)
Пустая (IsEmpty)
Описание:
Представляет собой ссылку на значение перечисления. Используется для ссылки на значение перечисления в реквизитах объектов базы данных и переменных встроенного языка.
Может быть создан с использованием функциональной формы оператора Новый.
Например, ВидыТоваров = Новый(Тип("ПеречислениеСсылка.ВидыТоваров"));
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/enterprise/current-config}. Имя типа XDTO: ПеречислениеСсылка.<Имя перечисления>.
См. также:
ПеречислениеМенеджер.<Имя перечисления>, свойство <Имя значения>
ПеречислениеМенеджер.<Имя перечисления>, метод ПустаяСсылка
ПеречислениеМенеджер.<Имя перечисления>, метод Индекс
Расширение формы списка перечисления, свойство ПараметрТекущаяСтрока
ПеречислениеМенеджер.<Имя перечисления>, метод Получить
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Выбрать типизированный статус в полностью созданном поле формы
Список для выбора получаем от менеджера перечисления с обязательными параметрами. В реквизите формы хранится значение перечисления, не подпись.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу с именем корня конфигурации Учебная85. Не меняйте рабочие конфигурации ради этого примера.
Перечисления → Добавить: УчебныйСтатус, синоним Учебный статус. Значения в порядке Черновик, Готов, Отменен; синонимы соответственно Черновик, Готов к проверке, Отменён.
Модуль менеджера оставьте пустым, формы/макеты не добавляйте. Обновите конфигурацию базы данных.
Код без директив вставляется в тело ВыполнитьПример() Экспорт серверного общего модуля УчебныеЗадачи. Полный модуль формы вставляется отдельно по подготовке формы.
Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.
Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.
В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.
Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Метаданные.Перечисления.Найти("УчебныйСтатус") = Неопределено Тогда
ВызватьИсключение "Подготовьте собственное перечисление УчебныйСтатус";
КонецЕсли;
Новые = Новый Массив;
ТипРеквизита = Новый ОписаниеТипов("ПеречислениеСсылка.УчебныйСтатус");
Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
ЭтаФорма.ИзменитьРеквизиты(Новые);
ЭтаФорма.ЗначениеПримера = Перечисления.УчебныйСтатус.Черновик;
Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "ЗначениеПримера";
Поле.Заголовок = "Учебный статус";
Поле.КнопкаОчистки = Истина;
Поле.РежимВыбораИзСписка = Истина;
ПараметрыВыбора = Новый Структура("Отбор,СтрокаПоиска", Новый Структура, Неопределено);
Список = Перечисления.УчебныйСтатус.ПолучитьДанныеВыбора(ПараметрыВыбора);
Для Каждого Элемент Из Список Цикл
Поле.СписокВыбора.Добавить(Элемент.Значение, Элемент.Представление);
КонецЦикла;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить статус";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Если ЗначениеПримера.Пустая() Тогда
Сообщить("Учебный статус не выбран; ничего не записано.");
Возврат;
КонецЕсли;
Сообщить(ТипЗнч(ЗначениеПримера) = Тип("ПеречислениеСсылка.УчебныйСтатус"));
Сообщить(ЗначениеПримера = Перечисления.УчебныйСтатус.Готов);
Сообщить("Представление: " + Строка(ЗначениеПримера));
КонецПроцедуры
Разбор по шагам
До создания реквизита проверяем собственную учебную конфигурацию и наличие перечисления.
ПолучитьДанныеВыбора получает структуру с Отбор и СтрокаПоиска, даже когда поиск и отбор пустые.
СписокВыбора наполняем типизированными значениями и их представлениями. Начальное значение Черновик задано явно.
КнопкаОчистки возвращает пустое значение перечисления, которое обрабатывается отдельной веткой.
Проверяем тип и сравниваем с конкретным значением Готов, не с текстом подписи.
Как проверить результат
Выберите Готов к проверке: оба сравнения Истина, представление Готов к проверке.
Выберите Черновик: проверка типа Истина, сравнение с Готов Ложь — это ожидаемо.
Очистите поле: сообщение о невыбранном статусе, обращений к базе записи нет.
Ожидаемый результат
Рабочее поле выбора с реальным типом перечисления и корректной обработкой пустого состояния.
На что обратить внимание
Это не универсальная строковая выпадающая коллекция: реквизит имеет конкретный тип учебной конфигурации.
Представления списка могут зависеть от языка интерфейса.
Изменение поля относится только к памяти формы, не к статусам рабочих заказов.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Построить учебный словарь имён и синонимов перечисления
Описание значений метаданных отличается от ПеречислениеСсылка. По имени описания получаем типизированное значение.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте НОВУЮ пустую файловую учебную базу с именем корня конфигурации Учебная85. Не меняйте рабочие конфигурации ради этого примера.
Перечисления → Добавить: УчебныйСтатус, синоним Учебный статус. Значения в порядке Черновик, Готов, Отменен; синонимы соответственно Черновик, Готов к проверке, Отменён.
Модуль менеджера оставьте пустым, формы/макеты не добавляйте. Обновите конфигурацию базы данных.
Код без директив вставляется в тело ВыполнитьПример() Экспорт серверного общего модуля УчебныеЗадачи. Полный модуль формы вставляется отдельно по подготовке формы.
Если Метаданные.Перечисления.Найти("УчебныйСтатус") = Неопределено Тогда
ВызватьИсключение "Подготовьте собственное перечисление УчебныйСтатус";
КонецЕсли;
Описание = Метаданные.Перечисления.УчебныйСтатус;
Сообщить(Описание.Имя = "УчебныйСтатус");
Сообщить(Описание.Синоним = "Учебный статус");
Сообщить(Описание.Родитель().Имя = "Учебная85");
Сообщить(Описание.ЗначенияПеречисления.Количество() = 3);
Сообщить("Полное имя: " + Описание.ПолноеИмя());
Сообщить("Представление: " + Описание.Представление());
Словарь = Новый ТаблицаЗначений;
Словарь.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка"));
Словарь.Колонки.Добавить("Подпись", Новый ОписаниеТипов("Строка"));
Для Каждого ОписаниеЗначения Из Описание.ЗначенияПеречисления Цикл
СтрокаСловаря = Словарь.Добавить();
СтрокаСловаря.Имя = ОписаниеЗначения.Имя;
СтрокаСловаря.Подпись = ОписаниеЗначения.Синоним;
Значение = Перечисления.УчебныйСтатус[ОписаниеЗначения.Имя];
Сообщить(ОписаниеЗначения.Родитель() = Описание);
Сообщить("Имя: " + ОписаниеЗначения.ПолноеИмя());
Сообщить("Подпись: " + ОписаниеЗначения.Представление());
Сообщить("Значение: " + Строка(Значение));
КонецЦикла;
Найденная = Словарь.Найти("Готов", "Имя");
Сообщить(Найденная.Подпись = "Готов к проверке");Разбор по шагам
Метаданные.Перечисления описывает схему перечисления, не хранит текущий статус документа.
ЗначенияПеречисления содержит описания каждого элемента с Имя/Синоним.
Динамическое обращение менеджер[Имя] получает реальное значение по имени метаданных.
Родитель описания значения — перечисление, а родитель перечисления — корень конфигурации.
Словарь создаётся в памяти и может быть полезен для учебного сопоставления, но не заменяет согласованный контракт внешнего API.
Как проверить результат
Начальные четыре проверки Истина, для каждого значения проверка родителя Истина.
Финальная подпись имени Готов — Готов к проверке.
Ни перечень значений схемы, ни рабочие данные не изменяются.
Ожидаемый результат
Различены имя схемы, локализуемая подпись и типизированное значение перечисления.
На что обратить внимание
У описания значения нет метода Пустая: он принадлежит ссылке перечисления.
Нельзя добавлять значения в метаданные через Словарь.Добавить; это всего лишь ТаблицаЗначений.
Изменение имени метаданных — изменение схемы, поэтому внешние контракты нужно версионировать отдельно.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.