ПеречислениеСсылка.<Имя перечисления>

Типы · <Enumeration name>

Представляет собой ссылку на значение перечисления. Используется для ссылки на значение перечисления в реквизитах объектов базы данных и переменных встроенного языка. Может быть создан с использованием функциональной формы оператора Новый. Например, ВидыТоваров = Новый(Тип("ПеречислениеСсылка.ВидыТоваров"));

Полное описание, параметры и ограничения

ПеречислениеСсылка.<Имя перечисления> (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.

Методическая информация

Практические примеры

Выбрать типизированный статус в полностью созданном поле формы

Список для выбора получаем от менеджера перечисления с обязательными параметрами. В реквизите формы хранится значение перечисления, не подпись.

Где и как запускать

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу с именем корня конфигурации Учебная85. Не меняйте рабочие конфигурации ради этого примера.

  2. Перечисления → Добавить: УчебныйСтатус, синоним Учебный статус. Значения в порядке Черновик, Готов, Отменен; синонимы соответственно Черновик, Готов к проверке, Отменён.

  3. Модуль менеджера оставьте пустым, формы/макеты не добавляйте. Обновите конфигурацию базы данных.

  4. Код без директив вставляется в тело ВыполнитьПример() Экспорт серверного общего модуля УчебныеЗадачи. Полный модуль формы вставляется отдельно по подготовке формы.

  5. Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.

  6. Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.

  7. В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.

  8. Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Метаданные.Перечисления.Найти("УчебныйСтатус") = Неопределено Тогда
        ВызватьИсключение "Подготовьте собственное перечисление УчебныйСтатус";
    КонецЕсли;
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("ПеречислениеСсылка.УчебныйСтатус");
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = Перечисления.УчебныйСтатус.Черновик;
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Учебный статус";
    Поле.КнопкаОчистки = Истина;
    Поле.РежимВыбораИзСписка = Истина;
    ПараметрыВыбора = Новый Структура("Отбор,СтрокаПоиска", Новый Структура, Неопределено);
    Список = Перечисления.УчебныйСтатус.ПолучитьДанныеВыбора(ПараметрыВыбора);
    Для Каждого Элемент Из Список Цикл
        Поле.СписокВыбора.Добавить(Элемент.Значение, Элемент.Представление);
    КонецЦикла;

    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Проверить статус";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если ЗначениеПримера.Пустая() Тогда
        Сообщить("Учебный статус не выбран; ничего не записано.");
        Возврат;
    КонецЕсли;
    Сообщить(ТипЗнч(ЗначениеПримера) = Тип("ПеречислениеСсылка.УчебныйСтатус"));
    Сообщить(ЗначениеПримера = Перечисления.УчебныйСтатус.Готов);
    Сообщить("Представление: " + Строка(ЗначениеПримера));
КонецПроцедуры

Разбор по шагам

  1. До создания реквизита проверяем собственную учебную конфигурацию и наличие перечисления.

  2. ПолучитьДанныеВыбора получает структуру с Отбор и СтрокаПоиска, даже когда поиск и отбор пустые.

  3. СписокВыбора наполняем типизированными значениями и их представлениями. Начальное значение Черновик задано явно.

  4. КнопкаОчистки возвращает пустое значение перечисления, которое обрабатывается отдельной веткой.

  5. Проверяем тип и сравниваем с конкретным значением Готов, не с текстом подписи.

Как проверить результат

  1. Выберите Готов к проверке: оба сравнения Истина, представление Готов к проверке.

  2. Выберите Черновик: проверка типа Истина, сравнение с Готов Ложь — это ожидаемо.

  3. Очистите поле: сообщение о невыбранном статусе, обращений к базе записи нет.

Ожидаемый результат

Рабочее поле выбора с реальным типом перечисления и корректной обработкой пустого состояния.

На что обратить внимание

  1. Это не универсальная строковая выпадающая коллекция: реквизит имеет конкретный тип учебной конфигурации.

  2. Представления списка могут зависеть от языка интерфейса.

  3. Изменение поля относится только к памяти формы, не к статусам рабочих заказов.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Построить учебный словарь имён и синонимов перечисления

Описание значений метаданных отличается от ПеречислениеСсылка. По имени описания получаем типизированное значение.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу с именем корня конфигурации Учебная85. Не меняйте рабочие конфигурации ради этого примера.

  2. Перечисления → Добавить: УчебныйСтатус, синоним Учебный статус. Значения в порядке Черновик, Готов, Отменен; синонимы соответственно Черновик, Готов к проверке, Отменён.

  3. Модуль менеджера оставьте пустым, формы/макеты не добавляйте. Обновите конфигурацию базы данных.

  4. Код без директив вставляется в тело ВыполнитьПример() Экспорт серверного общего модуля УчебныеЗадачи. Полный модуль формы вставляется отдельно по подготовке формы.

Если Метаданные.Перечисления.Найти("УчебныйСтатус") = Неопределено Тогда
    ВызватьИсключение "Подготовьте собственное перечисление УчебныйСтатус";
КонецЕсли;
Описание = Метаданные.Перечисления.УчебныйСтатус;
Сообщить(Описание.Имя = "УчебныйСтатус");
Сообщить(Описание.Синоним = "Учебный статус");
Сообщить(Описание.Родитель().Имя = "Учебная85");
Сообщить(Описание.ЗначенияПеречисления.Количество() = 3);
Сообщить("Полное имя: " + Описание.ПолноеИмя());
Сообщить("Представление: " + Описание.Представление());
Словарь = Новый ТаблицаЗначений;
Словарь.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка"));
Словарь.Колонки.Добавить("Подпись", Новый ОписаниеТипов("Строка"));
Для Каждого ОписаниеЗначения Из Описание.ЗначенияПеречисления Цикл
    СтрокаСловаря = Словарь.Добавить();
    СтрокаСловаря.Имя = ОписаниеЗначения.Имя;
    СтрокаСловаря.Подпись = ОписаниеЗначения.Синоним;
    Значение = Перечисления.УчебныйСтатус[ОписаниеЗначения.Имя];
    Сообщить(ОписаниеЗначения.Родитель() = Описание);
    Сообщить("Имя: " + ОписаниеЗначения.ПолноеИмя());
    Сообщить("Подпись: " + ОписаниеЗначения.Представление());
    Сообщить("Значение: " + Строка(Значение));
КонецЦикла;
Найденная = Словарь.Найти("Готов", "Имя");
Сообщить(Найденная.Подпись = "Готов к проверке");

Разбор по шагам

  1. Метаданные.Перечисления описывает схему перечисления, не хранит текущий статус документа.

  2. ЗначенияПеречисления содержит описания каждого элемента с Имя/Синоним.

  3. Динамическое обращение менеджер[Имя] получает реальное значение по имени метаданных.

  4. Родитель описания значения — перечисление, а родитель перечисления — корень конфигурации.

  5. Словарь создаётся в памяти и может быть полезен для учебного сопоставления, но не заменяет согласованный контракт внешнего API.

Как проверить результат

  1. Начальные четыре проверки Истина, для каждого значения проверка родителя Истина.

  2. Финальная подпись имени Готов — Готов к проверке.

  3. Ни перечень значений схемы, ни рабочие данные не изменяются.

Ожидаемый результат

Различены имя схемы, локализуемая подпись и типизированное значение перечисления.

На что обратить внимание

  1. У описания значения нет метода Пустая: он принадлежит ссылке перечисления.

  2. Нельзя добавлять значения в метаданные через Словарь.Добавить; это всего лишь ТаблицаЗначений.

  3. Изменение имени метаданных — изменение схемы, поэтому внешние контракты нужно версионировать отдельно.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.