При загрузки данных из Экселя в спраочнике есть реквизит тип Перечисление для приведения его перечислениеСсылка
надо найти значение типа строка в перечислении. Пробовал:
Пар = Новый Структура("Отбор,СтрокаПоиска");
Пар.СтрокаПоиска = "Обычная";
Стр = Перечисления.ВариантыВажностиЗадачи.ПолучитьДанныеВыбора(Пар);
Для Каждого Строка Из Стр Цикл
Сообщить(Строка);
КонецЦикла;
Стр - пустой список. Не могу понять какие параметры задаю не правильно?
надо найти значение типа строка в перечислении. Пробовал:
Пар = Новый Структура("Отбор,СтрокаПоиска");
Пар.СтрокаПоиска = "Обычная";
Стр = Перечисления.ВариантыВажностиЗадачи.ПолучитьДанныеВыбора(Пар);
Для Каждого Строка Из Стр Цикл
Сообщить(Строка);
КонецЦикла;
Стр - пустой список. Не могу понять какие параметры задаю не правильно?
По теме из базы знаний
- Всякие полезности
- Программные перечисления, ч.2: приемы кэширования при разработке
- Получение Имени метаданных Перечисления по значению и поиск значения по Имени
- Новичок новичку: как выгрузить/загрузить XML данные
- История одного админа в мире 1С. Как поиски причины тормозов 1С привели к созданию нового продукта
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) alw-1, может конечно не в тему, но к значениям перечисления можно обращаться по имени заданному в строковом виде.
Т.е. например у нас есть значнеие перечисления "Перечисления.ВариантыВажностиЗадачи.Обычная", мы можем ее получить и так:
ИмяЗначения = "Обычная";
СсылкаНаПеречисление = Перечисления.ВариантыВажностиЗадачи[ИмяЗначения];
этого достаточно.
или не об этом вопрос был?
ЗЫ. Кстати, для меня вобоще загадка для чего в перечислениях может понадобится ПолучитьДанныеВыбора с отбором параметров? Может кто прояснит что там отбирать то?
Т.е. например у нас есть значнеие перечисления "Перечисления.ВариантыВажностиЗадачи.Обычная", мы можем ее получить и так:
ИмяЗначения = "Обычная";
СсылкаНаПеречисление = Перечисления.ВариантыВажностиЗадачи[ИмяЗначения];
этого достаточно.
или не об этом вопрос был?
ЗЫ. Кстати, для меня вобоще загадка для чего в перечислениях может понадобится ПолучитьДанныеВыбора с отбором параметров? Может кто прояснит что там отбирать то?
(4) alw-1, нет, скорее всего вывалится ошибка. Так что надо делать в "Попытке... исключение ... конецПопытки"
Ну можно конечно проверить через метаданные (есть ли такое значение или нет), но проше через попытку (хотя наверно "методологически" не правильно :) )
Ну можно конечно проверить через метаданные (есть ли такое значение или нет), но проше через попытку (хотя наверно "методологически" не правильно :) )
(1)
Перебор по метаданным.
Для синонима перечисления.
Перебор по метаданным.
Для синонима перечисления.
Для каждого ЭлементПеречисления Из Метаданные.Перечисления.ВариантыВажностиЗадачи.ЗначенияПеречисления Цикл
Если ЭлементПеречисления.Синоним = Какая_то_строка Тогда
СсылкаНаПеречисление = Перечисления.ВариантыВажностиЗадачи[ЭлементПеречисления.Имя];
Прервать;
КонецЕсли;
КонецЦикла;
(7) можно не только по имени, а и по "Порядок". Например у меня в обоих базах, стоящих в обменке, Перечисление СтатусыУслуг имеет очень большой перечень данных и неудобно эти Наименования в запросе перебирать, запихивая их в строку, а вот Порядок данного перечисления и в той и в другой базе одинаковый, сл.передаю этот Порядок(число), а в принимающей базе - просто по этому порядку (он же Индекс)- получаю ссылку на нужное значение перечисления:
новСтр.ИсходныйСтатус=Перечисления.СтатусыУслуг.Получить(стр.ИсходныйСтатусПорядок);
(17)Гениально. *сарказм*
Изменится по какой-то причине перечень/порядок элементов в одной из баз, вот рады то будут пользователи, что обмен как бы работает, но данные не те.
Так раскидывать грабли, чтобы потом на них самому же наступать... скучно живете?
В БСП есть функция в модуле ОбщегоНазначения:
Передавайте имя перечисления из одной в базы в другую.
Если у вас нет в базе БСП, добавьте функцию самостоятельно в общий модуль.
Изменится по какой-то причине перечень/порядок элементов в одной из баз, вот рады то будут пользователи, что обмен как бы работает, но данные не те.
Так раскидывать грабли, чтобы потом на них самому же наступать... скучно живете?
В БСП есть функция в модуле ОбщегоНазначения:
Функция ИмяЗначенияПеречисления(Значение) Экспорт
ОбъектМетаданных = Значение.Метаданные();
ИндексЗначения = Перечисления[ОбъектМетаданных.Имя].Индекс(Значение);
Возврат ОбъектМетаданных.ЗначенияПеречисления[ИндексЗначения].Имя;
КонецФункции
Передавайте имя перечисления из одной в базы в другую.
Если у вас нет в базе БСП, добавьте функцию самостоятельно в общий модуль.
Прикрепленные файлы:
(1) Для имени перечисления
Мета = Метаданные.Перечисления.ВариантыВажностиЗадачи.ЗначенияПеречисления.Найти(Какая_то_Строка);
Если Мета <> Неопределено Тогда
СсылкаНаПеречисление = Перечисления.ВариантыВажностиЗадачи[Мета.Имя];
КонецЕсли;
Получение строкового значения имени перечисления:
Функция ФПеречисление(Значение) Экспорт
Если Значение.Пустая() Тогда
Возврат "";
КонецЕсли;
//получаем как названо перечисление в конфигураторе
ИмяПеречисления = Значение.Метаданные().Имя;
//теперь получим индекс где хранится то что нам надо
НужныйИндекс = Перечисления[ИмяПеречисления].Индекс(Значение);
//и вот счастье. то что нам надо - идентификатор!!! всего-то четыре строчки кода
ИмяЗначения = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[НужныйИндекс].Имя;
Возврат ИмяЗначения;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот