Тип встроенного языка, порождаемый элементом проекта вида «Перечисление»

После того, как вы добавили в проект перечисление и дали ему имя, «1С:Шина» создаст один тип встроенного языка. Имя этого типа совпадает с именем вашего перечисления.

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

Тип «имя-перечисления»

Тип имя-перечисления доступен и на сервере и на клиенте.

Он предоставляет доступ к элементам перечисления, они доступны как значения этого типа (по имени типа и имени элемента). Например, если в проекте есть перечисление СпособыУведомления, которое имеет элементы SMS, Push, EMail и НеУведомлять, то обращение к одному из его элементов будет выглядеть следующим образом:

// Получить элемент перечисления «СпособыУведомления»
пер СпособУведомления = СпособыУведомления.SMS

Модуль элемента перечисления

В проекте модуль, расширяющий тип имя-перечисления, называется модулем элемента перечисления. Он может исполняться и на сервере, и на клиенте.

Вы можете расширить тип имя-перечисления, добавив в этот модуль собственные публичные методы.

Например, заказы имеют фиксированный жизненный цикл и переходят из одного состояния в другое при выполнении определенных условий. Эти состояния содержатся в перечислении СостояниеЗаказов: Открыт, В работе, Выполнен. Алгоритм вы можете описать в методе, который будет возвращать новое состояние заказа на основе анализа его текущего состояния и данных, которые есть в приложении:

@ВПроекте
метод СледующееСостояние(): СостояниеЗаказов

    пер ТекущееСостояние = этот

    /* Алгоритм, который определяет следующее состояние заказа
       на основании текущего состояния заказа и данных приложения */
    ...
	
    возврат СледующееСостояние
;

Этот метод будет доступен в других модулях:

// Вызов собственного метода перечисления «СостояниеЗаказов»
// СостояниеЗаказа - реквизит, в котором содержится текущее состояние заказа
СостояниеЗаказа = СостояниеЗаказа.СледующееСостояние()