Как работать с перечислениями в 1с 8.2 – 8.3

Работаем с перечислениями 1с 8
Иногда требуется по значению синонима найти имя перечисления или имя значения перечисления и преобразовать найденный результат к типу ПеречислениеСсылка. Для решения такой задачи программирования можно предложить варианты функций рассмотренные в данной статье. Рассматривается алгоритмический метод с использованием языка 1С и языка запросов.

Перечисление – объект конфигурации, имеющий значения данных описанное свойствами Имя и Синоним. Имя используется в алгоритмической части конфигурации, Синоним – для получения представления при выводе в элементы формы объектов или печатные формы. Другое определение перечисления – это именованные списки значений, задаваемых на этапе конфигурирования.

Как получить имя перечисления по синониму
Алгоритмически можно получить коллекцию перечислений из конфигурации и перебрав их в цикле сравнить значение реквизита синоним с параметром функции вернуть имя перечисления.
Исходный код функции ИмяПеречисленияПоСинониму (СинонимПеречисления):

// Возвращает имя перечисления по известному значению синонима
// Пример пСиснонимПеречисления = "Юр физ лицо" тип строка, 
// возвращаемое значение имя = "ЮрФизЛицо", тип строка
Функция ИмяПеречисленияПоСинониму( пСинонимПеречисления ) Экспорт
    КолекцияПеречислений = Метаданные.Перечисления;
    Для каждого пНайденноеЗначение из КолекцияПеречислений Цикл
        Если пНайденноеЗначение.Синоним = пСинонимПеречисления Тогда
            Возврат пНайденноеЗначение.Имя;
        КонецЕсли;
    КонецЦикла;
Возврат неопределено;
КонецФункции // Имя Перечисления По Синониму

Функция размещена в примере конфигурации к данному разделу в общем модуле “Работа с перечислениями”.
Как получить имя значения перечисления, если известен синоним значения
Если известно перечисление, и известно, что одно из значений имеет известный нам синоним, то перебрав в цикле коллекцию значений перечисления можно получить его имя. Совокупность имени перечисления и имени значения перечисления позволяют получить ссылку на перечисление, которую уже можно применять в качестве значения реквизитов справочников, документов и регистров.
Исходный код функции ИмяЗначенияПеречисленияПоСинониму(ИмяПеречисления, СинонимЗначения):

// Функция возвращает имя реквизита данных перечисления по имени 
// перечисления и синониму его значения
// Принимаемые значения:
// пИмяПеречисления - тип строка. Имя объекта конфигурации "Перечисления"
// пСинонимЗначения - тип строка. Значение свойства Синоним реквизита данных перечисления
// Возвращаемое значение:
// Имя реквизита данных перечисления
Функция ИмяЗначенияПеречисленияПоСинониму( пИмяПеречисления, пСинонимЗначения ) Экспорт
    КолекцияЗначенийПеречисления = Метаданные.Перечисления[пИмяПеречисления].ЗначенияПеречисления;
    Для каждого пНайденноеЗначение из КолекцияЗначенийПеречисления Цикл
        Если пНайденноеЗначение.Синоним = пСинонимЗначения Тогда
            Возврат пНайденноеЗначение.Имя;
        КонецЕсли
    КонецЦикла;
    Возврат неопределено;
КонецФункции // Имя Значения Перечисления По Синониму

Функция размещена в примере конфигурации к данному разделу в общем модуле “Работа с перечислениями”.
Получение ссылки на значение перечисления по имени перечисления и по имени его значения
Если известно имя самого перечисления и имя его значения, то получить ссылку которая будет являться значением, например субконто, можно следующим образом:
ПеречислениеСсылка = Перечисления[пИмяПречисления][пИмяЗначения];
Исходный код функции ПолучитьСсылкуНаЗначениеПеречисления( пИмяПеречисления, пИмяЗначения )

// Возвращает ПеречисленияСсылка по "Имени" перечисления и "Имени" значения
// Пример пИмяПеречисления = "ЮрФизЛицо", пИмяЗначения = "ЮрЛицо", 
// результат: Перечисление ссылка на ЮрФизЛицо.ЮрЛицо
// пИмяПеречисления - тип строка
// пИмяЗначения - тип строка
Функция ПолучитьСсылкуНаЗначениеПеречисления( пИмяПеречисления, пИмяЗначения ) Экспорт
    Попытка
        Возврат Перечисления[пИмяПеречисления][пИмяЗначения];
    исключение
        Сообщить("Ошибка получения ссылки на значение перечисления. " + пИмяПеречисления + " :: " + пИмяЗначения);
        Возврат неопределено;
    КонецПопытки;
КонецФункции // Получить Ссылку На Значение Перечисления

Функция размещена в примере конфигурации к данному разделу в общем модуле “Работа с перечислениями”.
Использование значения перечисления в запросе
Возможность использования перечислений в запросах появилась в версии 8.1.5. В учебной версии 8.1.9.57 она описана во встроенной справке конфигуратора в разделе: 1С:Предприятие -> Встроенный язык -> Работа с запросами -> Язык запросов -> Использование предопределенных данных конфигурации. 
Текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии.
Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа:
ЗНАЧЕНИЕ(<ПредставлениеЗначения>)
Для системных перечислений представление значение имеет вид:
<ИмяСистемногоПеречисления>.<Значение>
Пример запроса может выглядеть следующим образом:

Продолжение статьи доступно только зарегистрированным пользователям!

Зарегистрироваться / Войти

 

Если Вы хотите больше узнать о программировании в 1С, тогда регистрируйтесь на курс: 1С 8.3 Старт >>>



Есть вопросы? пишите в группу Telegram!

Сканируйте и присоединяйтесь к сообществу!