Системные перечисления 1с это

Обновлено: 02.07.2024

1. Что такое перечисление в запросе 1С?

Для начала освежим в памяти, что такое перечисление в запросе .

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

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

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

2. Основные параметры перечисления

· Имя – имя значения, созданное по правилам формирования имен 1С, которое используется при обращении к конкретному значению через точку в тексте программы;

· Синоним – произвольное название значения, которое несет смысловую нагрузку и отображается как результат обращения к перечислению, является представлением ссылки;

· Порядок – порядковый номер значения в списке (начиная с 0). Весьма полезный параметр.

Использование перечисления в запросе 1С рассмотрим на самом простом примере: Пол Физического Лица. В России насчитывается 2 значения: Мужской и Женский. При локализации 1С в некоторых странах мира возможно увеличение количества значений до 7. Количество значений в перечислении не принципиально – принцип один и тот же для любого количества значений.

3. Использование перечисления в блоке запроса ВЫБРАТЬ

ФизическиеЛица.Ссылка КАК Ссылка,

ФизическиеЛица.Пол КАК Пол

Справочник.ФизическиеЛица КАК ФизическиеЛица

В результате выполнения этого запроса в поле «Пол» будет находиться объект метаданных «Перечисление» с тем значением, которое присвоено данному Физическому лицу.

ФизическиеЛица.Ссылка КАК Ссылка,

ПРЕДСТАВЛЕНИЕ(ФизическиеЛица.Пол) КАК Пол

Справочник.ФизическиеЛица КАК ФизическиеЛица

Использование в запросе ключевого слова ПРЕДСТАВЛЕНИЕ позволит получить в поле «Пол» строку, содержащую Синоним данного значения перечисления в 1С. Нужно иметь ввиду, что визуализация значения Перечисления всегда идет через Синоним. Сделаем прямой запрос к объекту Перечисление:

ПолФизическогоЛица.Ссылка КАК Ссылка,

ПолФизическогоЛица.Порядок КАК Порядок

Перечисление.ПолФизическогоЛица КАК ПолФизическогоЛица

Мы увидим только Синонимы в поле «Ссылка» и порядковый номер в поле «Порядок».

4. Использование перечисления в условиях запроса

В условиях запроса «впрямую» (не через параметр запроса) можно использовать ТОЛЬКО конкретное значение перечисления в 1С , обозначая его с ключевым словом «ЗНАЧЕНИЕ» или «Порядок значения». Любой другой способ использования даст ошибку при исполнении запроса.

ФизическиеЛица.Ссылка КАК Ссылка,

ФизическиеЛица.Пол КАК Пол

Справочник.ФизическиеЛица КАК ФизическиеЛица

ФизическиеЛица.Пол = ЗНАЧЕНИЕ (Перечисление.ПолФизическогоЛица.Женский)

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

ВНИМАНИЕ! В тексте запроса после «ЗНАЧЕНИЕ» слово «Перечисление» используется в единственном числе, в отличие от использования в тексте программ. Это частая ошибка начинающих пользователей, которые копируют текст, сформированный конструктором, из программы в запрос.

Аналогичный результат получится, если известен Порядок нужного Значения и лень писать длинные тексты:

ФизическиеЛица.Ссылка КАК Ссылка,

ФизическиеЛица.Пол КАК Пол

Справочник.ФизическиеЛица КАК ФизическиеЛица

ФизическиеЛица.Пол.Порядок = 1

Также в условиях запроса может быть использован список значений Перечисления:

ФизическиеЛица.Ссылка КАК Ссылка,

ФизическиеЛица.Пол КАК Пол

Справочник.ФизическиеЛица КАК ФизическиеЛица

ФизическиеЛица.Пол В (ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Женский), ЗНАЧЕНИЕ(Перечисление.ПолФизическогоЛица.Мужской))

ФизическиеЛица.Ссылка КАК Ссылка,

ФизическиеЛица.Пол КАК Пол

Справочник.ФизическиеЛица КАК ФизическиеЛица

ФизическиеЛица.Пол.Порядок В (1,2)

Если учитывать особенности, то использование перечислений в запросе – это несложный и понятный процесс.

Получение значений перечислений через внешнее соединение или Automation сервер

Раздел содержит описание особенностей получения и использования значений перечислений 1С:Предприятия через внешнее соединение или Automation сервер 1С:Предприятия.

Системные перечисления и их элементы

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

В качестве значений параметров метода Записать() заданы два значения элементов системных перечислений: элемент "Проведение" системного перечисления "РежимЗаписиДокумента" и элемент "Оперативный" системного перечисления "РежимПроведенияДокумента".

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

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

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

Перечисления, определенные в конфигурации

В отличие от системных перечислений, определенные в конфигурации перечисления являются объектами базы данных. Элемент такого перечисления является ссылкой на объект базы данных. Например, если в конфигурации определено перечисление "Перечисление1" с элементами "ЗначениеПеречисления1" и "ЗначениеПеречисления2", а реквизит "Реквизит1" справочника "Справочник1" имеет тип "ПеречислениеСсылка.Перечисление1", то следующий код на встроенном языке 1С:Предприятия:

выведет "Равно", если значением реквизита "Реквизит1" является "ЗначениеПеречисления1" и "Не равно" в противном случае.

Однако если значение элемента перечисления получить через внешнее соединение, то оно будет являться COM объектом, и подобное сравнение будет всегда приводить к отрицательному результату. Например, следующий код на встроенном языке 1С:Предприятия:

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

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

Если тип перечисления, значение которого может содежать переменная "ЭлементПеречисления", известен заранее, то приведенный выше пример может быть записан проще:

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

Системные перечисления предназначены для определения некоторого набора предопределенных значений и используются в качестве:

  1. значений параметров некоторых методов;
  2. значений некоторых свойств объектов.

К системным перечислениям, например, относятся следующие:

  • КодВозвратаДиалога
  • РежимБегущейСтроки
  • ОбходРезультатаЗапроса
  • РежимПроведенияДокумента
  • ВариантПериода

Системные перечисления 1С

Не следует путать системные перечисления и системные наборы значений (например системный набор значений "Символы").

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

Значения элементов системных перечислений указываются через точку от имени системного перечисления, например:

ОбъектДокумент . Записать ( РежимЗаписиДокумента . Проведение , РежимПроведенияДокумента . Оперативный ) ;

В качестве значений параметров метода Записать() заданы два значения элементов системных перечислений:

  • элемент "Проведение" системного перечисления " РежимЗаписиДокумента ";
  • элемент "Оперативный" системного перечисления " РежимПроведенияДокумента ".

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

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

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

Для указания разрешения использования процедур следует воспользоваться директивой препроцессора.

позволит указать системе, что процедура Проц1() должна выполняться на сервере, а конструкция

укажет на выполнение Проц2() на клиентской машине.

Для включения использования процедур и функций в сессии внешнего соединения применяется инструкция препроцессора

Встроенный язык. Системные перечисления

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

К системным перечислениям, например, относятся следующие:

  • КодВозвратаДиалога
  • РежимБегущейСтроки
  • ОбходРезультатаЗапроса
  • РежимПроведенияДокумента
  • ВариантПериода
  • и др.

Не следует путать системные перечисления и системные наборы значений (например системный набор значений "Символы").

Встроенный язык. Встроенные функции

К встроенным функциям языка относятся функции работы со значениями типа дата, строка, число, а также функции преобразования значений и функции форматирования (Формат()).


Для работы с переменными типа "дата" в платформе предусмотрены следующие встроенные функции языка:

  • День(<дата>)
  • ДеньГода(<дата>)
  • ДеньНедели(<дата>)
  • ДобавитьМесяц(<дата>,<число>)
  • КонецГода(<дата>)
  • КонецДня(<дата>)
  • КонецЧаса(<дата>)
  • ТекущаяДата() и др.

Задание 8

Создайте внешнюю обработку "ПримерРаботыСДатой". На форме обработки разместите реквизиты: "ИсходнаяДата" и "КоличествоДней". По кнопке сформировать организуйте вывод в текстовое поле даты, полученной прибавлением к исходной дате указанного количества дней.

Встроенный язык. Глобальный контекст

Глобальный контекст инициализируется при открытии конфигурации в режиме "1С:Предприятие" и существует вплоть до ее закрытия. Все свойства, процедуры и функции глобального контекста доступны в любом программном модуле конфигурации. Доступ к свойствам, процедурам и функциям глобального контекста осуществляется непосредственно из любого программного модуля, используя их имена (без ссылки на какой-либо объект).

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

Глобальный контекст:

В разделе "Интерфейсы" мы уже упоминали о программном переключении интерфейсов. Рассмотрим подробнее свойство глобального контекста "ГлавныйИнтерфейс". Тип значения: КоллекцияЭлементовУправленияИнтерфейсами. Используется для доступа к определенным в конфигурации пользовательским интерфейсам. Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения .

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

У КоллекцияЭлементовУправленияИнтерфейсами есть метод

<Имена интерфейсов> (необязательный) - тип: Строка, перечисленные через запятую имена интерфейсов, которые следует сделать видимыми.

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

Свойства и методы глобального контекста не являются конструкциями встроенного языка.

Задание 9

Перед завершением работы системы задать вопрос: "Вы уверены, что хотите завершить работу с системой?".

Вопросы и ответы

В курсе О сновы конфигурирования в системе "1С:Предприятие 8.0" в Тест 1 нет условий с которыми надо согласиться и продолжить

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

Для указания разрешения использования процедур следует воспользоваться директивой препроцессора.

позволит указать системе, что процедура Проц1() должна выполняться на сервере, а конструкция

укажет на выполнение Проц2() на клиентской машине.

Для включения использования процедур и функций в сессии внешнего соединения применяется инструкция препроцессора

Встроенный язык. Системные перечисления

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

К системным перечислениям, например, относятся следующие:

  • КодВозвратаДиалога
  • РежимБегущейСтроки
  • ОбходРезультатаЗапроса
  • РежимПроведенияДокумента
  • ВариантПериода
  • и др.

Не следует путать системные перечисления и системные наборы значений (например системный набор значений "Символы").

Встроенный язык. Встроенные функции

К встроенным функциям языка относятся функции работы со значениями типа дата, строка, число, а также функции преобразования значений и функции форматирования (Формат()).


Для работы с переменными типа "дата" в платформе предусмотрены следующие встроенные функции языка:

  • День(<дата>)
  • ДеньГода(<дата>)
  • ДеньНедели(<дата>)
  • ДобавитьМесяц(<дата>,<число>)
  • КонецГода(<дата>)
  • КонецДня(<дата>)
  • КонецЧаса(<дата>)
  • ТекущаяДата() и др.

Задание 8

Создайте внешнюю обработку "ПримерРаботыСДатой". На форме обработки разместите реквизиты: "ИсходнаяДата" и "КоличествоДней". По кнопке сформировать организуйте вывод в текстовое поле даты, полученной прибавлением к исходной дате указанного количества дней.

Встроенный язык. Глобальный контекст

Глобальный контекст инициализируется при открытии конфигурации в режиме "1С:Предприятие" и существует вплоть до ее закрытия. Все свойства, процедуры и функции глобального контекста доступны в любом программном модуле конфигурации. Доступ к свойствам, процедурам и функциям глобального контекста осуществляется непосредственно из любого программного модуля, используя их имена (без ссылки на какой-либо объект).

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

Глобальный контекст:

В разделе "Интерфейсы" мы уже упоминали о программном переключении интерфейсов. Рассмотрим подробнее свойство глобального контекста "ГлавныйИнтерфейс". Тип значения: КоллекцияЭлементовУправленияИнтерфейсами. Используется для доступа к определенным в конфигурации пользовательским интерфейсам. Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения .

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

У КоллекцияЭлементовУправленияИнтерфейсами есть метод

<Имена интерфейсов> (необязательный) - тип: Строка, перечисленные через запятую имена интерфейсов, которые следует сделать видимыми.

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

Свойства и методы глобального контекста не являются конструкциями встроенного языка.

Задание 9

Перед завершением работы системы задать вопрос: "Вы уверены, что хотите завершить работу с системой?".

Вопросы и ответы

В курсе О сновы конфигурирования в системе "1С:Предприятие 8.0" в Тест 1 нет условий с которыми надо согласиться и продолжить

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