Имя: Пароль:
1C
1С v8
Значение перечисления по синониму перечисления?
0 Blade Runner
 
08.12.11
12:17
Передаю через COM из 7.7 в 8.2 элемент справочника, и тут оказывается, что перечисление у меня одинаковое.
Сложной конструкцией вытащил из СОМ-объекта синоним.

Подскажите люди добрые, как теперь значение получить?
Книга знаний: Работа с перечислениями
книга знаний доведет меня до запроса, но не уверен что так верно
раньше такой вопрос задавали, но не нашел ответа, например:
v8: Как красиво получить индекс значения перечисления по его синониму?
1 Галахад
 
гуру
08.12.11
12:19
(0) Непонятно. Зачем нужно значение?
2 YF
 
08.12.11
12:20
(0) Перебором
3 Живой Ископаемый
 
08.12.11
12:22
какая связь между "и тут оказывается, что перечисление у меня одинаковое. " и "Сложной конструкцией вытащил из СОМ-объекта синоним. " и почему не получить сразу значение?
4 Blade Runner
 
08.12.11
12:22
(1) чтобы при записи нового элемента справочника заполнять обязательный реквизит.
такой реквизит заполнен в 7.7, в 8.2 нет.
(2) спасибо, а можно универсальную какую-то процедурку, может встречалась?
у меня таких перечислений много.
5 Blade Runner
 
08.12.11
12:23
(3) перечисление=одинаковое.
значение <> одинаковое. так ясно?
6 YF
 
08.12.11
12:23
(4) Че там писать-то? Зная ИмяПеречисления и "синоним" ...
7 Живой Ископаемый
 
08.12.11
12:25
2(5) нет.. вообще ничего не ясно...
но читайте вот это:
v8: Как получить имя значения перечисления?
v8: Как сравнить два объекта COM?
8 Blade Runner
 
08.12.11
12:34
(7) почитал. там повсеместно используется параметр ЗначениеПеречисленияВ8
а мне он нужен как результат.

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

у меня есть неважно откуда строка "Обязательное медицинское страхование", которую нужно подставить в этот реквизит. визуально я вижу, что эта строка равна синонимому значения "Перечисление.СтатистическиеГруппы.ОбязательнаяМедицина"

как получить "Перечисление.СтатистическиеГруппы.ОбязательнаяМедицина" по значению "Обязательное медицинское страхование"??
9 Живой Ископаемый
 
08.12.11
12:36
Я не верю что "у меня есть неважно откуда строка "Обязательное медицинское страхование", "... в смысле не верю что это не важно... но если вам стыдно признаться как вы ее получили, тогда ответ в (2)
10 Галахад
 
гуру
08.12.11
12:39
Непонятно другое. В разных базах перечисления и их синонимы одинаковые.
11 Blade Runner
 
08.12.11
13:08
(9) ну тогда неясно, откуда в которой ветке такая реакция. не ясно и не верю это разное, согласитесь!
Я забрал из конфигурации на 1С 7.7 таким кодом через СОМ-объект

ЧтоНашли = v7.Метаданные.Перечисление(ЧтоОбрабатываем.Вид()).Значение(ЧтоОбрабатываем.порядковыйНомер()).Представление();

(10) это особенность предметной области. ты можешь при проектировке назвать перечисление ОбязМедицина, можешь ОбязательнаяМедицина, а можешь и ОМ.
но вот синоним должен быть корректным. он пользователю показывается, выводится на печать и пр.
а в чем проблема, никогда не видели такого при сопоставлении решений на 7.7 - 8.х?
12 Живой Ископаемый
 
08.12.11
13:21
2(11) то есть синонимы совпадают, а значения не совпадают... мы с (2) переливаем из пустого в такое же...
13 Галахад
 
гуру
08.12.11
13:24
(10) Понятно. Нет никогда не видел.
14 Blade Runner
 
08.12.11
13:55
(12) да. теперь мой вопрос. я в нескольких темах видел пользователя Живой Ископаемый, там пользователь не советует, не дает примеров кода, а только говорит типо "нет.. вообще ничего не ясно... ", "переливаем из пустого"и пр.
эта тема, про Перечисления через Метаданные, она какая-то для тебя особенная?
(13) наверное у меня просто нелюбовь к "Конвертации данных" при переносе данных

всем спасибо за наводящие вопросы, тема закрыта. постараюсь функцию передать в книгу знаний
15 hhhh
 
08.12.11
13:59
(14) ну если ты смог получить синоним, значит в этом же месте ты мог получить и имя. Вопрос, нафига ты вытаскивал синоним, если мог сразу взять имя?
16 Живой Ископаемый
 
08.12.11
14:01
нет, мне просто было не ясно откуда что передается и какие граничные условия... При определенных условиях задача решалась бы.. в (0) условия озвучены не были, или я их не понял сразу.

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

2(15) он получает имя из в77 по КОМ, и там имя другое чем у такого же перечисления в в8...
17 Blade Runner
 
11.12.11
20:42
Вот такой результат, увы не смог найти как вставлять код на форуме :)

Функция НайтиПоСинонимомуЗначениеПеречисления(ИмяПеречисления, ИмяСинонима)    
   РезультФункции = "";
   
   КоличествоЗначенийПеречисления=Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления.Количество();
   КолекцияЗначенийПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления;
   Для каждого ЗначПерем из КолекцияЗначенийПеречисления Цикл
       Если СокрЛП(СтрЗаменить(ИмяСинонима, " ", "")) = СокрЛП(СтрЗаменить(ЗначПерем.Синоним, " ", "")) Тогда
           Сообщить(ЗначПерем.Синоним);
           СсылкаНаПеречисление = Перечисления[ИмяПеречисления][ЗначПерем.Имя];
           Возврат СсылкаНаПеречисление;
       КонецЕсли;
   КонецЦикла;        

Возврат РезультФункции;
КонецФункции // ()
Ошибка? Это не ошибка, это системная функция.