Работа с перечислениями
Для работы с перечислениями предназначена ветвь Перечисления дерева конфигурации.
Перечисление является объектом метаданных ссылочного типа и поэтому метод ПустаяСсылка() возвращает пустое значение ссылки на перечисление данного вида.
Пример:
ВидКонтрагента = Перечисления.ВидыКонтрагентов.ПустаяСсылка();
Как получить имя значения перечисления заданное в метаданных?
Чтобы определить имя значения перечисления заданное в метаданных, имея значение типа ПеречислениеСсылка, необходимо найти объект метаданных и получить его имя:
ЗначениеПеречисления = Перечисления.ВидыКонтрагентов.Организация; ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя;
Как получить индекс значения перечисления заданное в метаданных?
Метод Метаданные объекта ПеречислениеСсылка, как и у других аналогичных типов, выдает объект метаданных перечисления, а не значения перечисления.
Метод Индекс возвращает порядковый номер (индекс) перечисления в списке перечислений. Если не найдено, то возвращается -1.
ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления);
Поиск объекта метаданных значения перечисления может быть выполнен по индексу значения перечисления, полученного у менеджера перечисления:
ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя;
Свойство ЗначенияПеречисления содержит коллекцию объектов метаданных, описывающих значения данного перечисления.
Если известно имя самого перечисления и имя его значения, то получить ссылку которая будет являться значением, например субконто, можно следующим образом:
ПеречислениеСсылка = Перечисления[ИмяПречисления][ИмяЗначения];
Данную операцию целесообразно выполнить внутри оператора попытки :
Функция ПолучитьСсылкуНаЗначениеПеречисления( пИмяПеречисления, пИмяЗначения ) Экспорт
Попытка
Возврат Перечисления[пИмяПеречисления][пИмяЗначения];
исключение
Сообщить("Ошибка получения ссылки на значение перечисления. " + пИмяПеречисления + " :: " + пИмяЗначения);
Возврат неопределено;
КонецПопытки;
КонецФункции
КАК ИСПОЛЬЗОВАТЬ ПЕРЕЧИСЛЕНИЕ В ЗАПРОСЕ ?
Запрос.Текст = "
|ВЫБРАТЬ
// ...|ГДЕ
| ТипТовара = ЗНАЧЕНИЕ(Перечисление.ВидыТоваров.Услуга)// ...
|";
Авто добавление обработки в справочник Внешних обработок 0
Чтобы не изменять типовую конфигурацию приходится использовать типовой механизм внешних печатных форм и обработок. Данный код проверяет – добавлена ли открываемая обработка в конфигурацию, если нет – задает вопрос и при положительном ответе – автома
Ввести перечисление, выбор перечисления 2
// В 8-ой версии нет такой фунции, но можно сделать так:
ЗначПер=Перечисления.Важность.Средняя; //Установим перечисление предлагаемое выбрать по умолчанию
Если ВвестиЗначение(ЗначПер,”Выберите важность:”) тогда
Сообщить(ЗначПер); //обработка в
Временные таблицы, что из себя представляют и как с ними работать? 7
Временные таблицы – хранятся на сервере и позволяют писать более простые запросы.
Временные таблицы хранятся в объекте типа МенеджерВременныхТаблиц . Когда этот объект уничтожается, уничтожаются и временные таблицы.
Чтобы создать временную таблицу
Выборка (перебор) элементов справочника 4
// Выбрать( , , , )
Номенклатура = Справочники.Номенклатура;
Отбор = Новый Структура(“ТипНоменклатуры”);
Пусто = Перечисления.ТипыНоменклатуры.ПустаяСсылка();
Отбор.ТипНоменклатуры = Пусто;
Выборка = Номенклатура.Выбрать(,,Отбор, “Наимено
Выбрать движения, получить выборку записей регистра накопления 2
Пример 1 :
//Взаиморасчеты за период, хотя, это лучше выбирать запросом , он в примере 3
Отбор = Новый Структура(“Организация”, Организация);
НаборЗаписей = РегистрыНакопления.ВзаиморасчетыСРаботникамиОрганизаций.Выбрать(ПериодРегистрации, КонецМе
Посмотреть все результаты поиска похожих
|
|
|||
SAP
15.04.08 – 18:32 |
Как получить значение перечисления по имени в восьмерке? К сожалению, поиск у меня не срабатывает, поэтому прошу не ругать. |
||
artem666
1 – 15.04.08 – 18:43 |
чего? какое имя? обращайся просто – перечисления.твоеперечисление.имяперечисления |
||
SAP
2 – 15.04.08 – 18:45 |
У меня есть имя значения перечисления (символьная строка) мне надо имея это получить ссылку на значение, как это сделать? |
||
Scooter
3 – 15.04.08 – 18:46 |
здесь пошукай Книга знаний: v8: Работа с перечислениями |
||
Leksus
4 – 15.04.08 – 18:47 |
(0) Писать свою функцию, а так только по индексу |
||
SAP
5 – 15.04.08 – 18:53 |
Функцию, в смысле, компоненту? |
||
Asmody
Модератор 6 – 15.04.08 – 18:56 |
вы чего, издеваетесь? Перечисления.ИмяПеречисления[ИмяЗначенияПеречисления] – не катит уже? |
||
Asmody Модератор 7 – 15.04.08 – 18:58 |
(6)+ до кучи: |
TurboConf — расширение возможностей Конфигуратора 1С
// Возвращает значение перечисления или Неопределено
//
Функция ВернутьЗначениеПеречисления(ВидПеречисления, ЗначениеТекст)ЗначениеПеречисления = Неопределено;
Для Каждого
ТекЗначение Из Метаданные.Перечисления[ВидПеречисления].ЗначенияПеречисления Цикл
Если ТекЗначение.Имя = ЗначениеТекст Или ТекЗначение.Синоним = ЗначениеТекст Тогда
ЗначениеПеречисления = Перечисления[ВидПеречисления][ТекЗначение.Имя];
Прервать;
КонецЕсли;
КонецЦикла;
Возврат
ЗначениеПеречисления;
КонецФункции
Чтобы определить имя значения перечисления заданное в конфигурации, имея значение типа ПеречислениеСсылка, необходимо найти объект метаданных и получить его имя.
Метод Метаданные объекта ПеречислениеСсылка, как и у других аналогичных типов, выдает объект метаданных перечисления, а не значения перечисления.
Поиск объекта метаданных значения перечисления может быть выполнен по индексу значения перечисления, полученного у менеджера перечисления.
Например:
ЗначениеПеречисления = Перечисления.ВидыКонтрагентов.Организация;
ИмяПеречисления = ЗначениеПеречисления.Метаданные().Имя;
ИндексЗначенияПеречисления = Перечисления[ИмяПеречисления].Индекс(ЗначениеПеречисления);
ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя;