Имя: Пароль:
1C
 
Как сравнить два объекта COM?
,
0 Triumph
 
11.05.11
12:23
Подключение через COM к базе, нужно сравнить два COM-объекта и по результату в текущей базе получить аналогичный элемент, вот пример:

//эл.ТипСуммы - комобъект
Если эл.ТипСуммы = База.Перечисления.ВидыСумм.Значение1 Тогда
стр.ТипСуммы = Перечисления.ВидыСумм.Значение1;            
ИначеЕсли эл.ТипСуммы = База.Перечисления.ВидыСумм.Значение2Тогда
стр.ТипСуммы = Перечисления.ВидыСумм.Значение2;
КонецЕсли;

В результате ни одно условие не срабатывает, как тут быть?
1 Jstunner
 
11.05.11
12:24
может, ТипСуммы равен Значению3?
2 Mitriy
 
11.05.11
12:25
или вообще пустое...
3 Amiralnar
 
11.05.11
12:26
сравнивайте по номеру или представлению
4 Triumph
 
11.05.11
12:36
(1), нет все это проверено в первую очередь, типы и значения правильные.
(3) Как это сделать с перечислениями, там только две функции Метаданные() и Пустая() ?
5 Axel2009
 
11.05.11
12:39
в поиске найти. значение перечисления в comобъектах.. уже не раз обсуждалось
6 Alpen906
 
11.05.11
12:40
Я сделал так. Не знаю, может есть другой вариант.

Функция ПолучитьЗначениеПеречисления(ВидПеречисления, ЗначениеПеречисленияВ8)
   Ном = Соединение.Перечисления[ВидПеречисления].Индекс(ЗначениеПеречисленияВ8);
   Имя = Соединение.Метаданные().Перечисления[ВидПеречисления].EnumValues.Получить(Ном).Имя;
   Возврат Имя;
КонецФункции
7 DmitrO
 
11.05.11
12:43
Или использовать объект СравнениеЗначений (той базы конечно).

БазаСравнениеЗначений = База.NewObject("СравнениеЗначений");

Если БазаСравнениеЗначений.Сравнить(эл.ТипСуммы, База.Перечисления.ВидыСумм.Значение1) Тогда
стр.ТипСуммы = Перечисления.ВидыСумм.Значение1;
...
8 Mitriy
 
11.05.11
12:44
можно так... с предварительными проверками, если нужно, на пустые и типы, если там составной...

стр.ТипСуммы = Перечисления.ВидыСумм[XMLСтрока.эл.ТипСуммы];
9 Mitriy
 
11.05.11
12:45
стр.ТипСуммы = Перечисления.ВидыСумм[XMLСтрока(эл.ТипСуммы)];
10 DmitrO
 
11.05.11
12:46
(7)+ точнее так надо:
Если БазаСравнениеЗначений.Сравнить(эл.ТипСуммы, База.Перечисления.ВидыСумм.Значение1)=0 Тогда
стр.ТипСуммы = Перечисления.ВидыСумм.Значение1;
...
11 Mitriy
 
11.05.11
12:47
блин...
12 Mitriy
 
11.05.11
12:48
стр.ТипСуммы = Перечисления.ВидыСумм[База.XMLСтрока(эл.ТипСуммы)];
13 Triumph
 
11.05.11
12:55
(10),(12), спасибо парни,оба способа подошли, выручили:)