Как создать перечисление в 1с
Клиенты как известно бывают компаниями и частными лицами. Список клиентов содержится в справочнике Контрагенты. Как разбить их на две группы?
Для этого в справочнике контрагентов должен быть реквизит, в котором будут указан один из двух вариантов. Но как сделать так, чтобы значения было только два?
Справочник как перечисление 1С
Допустим, для хранения наших двух значений мы добавим справочник. Назовем его ВидыКлиентов. Мы внесем эти два варианта в справочник.
Задача вроде и выполнена, но пользоваться программисту этим неудобно. Например, захочется определять в тексте программы – что же все-таки выбрано, и как это сделать?
Проверять по коду или наименованию нельзя – пользователь может их изменить. Может быть использовать константу?
Предопределенные значения справочника 1С
В справочниках можно использовать предопределенные значения 1С. Это гарантирует, что они в любом случае будут в справочнике, а также позволяют напрямую обращаться к ним из программы на языке 1С.
Для этого нужно зайти в конфигуратор, найти нужный справочник в списке и правой кнопкой на нем вызвать меню, в котором выбрать пункт Открыть предопределенные значения.

В этом окне мы можем добавить два новых предопределенных значения 1С.
При добавлении мы указываем два названия:
- Которое будет доступно из в тексте программ 1С
- Которое будет видеть пользователь.
Ура! Теперь мы запросто можем использовать их в программе!
Теперь, если пользователь выбрал юр.лицо, то предложим заполнить обязательное поле КПП, а если частный покупатель – то день рождения.
Однако что же делать, если пользователь зайдет в наш справочник, введет туда третий вариант и выберет его?
Перечисления 1С – это объект 1С, который позволяет в конфигураторе задать список предопределенных значений, которые:
- Сможет использовать пользователь, выбирая в тех или иных полях
- Которые пользователь не может изменять
- Которые доступны в тексте программ напрямую.
Чтобы создать перечисления 1С – добавьте его в окне конфигурации в ветке Перечисления 1С.

Потом раскройте само перечисление 1С и добавьте его значения.
Теперь на форме мы можем в качестве типа значения указать данное перечисление 1С. Пользователь может выбрать только одно из нами предопределенных значения.
Проголосовать за этот пост:
Перечисления
Перечисления — это прикладные объекты конфигурации. Они позволяют хранить в информационной базе наборы значений, которые не изменяются в процессе работы прикладного решения.
Например, это может быть перечисление возможных ставок НДС (БезНДС, НДС18 и т. д.), перечисление состояния заказов (Запланировано, ВРаботе, Выполнено) и пр.:

В прикладном решении может быть создано произвольное количество перечислений:

0 1 2 3 4 5 6 7 8 9
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
- Платформа
- Средства быстрой разработки бизнес-приложений
- Прикладные механизмы
- Бизнес-процессы
- Бухгалтерский учет
- Ввод на основании
- Внешний источник данных
- Документы
- Константа
- Критерий отбора
- Объекты конфигурации
- Оперативный учет
- Перечисления
- Решение систем линейных алгебраических уравнений
- Сложные периодические расчеты
- Справочники
- Учет движения средств
- Характеристики
- Хранение сведений
Новости
Новая редакция интернет-курса Разработка мобильных приложений в системе «1С:Предприятие 8.3» 02.11.2023 10:47:00
Перечисления в 1С 8.3
При работе в программе 1С Предприятие 8.3, заполняя различные отчёты, справочники и документы, мы можем заметить перечисление в запросе, открытом для определенных значений. К примеру:

- Группа основных средств, при заполнении элемента справочника

- И другие типы перечислений, при заполнении сведений

Работа с перечислениями возможна при создании на основании документа или при выборе печати (Рис. 4-5).
Перечисления представляют из себя список информации, который пользователь не может изменять. А значит, они не меняются в процессе работы, так как заложены в конфигурацию и являются объектом метаданных.
Элемент «Перечисление» в конфигураторе программы
Разберёмся, как выглядит перечисление в конфигураторе программы 1С. После того, как мы откроем конфигурацию, в дереве метаданных мы увидим блок «Перечисления».

Может возникнуть вопрос, в чем функция перечисления, если можно выбрать те же значения, применяя справочник. Перечисления необходимы в тех ситуациях, когда требуется ограничить выбираемые пользователем значения предустановленными, без возможности добавления их в режиме пользователя.
К значению перечисления приложение может обращаться напрямую, применяя присвоенное ему имя. Посмотрим, как выглядят перечисления изнутри. В качестве примера найдем перечисление «Ставки НДС» и откроем его. На вкладке «Основные» пишется имя перечисления и синоним объекта, применяемый для его описания в приложении.

На вкладке «Данные» можно заметить все значения перечисления, отображаемые в форме выбора в программе. При помощи кнопки «Добавить» можно добавлять значения перечислений.

Лучше предоставить это разработчику программы, потому что все нужные поправки вносятся в обновлениях. Для примера рассмотрим создание перечислений.
Хоть ставки и введены, продолжим на данном примере. Для добавления варианта значения перечисления нажмём кнопку «Добавить» и в окне, которое откроется, зададим имя и синоним нового значения.

Далее необходимо задать значение НашаСтавка. Мы видим, что оно появилось в списке. Таким образом можно ввести новые ставки НДС.

Применяя имя перечисления, к нему можно обращаться в коде программы напрямую (перечисления из примера — НДС10, НДС18, БезНДС, НДС0).
Главные параметры перечисления — ссылка на объект и порядок его отображения.

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

Перечисление изнутри выглядит вот так. Сохраните изменения в «Конфигурация-Сохранить конфигурацию». Есть и другой способ — нужно просто согласиться с изменениями при закрытии.

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

Объект изменен, нужно принять предложение об изменении.

Отражение изменения списка перечисления в 1С
Требуется открыть программу и проверить, как отразилось изменение «Ввод нового значения перечисления ставки НДС». Открываем в документе «Счет» выбор значения ставок. В значении выбора возникло созданное нами значение «Наша ставка».

Вид выбора значения перечисления
Рассмотрев, как выполняется добавление перечисления в список значении, появляется вопрос: как и почему в некоторых формах мы выбираем из списка, а в некоторых устанавливаем переключатель. В самой форме настройки перечисления мы этого не заметили.
Если ставки НДС в документе были представлены как открывающийся список, то в справочнике «Сотрудники», при вводе нового работника, нам будет предложено установить переключатель «Пол». Это тоже элемент перечисления, потому что мы выбираем из списка.

В том случае, если мы посмотрим на перечисление в Конфигураторе, то увидим там эти значения.

Чтобы посмотреть настройку их отображения, потребуется обратиться к тому элементу, где перечисление применяется. В нашем примере это справочник «Сотрудники». После его открытия, в дереве метаданных программы мы видим его настройки. Например, выбор пола — ФизлицоПол, и вид — «Поле переключателя». Поэтому в справочнике мы видим его в таком виде.

Для активации данного окна, мы открыли форму элемента для просмотра.

Проведем сравнение, как выполнен ввод значения перечисления, рассматриваемого в примере — НДС в документе «Счет на оплату покупателю». Для этого найдем данный элемент в дереве метаданных, но в списке документов, и посмотрим его форму.

Значение вида ставки НДС — Поле ввода. При выборе реквизита в форме данный элемент обведен при помощи рамки синего цвета. Для больших списков перечислений удобно пользоваться такой настройкой, а для перечислений, в которых выбор состоит из двух значений, более приемлема настройка выбора в виде переключателя.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
Перечисления 1С — программное использование
В предыдущей статье я показал, как создавать перечисления 1С, значения перечислений, как указывать ссылку на нужное перечисление у реквизита объекта, и как работать с перечислением на управляемой форме. В этой статье я покажу некоторые моменты программной работы с перечислениями в языке программирования 1С.
Программная работа с перечислениями в 1С отличается в зависимости от того в каком контексте мы работаем с этим перечислением: в серверном или клиентском (конкретно на тонком клиенте и веб-клиенте). Поэтому разберем оба варианта по отдельности, также изучим, как работать с перечислениям в языке запросов 1С.
Перечисление в серверном контексте
Для того, чтобы понять как работать со значениями перечисления в серверном контексте, рассмотрим простую задачу: будем программно создавать элемент справочника и присваивать ему конкретное значение перечисления.
В моей учебной конфигурации, есть справочник Контарагенты, с реквизитом Статус, у которого тип ссылка на перечисление ЮридическийСтатусКонтрагента, которое было создано в предыдущей статье. Создадим программно нового контрагента, с уже конкретным значением перечисления. Делать я это будут на управляемой форме учебной обработки. На этой форме я создал команду, серверный и клиентский обработчик команды.
В серверном обработчике и будет создаваться новый элемент справочника.
&НаСервере Процедура СоздатьСправочникНаСервере() НовыйКонтр = Справочники.Контрагенты.СоздатьЭлемент(); НовыйКонтр.Наименование = "Иванов и Партнеры"; НовыйКонтр.Статус = Перечисления.ЮридическийСтатусКонтрегента.ЮрЛицо; НовыйКонтр.Записать(); КонецПроцедуры &НаКлиенте Процедура СоздатьСправочник(Команда) СоздатьСправочникНаСервере(); КонецПроцедуры
В этом коде мы создаем объект справочника, заполняем его реквизиты какими-то значениями, а потом сохраняем. Реквизиту Статус мы присваиваем конкретное значение перечисления ЮридическийСтатусКонтреганта. Вы заметили, что к нужному перечислению мы обращаемся посредством объекта Перечисления, который имеет типа ПеречисленияМенеджер.
А выражение Перечисления.ЮридическийСтатусКонтрегента это менеджер конкретного перечисления, посредством которого можно обращаться к нужному значению перечисления. Причем обращение к значению идет по имени.
Посредством этого выражения мы можем обратиться к любому значению перечисления, в зависимости от поставленной задачи.

Если по какой-то причине нам не нужно записывать определенное значение перечисления, то мы можем записать пустую ссылку на это перечисление, обратившись к методу менеджера перечисления ПустаяСсылка(). Тогда будет иметь место следующий код.
НовыйКонтр = Справочники.Контрагенты.СоздатьЭлемент(); НовыйКонтр.Наименование = "Иванов и Партнеры"; НовыйКонтр.Статус = Перечисления.ЮридическийСтатусКонтрегента.ПустаяСсылка(); НовыйКонтр.Записать();
Перечисление в клиентском контексте (на тонком клиенте)
Если в серверном контексте мы обращались напрямую к значению перечисления, используя менеджер перечислений, то в клиентском контексте мы так сделать не можем (за исключением толстого клиента).
Приведу небольшой пример, на котором покажем, как работать с перечислениями на клиенте, пример больше учебный, призванный показать, как работать с перечислениями в клиентском контексте, и не несет какого-либо прикладного смысла.
На управляемую форму поместим реквизит с типом ссылка на перечисления, и при выполнении команды формы будем записывать в этот реквизит конкретное значение перечисления.
Поскольку в предыдущей статье мы создали перечисление ЮридическийСтатусКонтрегента, то назовем реквизит формы СтатусИП, и будем при выполнении команды в него записывать соответствующее значение перечисления.
Создадим реквизит, поместим его на форму, и также я создам команду, которую помещу на форму.

Для этой команды создадим клиентский обработчик.

В этом клиентском обработчике, нам нужно записать в реквизит формы значение перечисления. Мы можем получить значение перечисления так, как получали ранее в этой статье: используя менеджер перечислений.
&НаКлиенте Процедура Установить(Команда) СтатусИП = Перечисления.ЮридическийСтатусКонтрегента.ИП; КонецПроцедуры
Если мы сейчас сделаем синтаксис-проверку модуля на ошибки, то в некоторых случаях может выдать ошибку, а в некоторых нет. Всё зависит от того, настроена ли в параметрах проверка в режиме тонкого клиента.
Проверим это. Зайдем в параметры конфигурации по пути Главное меню – Сервис – Параметры

В этой форме на закладке Модули в подзакладке Проверка нас интересует флаг Тонкий клиент.

Если этот флаг установлен, то при синтаксической проверке модуля, на код, который мы написали ранее, выйдет ошибка.

Поэтому, если вы планируете, что ваше приложение будет работать в режиме тонкого клиента, то способ получения значения перечисления, используя менеджер перечислений, не применим.
Чтобы получить в режиме тонкого клиента значение перечисления, нужно использовать метод глобального контекста ПредопределенноеЗначение. В этом случае код будет следующим.
&НаКлиенте Процедура Установить(Команда) СтатусИП = ПредопределенноеЗначение("Перечисление.ЮридическийСтатусКонтрегента.ИП"); КонецПроцедуры
В параметре этого метода в виде строки необходимо написать путь к значению перечисления. Замечу, что в платформе 1С, после ввода круглой скобки и первой кавычки выпадают подсказки, и по этим подсказками можно сгенерировать нужную строку.


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

Заметили, что обращались мы к имени значения перечисления, а на форме отображается синоним значения.
Перечисление в языке запросов 1С
Рассмотрим, как работать с перечислениями в языке запросов 1С.
Более подробно, изучить языка запросов 1С Вы можете в моем курсе «Запросы в 1С для начинающих», промо-код на скидку для читателей блога — hrW0rl9Nnx
Для того, чтобы понять как работать с перечислениями в запросе разберем простой и понятный пример. Из справочника Контрагенты отберем только тех, контрагентов, у которых статус ИП. Делать мы это будем сразу в «1С: Предприятии», в консоли запросов.
Скачать консоль запросов для платформы 1С 8.3 можно по этой ссылке.
В консоли запросов откроем конструктор запроса, выберем таблицу Контрагенты и поля этой таблицы Наименование и Статус.

На закладке Условия установим, чтобы отбирались контрагенты со статусом ИП.

В этом случае мы используем функцию Значение языка запросов 1С, где в качестве параметра указываем путь к нужному нам значению перечисления.
У нас должен получиться вот такой запрос:
ВЫБРАТЬ Контрагенты.Наименование КАК Наименование, Контрагенты.Статус КАК Статус ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Статус = ЗНАЧЕНИЕ(Перечисление.ЮридическийСтатусКонтрегента.ИП)
Который будет возвращать контрагентов только с нужным статусом.

Функцию ЗНАЧЕНИЕ можно использовать не только в условиях, но и в секции выбрать. Например, можно сделать такой запрос.
ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ЮридическийСтатусКонтрегента.ИП) КАК Статус ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ЮридическийСтатусКонтрегента.ЮрЛицо)
Который будет возвращать два значения перечисления.

А что делать, если нужен отбор по нескольким значениями перечислений? Для этого мы объединим два этих запроса: поместим во временную таблицу значения двух перечислений, а потом при получении контрагентов, в условии при помощи оператора множественного выбора отберем контрагентов только с двумя значениями перечислений.
Код запроса будет в этом случае следующим:
ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ЮридическийСтатусКонтрегента.ИП) КАК Статус ПОМЕСТИТЬ втПеречисления ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Перечисление.ЮридическийСтатусКонтрегента.ЮрЛицо) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Контрагенты.Наименование КАК Наименование, Контрагенты.Статус КАК Статус ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Статус В (ВЫБРАТЬ вт.Статус ИЗ втПеречисления КАК вт)
И этот запрос будет выдавать нужный результат.

Если же мы не знаем, по какому значению перечисления нужен отбор, то можем просто передать значение нужного перечисления в качестве параметра. В этом случае будет такой запрос.
ВЫБРАТЬ Контрагенты.Наименование КАК Наименование, Контрагенты.Статус КАК Статус ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Статус = &Статус
Который будет выполняться следующим образом.

Если же мы хотим сделать отбор по нескольким сразу статусам (которые мы не можем знать заранее), то нам нужно передать в запрос массив или список значений, и применить к нему оператор множественного выбора. В этом случае у нас будет следующий запрос.
ВЫБРАТЬ Контрагенты.Наименование КАК Наименование, Контрагенты.Статус КАК Статус ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Статус в (&Статусы)
С таким результатом.

Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Язык запросов в 1С для начинающих». Где эти и многие другие вопросы рассматриваются более подробно.

В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком
Для моих читателей, купон на скидку 25%: hrW0rl9Nnx
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы: