Работаем с перечислениями 1с 8
Иногда требуется по значению синонима найти имя перечисления или имя значения перечисления и преобразовать найденный результат к типу ПеречислениеСсылка. Для решения такой задачи программирования можно предложить варианты функций рассмотренные в данной статье. Рассматривается алгоритмический метод с использованием языка 1С и языка запросов.
Перечисление — объект конфигурации, имеющий значения данных описанное свойствами Имя и Синоним. Имя используется в алгоритмической части конфигурации, Синоним — для получения представления при выводе в элементы формы объектов или печатные формы. Другое определение перечисления — это именованные списки значений, задаваемых на этапе конфигурирования.
Как получить имя перечисления по синониму
Алгоритмически можно получить коллекцию перечислений из конфигурации и перебрав их в цикле сравнить значение реквизита синоним с параметром функции вернуть имя перечисления.
Исходный код функции ИмяПеречисленияПоСинониму (СинонимПеречисления):
|
// Возвращает имя перечисления по известному значению синонима // Пример пСиснонимПеречисления = «Юр физ лицо» тип строка, // возвращаемое значение имя = «ЮрФизЛицо», тип строка Функция ИмяПеречисленияПоСинониму( пСинонимПеречисления ) Экспорт КолекцияПеречислений = Метаданные.Перечисления; Для каждого пНайденноеЗначение из КолекцияПеречислений Цикл Если пНайденноеЗначение.Синоним = пСинонимПеречисления Тогда Возврат пНайденноеЗначение.Имя; КонецЕсли; КонецЦикла; Возврат неопределено; КонецФункции // Имя Перечисления По Синониму |
Функция размещена в примере конфигурации к данному разделу в общем модуле «Работа с перечислениями».
Как получить имя значения перечисления, если известен синоним значения
Если известно перечисление, и известно, что одно из значений имеет известный нам синоним, то перебрав в цикле коллекцию значений перечисления можно получить его имя. Совокупность имени перечисления и имени значения перечисления позволяют получить ссылку на перечисление, которую уже можно применять в качестве значения реквизитов справочников, документов и регистров.
Исходный код функции ИмяЗначенияПеречисленияПоСинониму(ИмяПеречисления, СинонимЗначения):
|
// Функция возвращает имя реквизита данных перечисления по имени // перечисления и синониму его значения // Принимаемые значения: // пИмяПеречисления — тип строка. Имя объекта конфигурации «Перечисления» // пСинонимЗначения — тип строка. Значение свойства Синоним реквизита данных перечисления // Возвращаемое значение: // Имя реквизита данных перечисления Функция ИмяЗначенияПеречисленияПоСинониму( пИмяПеречисления, пСинонимЗначения ) Экспорт КолекцияЗначенийПеречисления = Метаданные.Перечисления[пИмяПеречисления].ЗначенияПеречисления; Для каждого пНайденноеЗначение из КолекцияЗначенийПеречисления Цикл Если пНайденноеЗначение.Синоним = пСинонимЗначения Тогда Возврат пНайденноеЗначение.Имя; КонецЕсли КонецЦикла; Возврат неопределено; КонецФункции // Имя Значения Перечисления По Синониму |
Функция размещена в примере конфигурации к данному разделу в общем модуле «Работа с перечислениями».
Получение ссылки на значение перечисления по имени перечисления и по имени его значения
Если известно имя самого перечисления и имя его значения, то получить ссылку которая будет являться значением, например субконто, можно следующим образом:
ПеречислениеСсылка = Перечисления[пИмяПречисления][пИмяЗначения];
Исходный код функции ПолучитьСсылкуНаЗначениеПеречисления( пИмяПеречисления, пИмяЗначения )
|
// Возвращает ПеречисленияСсылка по «Имени» перечисления и «Имени» значения // Пример пИмяПеречисления = «ЮрФизЛицо», пИмяЗначения = «ЮрЛицо», // результат: Перечисление ссылка на ЮрФизЛицо.ЮрЛицо // пИмяПеречисления — тип строка // пИмяЗначения — тип строка Функция ПолучитьСсылкуНаЗначениеПеречисления( пИмяПеречисления, пИмяЗначения ) Экспорт Попытка Возврат Перечисления[пИмяПеречисления][пИмяЗначения]; исключение Сообщить(«Ошибка получения ссылки на значение перечисления. « + пИмяПеречисления + » :: « + пИмяЗначения); Возврат неопределено; КонецПопытки; КонецФункции // Получить Ссылку На Значение Перечисления |
Функция размещена в примере конфигурации к данному разделу в общем модуле «Работа с перечислениями».
Использование значения перечисления в запросе
Возможность использования перечислений в запросах появилась в версии 8.1.5. В учебной версии 8.1.9.57 она описана во встроенной справке конфигуратора в разделе: 1С:Предприятие -> Встроенный язык -> Работа с запросами -> Язык запросов -> Использование предопределенных данных конфигурации.
Текст запроса может содержать значения системных перечислений, которые могут быть присвоены полям в таблицах базы данных: ВидДвиженияНакопления, ВидСчета и ВидДвиженияБухгалтерии.
Обращение в запросах к предопределенным данным конфигурации и значениям системных перечислений осуществляется с помощью литерала функционального типа:
ЗНАЧЕНИЕ(<ПредставлениеЗначения>)
Для системных перечислений представление значение имеет вид:
<ИмяСистемногоПеречисления>.<Значение>
Пример запроса может выглядеть следующим образом:
|
Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | ВидыНоменклатуры.Ссылка как ссылка, | ВидыНоменклатуры.Порядок |ИЗ | Перечисление.ВидыНоменклатуры КАК ВидыНоменклатуры |ГДЕ | ВидыНоменклатуры.Ссылка = Значение(Перечисление.ВидыНоменклатуры.Услуга) «; ТЗ = Новый ТаблицаЗначений; ТЗ = запрос.Выполнить().Выгрузить(); ЭлементыФормы.ТабличноеПоле1.Значение = ТЗ; ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); |
Демонстрация работы с перечислениями в 1С
В качестве примера работы с менеджером коллекции значений перечисления можно скачать файл обновления конфигурации для платформы 1С версии 8.1 и демонстрационную обработку. Двойной щелчок мыши или нажатие клавиши обеспечивает вызов события «Выбор», обработчик заполняет поля данных пСинонимПеречисления и пСинонимЗначение, а функционал общего модуля работа с перечислениями обеспечивает нахождение нужного значения типа ПеречислениеСсылка, который в форме имеет составной тип данных и рассчитан на работу только с версией cf из примера. При работе с другими конфигурациями следует отредактировать тип данных элемента формы пДанные.
Внешний вид экранной формы обработки по работе с синонимами перечислений для платформы 1С:
Выдержка из справочной системы 1С по назначению перечислений:
Перечисления используются в системе 1С:Предприятие для описания постоянных наборов значений, не изменяемых в процессе работы конфигурации. В отличие от справочника, значения перечислений задаются на этапе конфигурирования, и не могут быть изменены на этапе исполнения.
Типичными примерами перечислений являются виды оплаты (наличная, безналичная, бартер), статус клиента (постоянный, разовый) и т.д.
Одной из главных особенностей перечислений, отличающую их от справочников, является то, что набор значений перечисления не изменяется при работе конечного пользователя с программой. Например, алгоритм конфигурации может быть ориентирован на то, что каждый клиент имеет один из двух статусов — либо «постоянный», либо «разовый», в этом случае указание статуса клиента выполняется путем выбора одного из значений перечисления. Пользователь не может добавить новый статус.
В отличие от перечислений, для справочников конкретные значения обычно вводятся пользователем при работе с программой, например: наименования товаров, контрагентов и прочее.
Если Вы хотите больше узнать о программировании в 1С, тогда регистрируйтесь на курс: 1С 8.3 Старт >>>
лгоритмически можно получить коллекцию перечислений из конфигурации и перебрав их в цикле сравнить значение реквизита синоним с параметром функции вернуть имя перечисления.
Исходный код функции ИмяПеречисленияПоСинониму (СинонимПеречисления):
Код 1C v 8.х
// Возвращает имя перечисления по известному значению синонима
// Пример пСиснонимПеречисления = "Юр физ лицо" тип строка,
// возвращаемое значение имя = "ЮрФизЛицо", тип строка
Функция ИмяПеречисленияПоСинониму( пСинонимПеречисления ) Экспорт
КолекцияПеречислений = Метаданные.Перечисления;
Для каждого пНайденноеЗначение из КолекцияПеречислений Цикл
Если пНайденноеЗначение.Синоним = пСинонимПеречисления Тогда
Возврат пНайденноеЗначение.Имя;
КонецЕсли;
КонецЦикла;
Возврат неопределено;
КонецФункции
Информация взята с сайта http://helpf.pro
Хотите узнать больше по этому вопросу?
Подпишитесь на нашу рассылку новостей
Подписаться
Чтобы задать вопрос или предложить тему статьи, нажмите на кнопку ниже:
Предложить статью
Получить элемент перечисления по его имени (синониму)
| Чтобы получить значение перечисления по пользовательскому представлению (синониму) в 1С:Предприятие 8.2 можно при помощи следующего кода. | Автор статьи: romix Последняя редакция №1 от 29.08.13 URL: http://kb.mista.ru/article.php?id=921 |
Ключевые слова: перечисление
Функция НайтиВидСообщения(прм_имя)
имя=СокрЛП(прм_имя);
Для Каждого эл из Метаданные.Перечисления.ИмяПеречисления.ЗначенияПеречисления Цикл
Если СокрЛП(эл.Синоним)=имя Тогда
Возврат Вычислить("Перечисления.ИмяПеречисления."+эл.Имя);
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
Здесь ИмяПеречисления — наименование перечисления, как оно задано в конфигураторе.
0
1С 8.x : Как получить имя перечисления по Синониму?
лгоритмически можно получить коллекцию перечислений из конфигурации и перебрав их в цикле сравнить значение реквизита синоним с параметром функции вернуть имя перечисления.
Исходный код функции ИмяПеречисленияПоСинониму (СинонимПеречисления):
Код 1C v 8.х
// Возвращает имя перечисления по известному значению синонима
// Пример пСиснонимПеречисления = "Юр физ лицо" тип строка,
// возвращаемое значение имя = "ЮрФизЛицо", тип строка
Функция ИмяПеречисленияПоСинониму( пСинонимПеречисления ) Экспорт
КолекцияПеречислений = Метаданные.Перечисления;
Для каждого пНайденноеЗначение из КолекцияПеречислений Цикл
Если пНайденноеЗначение.Синоним = пСинонимПеречисления Тогда
Возврат пНайденноеЗначение.Имя;
КонецЕсли;
КонецЦикла;
Возврат неопределено;
КонецФункции
Синонимы объектов 1с
Синонимы в 1с имеются практически у всех объектов. Синоним объекта конфигурации назначается для пользователя. Именно пользователь конфигурации работает с объектом ориентируясь на его синоним. Соответственно он должен быть назначен исходя из назначения объекта. Также необходимо учесть функции выполняемые объектом.
что такое синоним объекта 1с
Синоним объекта должен быть определен так, чтобы осмысленно, лаконично описывать объект. Заполняется обязательно.
Данное требование продиктовано тем, что синонимы непосредственно участвуют в формировании пользовательского интерфейса (отображаются в формах, отчетах, командном интерфейсе и т.д.) и поэтому должны корректно и одинаково во всех местах пользовательского интерфейса идентифицировать ту сущность, к которой они относятся. Помимо объектов метаданных, требование распостраняется также и на реквизиты объектов метаданных, табличные части, реквизиты табличных частей, измерения регистров, ресурсы и другие объекты конфигурации, у которых имеется синоним.
Синоним объекта 1с справочник
Объект конфигурации Справочник обладает свойством синоним. Оно задается на вкладке Основные

Синоним объекта 1с перечисление
Объект конфигурации Перечисление обладает свойством синоним. Оно задается на вкладке Основные

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

Обработки нахождения отчетов в 1с имеет следующий код:

Ссылка на архив: http://ithelpyou.ru/wp-content/uploads/2021/02/ПоискСинонимовОтчетов.zip
Обработка нахождения отчета по синониму
Внешняя обработка нахождения отчета по синониму. Синоним вводится в текстовое поле. Код очень похож на описанный ранее.
Результат выполнения обработки:
Файл внешней обработки:http://ithelpyou.ru/wp-content/uploads/2022/07/ПоискСинонимовОтчетов2.zip




