Имя: Пароль:
1C
1С v8
Можно как-то узнать значение (представление) перечисления в 1с77 из 1с82?
,
0 palpetrovich
 
08.05.13
15:09
Подключаюсь так:
База77 = Новый COMОбъект("V77.Application");

может как-то через Метаданные? не найду решения пока
1 zharkin
 
08.05.13
15:11
я так делал
Функция ПолучитьЗначениеПеречисления(ИмяПеречисления, COMЗначение)

   Если Метаданные["Перечисления"][ИмяПеречисления].ЗначенияПеречисления.Найти(COMИсточник.XMLString(COMЗначение)) = Неопределено Тогда
       Возврат Неопределено;
   КонецЕсли;
   
   Возврат Перечисления[ИмяПеречисления][COMИсточник.XMLString(COMЗначение)];

КонецФункции // ПолучитьЗначениеПеречисления()
2 zharkin
 
08.05.13
15:12
сорри, это 8->8
3 palpetrovich
 
08.05.13
15:13
(1) угу, я для 8->8 тоже XMLString пользовался
4 zharkin
 
08.05.13
15:13
вот так делал
Функция ПолучитьЗначениеПеречисления(ИмяПеречисления, COMЗначение) Экспорт

   Если Метаданные["Перечисления"][ИмяПеречисления].ЗначенияПеречисления.Найти(COMЗначение.Идентификатор()) = Неопределено Тогда
       Возврат Неопределено;
   КонецЕсли;
   
   Возврат Перечисления[ИмяПеречисления][COMЗначение.Идентификатор()];

КонецФункции // ПолучитьЗначениеПеречисления()
5 palpetrovich
 
08.05.13
15:14
+(0) тулю горбатого: База77.Метаданные.Перечисление([Спр77.ВидКонтрагента]).Значение()

гворит - "ожидается выражение" :)
6 palpetrovich
 
08.05.13
15:16
(4) меня терзают смутные сомненья по поводу: Возврат Перечисления[ИмяПеречисления][COMЗначение.Идентификатор()];

...ну какие еще  "Перечисления"
7 zharkin
 
08.05.13
15:18
ты что хочешь получить на выходе?
8 zharkin
 
08.05.13
15:19
у тебя перенос данных из 8 в 7?
9 palpetrovich
 
08.05.13
15:20
(8) наоборот
Спасибо, натолкнул, банально вот это:  
Спр77.ВидКонтрагента.Идентификатор()

дает нужный результат
10 palpetrovich
 
08.05.13
15:20
+9 то-бишь в твоей пункуации: COMЗначение.Идентификатор() :)
11 1Сергей
 
08.05.13
15:20
не нужно обращаться к метаданным тут вообще
12 zharkin
 
08.05.13
15:21
(10) - аха
13 palpetrovich
 
08.05.13
15:23
(11) та да, оказывается тут проще чем в 8+8 :)
14 Ковычки
 
08.05.13
15:30
EvalExpr ?
15 Ковычки
 
08.05.13
15:31
Дак нужно значение, идентификатор или представление ?
16 palpetrovich
 
08.05.13
15:48
(15) точного совпадения нет, поэтому приходится так:
           Если Спр77.ВидКонтрагента.Идентификатор() = "Организация" Тогда
               НовыйОбъект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
           Иначе
               НовыйОбъект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо;
           КонецЕсли;
17 drongo-god
 
08.05.13
16:01
(16) Так же релизовывал. По другому не получалось.
18 Ковычки
 
08.05.13
16:07
БазаОле.глПеременная=БазаОле.Метаданные.Перечисление(1).Значение(1);
   Сообщить(БазаОле.EvalExpr("глПеременная.Представление"));
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший