Перейти к содержимому

Как обратиться к перечислению на клиенте 1с

  • автор:

Перечисления

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

Например, перечислением может быть:

  • пол физического лица (мужской или женский)
  • ставка НДС (0%, 10%, 20%)
  • тип письма (исходящее, входящее).

Добавление перечислений в конфигурацию на платформе 1С 8.3.

В дереве объектов метаданных на узле “Перечисления” добавим новый объект и назовем его “Softrema_ПолФизическогоЛица”, в поле синоним введем “(Softrema) Пол физического лица”.

Для добавления значений перечисления перейдем на вкладку “Данные” и добавим два значения:

  • Мужской
  • Женский

На этом наше перечисление готово. Что бы продемонстрировать работу созданного объекта, добавим в нашу конфигурацию справочник с одним реквизитом, тип реквизита выберем “Перечисление — Softrema_ПолФизическогоЛица”.

Запустим отладку по кнопке “F5” и выберем добавленный справочник. По кнопке “Создать” откроется окошко с наименованием справочника, а так же с добавленным ранее перечислением “(Softrema) Пол физического лица” и значениями: “мужской” и “женский”.

Как получить значение перечисления на клиенте?

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

ЗначениеПеречисления = ПредопределенноеЗначение ( «Перечисление. Softrema_ПолФизическогоЛица. Женский» );

Результатом выполнения вернется ссылка на требуемый элемент. Стоит заметить, что использование данного оператора инициирует обращение к серверу.

Как получить значение перечисления на сервере?

Для получения значения перечисления на сервере, нужно обратиться к нему как к любому предопределенному значению объекта 1С:

ЗначениеПеречисления = Перечисления . Softrema_ПолФизическогоЛица . Женский ;

Как получить значение перечисления в запросе 1С?

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

1С 8. Обращение к перечислению на клиенте в управляемых формах

Аватар пользователя mykib.org

Также эту функцию можно использовать для того, чтобы получить предопределенный элемент из предопределенных данных и точек маршрута бизнес-процессов, в том числе предопределенных значений Справочников:

Обратите внимание: Перечисление, Справочник (а не Перечисления, Справочники)

Перечисления 1С — программное использование

В предыдущей статье я показал, как создавать перечисления 1С, значения перечислений, как указывать ссылку на нужное перечисление у реквизита объекта, и как работать с перечислением на управляемой форме. В этой статье я покажу некоторые моменты программной работы с перечислениями в языке программирования 1С.

Программная работа с перечислениями в 1С отличается в зависимости от того в каком контексте мы работаем с этим перечислением: в серверном или клиентском (конкретно на тонком клиенте и веб-клиенте). Поэтому разберем оба варианта по отдельности, также изучим, как работать с перечислениям в языке запросов 1С.

Перечисление в серверном контексте

Для того, чтобы понять как работать со значениями перечисления в серверном контексте, рассмотрим простую задачу: будем программно создавать элемент справочника и присваивать ему конкретное значение перечисления.

В моей учебной конфигурации, есть справочник Контарагенты, с реквизитом Статус, у которого тип ссылка на перечисление ЮридическийСтатусКонтрагента, которое было создано в предыдущей статье. Создадим программно нового контрагента, с уже конкретным значением перечисления. Делать я это будут на управляемой форме учебной обработки. На этой форме я создал команду, серверный и клиентский обработчик команды.

В серверном обработчике и будет создаваться новый элемент справочника.

В этом коде мы создаем объект справочника, заполняем его реквизиты какими-то значениями, а потом сохраняем. Реквизиту Статус мы присваиваем конкретное значение перечисления ЮридическийСтатусКонтреганта. Вы заметили, что к нужному перечислению мы обращаемся посредством объекта Перечисления, который имеет типа ПеречисленияМенеджер.

А выражение Перечисления.ЮридическийСтатусКонтрегента это менеджер конкретного перечисления, посредством которого можно обращаться к нужному значению перечисления. Причем обращение к значению идет по имени.

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

Значения перечисления в 1С

Если по какой-то причине нам не нужно записывать определенное значение перечисления, то мы можем записать пустую ссылку на это перечисление, обратившись к методу менеджера перечисления ПустаяСсылка(). Тогда будет иметь место следующий код.

Перечисление в клиентском контексте (на тонком клиенте)

Если в серверном контексте мы обращались напрямую к значению перечисления, используя менеджер перечислений, то в клиентском контексте мы так сделать не можем (за исключением толстого клиента).

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

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

Поскольку в предыдущей статье мы создали перечисление ЮридическийСтатусКонтрегента, то назовем реквизит формы СтатусИП, и будем при выполнении команды в него записывать соответствующее значение перечисления.

Создадим реквизит, поместим его на форму, и также я создам команду, которую помещу на форму.

Реквизит формы и команда формы

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

Создание клиентского обработчика команды

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

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

Проверим это. Зайдем в параметры конфигурации по пути Главное меню – Сервис – Параметры

Путь к параметрам

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

Тонкий клиент

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

Ошибка при проверке кода на тонком клиенте

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

Чтобы получить в режиме тонкого клиента значение перечисления, нужно использовать метод глобального контекста ПредопределенноеЗначение. В этом случае код будет следующим.

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

Получение подсказки ПредопределенноеЗначение

Получение подсказки ПредопределенноеЗначение

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

Значение перечисления на форме

Заметили, что обращались мы к имени значения перечисления, а на форме отображается синоним значения.

Перечисление в языке запросов 1С

Рассмотрим, как работать с перечислениями в языке запросов 1С.

Более подробно, изучить языка запросов 1С Вы можете в моем курсе «Запросы в 1С для начинающих», промо-код на скидку для читателей блога — hrW0rl9Nnx

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

Скачать консоль запросов для платформы 1С 8.3 можно по этой ссылке.

В консоли запросов откроем конструктор запроса, выберем таблицу Контрагенты и поля этой таблицы Наименование и Статус.

Поля в конструкторе запросов

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

Условие в конструкторе запросов

В этом случае мы используем функцию Значение языка запросов 1С, где в качестве параметра указываем путь к нужному нам значению перечисления.

У нас должен получиться вот такой запрос:

Который будет возвращать контрагентов только с нужным статусом.

Результат запроса 1С с отбором по перечислению

Функцию ЗНАЧЕНИЕ можно использовать не только в условиях, но и в секции выбрать. Например, можно сделать такой запрос.

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

Результат запроса 1С значения перечислений

А что делать, если нужен отбор по нескольким значениями перечислений? Для этого мы объединим два этих запроса: поместим во временную таблицу значения двух перечислений, а потом при получении контрагентов, в условии при помощи оператора множественного выбора отберем контрагентов только с двумя значениями перечислений.

Код запроса будет в этом случае следующим:

И этот запрос будет выдавать нужный результат.

Результат выполнения запроса с оператором множественного выбора

Если же мы не знаем, по какому значению перечисления нужен отбор, то можем просто передать значение нужного перечисления в качестве параметра. В этом случае будет такой запрос.

Который будет выполняться следующим образом.

Результат выполнения запроса с отбором по значению перечисления

Если же мы хотим сделать отбор по нескольким сразу статусам (которые мы не можем знать заранее), то нам нужно передать в запрос массив или список значений, и применить к нему оператор множественного выбора. В этом случае у нас будет следующий запрос.

С таким результатом.

Результат выполнения запроса с оператором множественного выбора

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

В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком

Для моих читателей, купон на скидку 25%: hrW0rl9Nnx

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Получить перечисление на клиенте

Во время работы часто встречается ситуация, когда на клиенте нужно получить значение перечисления. Уходить на сервер ради одного этого действия не хочется, но получить как-то перечисление нужно.

Это конечно решает задачу, но становится много лишнего кода, лишних функций и тяжело читать такой код.

На этот случай в 1с предусмотрена функция ПредопределенноеЗначение при программировании на английском он называется PredefinedValue.

Функция ПредопределенноеЗначение

Возвращаемые значение: Ссылка на объект.

Параметр Тип Описание
ПолныйПутьКДанным Строка Содержит полный путь до предопределенного значения. Тип предопределенного значения.Имя объекта метаданных.Значение.
Тип предопределенного значения может быть:
Справочник
План видов характеристик
План счетов
План видов расчета
Документ
Перечисление
Бизнес процесс – только пустая ссылка и получение точек бизнес процесса
Задача – только пустая ссылка

Параметры команды ПредопределенноеЗначение

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

Внимание! Функция доступна в платформе 8.2.9 и выше.

Доступность: Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание. Вызов метода выполняет обращение к серверу.

Примечание. Результат выполнения кэшируется при первом обращении до изменения конфигурации или версии платформы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *