Добавить перечисление в расширение 1с

Обновлено: 04.07.2024

Механизм расширения конфигурации 1C

Как указано в описании: «Механизм расширения конфигурации – это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).»

Основным назначением расширения конфигурации является доработка прикладных решений (конфигураций) под нужды клиента. При этом нет необходимости в снятии дорабатываемой конфигурации с поддержки. В результате сохраняется простота сопровождения и обновления типового прикладного решения, стоящего на поддержке.

При разработке расширений следует учитывать следующие факты:

Расширение может иметь одно из следующих назначений:

Расширение создается в конфигураторе, хранится в информационной базе и может быть выгружено в файл. Для подключения расширения, сохраненного в файл, в прикладное решение нет необходимости использовать конфигуратор. Подключить расширение можно с помощью стандартного функционала (Все функции Стандартные Управление расширениями конфигурации). Подключить расширение также используя программный интерфейс, предоставляемый платформой.

Ограничения использования расширений:

Расширения конфигурации не поддерживают создание следующих собственных объектов:

Не поддерживается расширение следующих объектов:

Не поддерживается добавление реквизитов и табличных частей для:

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

В базовых версиях прикладных решений работа с расширениями не поддерживается.

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

Как добавить расширение конфигурации 1С 8.3

Для создания расширения необходимо запустить 1С в режиме конфигуратора.

В конфигураторе необходимо зайти в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Далее нажмем кнопку «Добавить». Мы увидим диалоговое окно создания расширения:


Стоит отдельно выделить поле Назначение – необходимо выбрать его значение в зависимости от решаемой задачи – т.к. мы выполняем добавление объектов по требованиям конкретного заказчика – нам подойдет вариант «Адаптация».


Добавим в расширение справочник Категория должности по Классификатору Предприятия. Стоит обратить внимание, что в название всех объектов процедур и функций созданных в расширении, добавляется его префикс (в нашем случае Расш1_);


Разместим наш новый Справочник в Подсистеме «ШтатноеРасписание» для этого необходимо добавить эту подсистему в Расширение – Перейдем в дерево основной Конфигурации и нажмем правой кнопкой мыши на строке с нужной подсистемой и выберем пункт «Добавить в расширение».


Теперь мы можем управлять ее составом, добавим наш новый объект в подсистему.


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


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

Останавливаться на плюсах и минусах каждого решения не будем, а ниже рассмотрим оба варианта.

Интерактивное изменение Формы в расширении.

Для того чтобы вывести Реквизит на форму интерактивно: необходимо добавить саму Форму «ФормаЭлемента» в расширение. Обращу ваше внимание на следующий момент – для того чтобы появилась возможность Интерактивного добавления Реквизита объекта на форму необходимо сам Объект тоже добавить в расширение.


Далее добавим новый Реквизит в подходящую Группу на форме.


Запустив 1С в режиме Предприятия убедимся, что новый Справочник появился в интерфейсе


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


Программное изменение Формы в расширении.

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

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


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


Система предложит нам выбрать одну из аннотаций, подробнее о каждой из них рассмотрим в следующих публикациях, а сейчас выберем «Вызывать после»


Далее в добавленную процедуру поместим следующий код:


Готовое расширение можно выгрузить в файл перейдя в конфигураторе в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». В открывшемся списке расширений по правой кнопкой мыши можно вызвать выпадающее меню, либо выбрать пункт командной панели «Конфигурация» и выбрать пункт «Сохранить конфигурацию в файл…». На выходе мы получим Файл типа *.cfe который можно передать заказчику.


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


В версии платформы «1С:Предприятие 8.3.14» произойдет несколько изменений: упростили работу с расширениями, добавили возможность комментировать объекты в них и уменьшили зависимость расширений от изменений конфигурации.

Суть изменений

Раньше разработчики могли изменять роли типовой конфигурации, заимствуя их в расширение: устанавливать и снимать права на заимствованные объекты конфигурации и на собственные объекты расширения. Однако если заимствованные роли использовали ограничения доступа к данным на уровне записей и полей базы данных, то для полноценной работы этих ограничений вам не хватало возможности создавать собственные параметры сеанса в расширении.

Теперь такая возможность есть: собственные параметры сеанса доступны при первом вызове события УстановкаПараметровСеанса(). Использовать их можно в ограничениях доступа.

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

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

Но если расширение деактивировать, то его собственные значения останутся в базе данных, но в пользовательском режиме показаны не будут. Вместо Отменен появится запись <Объект из отключенного расширения конфигурации>:


Не будет это значение доступно из встроенного языка. Если расширение подключить снова – его собственные значения восстановятся.

Комментарии к объектам в расширении

В версии «1С:Предприятие 8.3.14» разработчики смогут комментировать заимствованные и собственные объекты. Функция упростит процесс, если расширение разрабатывается коллективно или в течение долгого времени. С ее помощью можно оставлять заметки к изменяемым и добавляемым объектам.

Свойство Комментарий платформой в процессе применения расширения использоваться не будет.

Ослабление контроля обработчиков событий при применении расширения

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

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

И здесь применение расширения становилось невозможным. Однако теперь платформа не будет обращать на это внимание: при применении расширения количество параметров и описателей Знач в обработчиках событий не контролируется.


Комментарий к объектам расширения

Упрощение работы с расширениями формы

Кроме того, в «1С» позаботились о том, чтобы уменьшить зависимость расширений от изменений конфигурации, которые разработчики не собирались контролировать. Доработка коснулась механизма расширений форм.

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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

Создать перечисление в 1С

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

Создать перечисление в 1С

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

Создать перечисление в 1С

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

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

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

Добавление значений перечисления

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

Добавление значений перечисления

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

Имя и синоним значений перечисления

Точно также добавим несколько других значений.

Значения перечислений

Перечисление в реквизите объекта 1С

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

Создадим у справочника контрагенты реквизит Статус.

Реквизит справочника 1С

В палитре свойств этого реквизита установим для него тип ПеречислениеСсылка.ЮридическийСтатусКонтрегента.

Перечисление в реквизите справочника

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

Перечисление на управляемой форме 1С

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

Перечисление на управляемой форме 1С

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

Выбор нужного значения перечисления

Заметьте, названия значений перечисления в пользовательском режиме соответствуют синонимам значений перечисления.

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

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

Перечисление на форме в виде поля ввода

После этого необходимо зайти в палитру свойств этого элемента формы (поле ввода), и в этой палитре найти свойство Вид.

 Палитра свойств поля ввода

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

Поле переключателя

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

Поле переключателя на управляемой форме

Вы видите, что на форме сейчас нет рядом с переключателями названий значений перечислений (стоят Значение 1, Значение 2). Чтобы они отобразились, нам нужно ввести значения переключателя в список выбора. Сделать это нужно в свойстве «Список выбора» поля ввода. После нажатия на кнопку «…» этого свойства, откроется форма списка выбора.

Открытие формы списка выбора

Мы можем автоматически заполнить список всеми значениями перечисления, нажав на кнопку «Заполнить» этой формы.

 Заполнение значений перечисления в форме выбора

Но представления значений, придется заполнить вручную.

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

Переключатель на форме

Также другой вид будет в пользовательском режиме «1С: Предприятия» .

Переключатель на форме

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

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

Значение тумблер в свойстве ВидПереключателя

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

Переключатель в режиме тумблера

Тумблер представлен в виде кнопок, причем пользователь может нажать только на одну из них. У разработчика имеется возможность управлять внешним видом тумблера при помощи свойств, которые расположены в категории «Расположения» палитры свойств поля переключателя. Например, можно сделать все кнопки тумблера одинаковыми по ширине.

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

После всех действий, внешний вид переключателя в пользовательском режиме «1С: Предприятия» будет другой.

Тумблер в пользовательском режиме

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

Другие статьи по теме конфигурирования:

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

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

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

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

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

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


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

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

Вступайте в мои группы:

One thought on “ Перечисления 1С ”

Читайте также: