COM-соединение Фича или баг?

1. asdfgcom 415 20.04.19 20:42 Сейчас в теме
Подключаюсь к ИБ посредством COM.
Получаю реквизит "ВидОперации" из ПКО.
Пытаюсь создать условие по типу получаемых данных, сравнивая их со значениями перечисления источника. Например, Если ЗначениеРеквизита = COMподключение.Перечисления.ВидыОперацийПКО.Прочее Тогда что-то-там.
Однако, Значение реквизита никогда не равно значению перечисления, хотя равно!

Источник - реквизит ПКО "ВидОперации"
База - COMподключение.

Табло:
База.XMLстрока(Источник) - "ОплатаПокупателя" - Строка
База.XMLстрока(База.Перечисления.ВидыОперацийПКО.ОплатаПокупателя) - "ОплатаПокупателя" - Строка
Источник = База.Перечисления.ВидыОперацийПКО.ОплатаПокупателя - Ложь - Булево

Чего за нафиг? Кто знает?
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
2. acanta 20.04.19 21:10 Сейчас в теме +0.8 $m
В рамках ком соединения вы можете сравнивать(а также выполнять другие арифметические операции) только базовые типы данных.
Приводим все к строке.
А зачем в правилах конвертации писать ком соединения?
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. acanta 20.04.19 21:10 Сейчас в теме +0.8 $m
В рамках ком соединения вы можете сравнивать(а также выполнять другие арифметические операции) только базовые типы данных.
Приводим все к строке.
А зачем в правилах конвертации писать ком соединения?
+
3. dimon_tb 20.04.19 21:26 Сейчас в теме +0.2 $m
Надо найти ссылку по наименованию.
+
4. dimon_tb 20.04.19 21:28 Сейчас в теме
Источник = Перечисления.ВидыОперацийПКО.ОплатаПокупателя.Метаданные().ЗначенияПеречисления.ОплатаПокупателя.Имя

или

Перечисления.ВидыОперацийПКО[Источник] = База.Перечисления.ВидыОперацийПКО.ОплатаПокупателя
+
5. asdfgcom 415 20.04.19 22:13 Сейчас в теме
(4) "Приводим все к строке." как сказал acanta.
Буду приводить к строке. Не хотелось усложнять. Но если "только базовые типы данных", то ничего не поделаешь.
"А зачем в правилах конвертации писать ком соединения?" - а это не правила конвертации. Это конвертация с правилами ))). Написал загрузчик. Правила в нем пишу "налету". Загружаю. Не нравится - переписываю правило к тому или иному реквизиту - загружаю. До тех пор, пока не устроит. Просят постоянно загрузить из всего чего угодно вовсюда куда ума не приложу. Писать ко всему правила конвертации - можно жизнь на это положить. А так - круто. Сопоставил - загрузил. не понравилось или обновление пришло - пофигу. Условие к реквизиту прописал и вуаля.
+
6. asdfgcom 415 20.04.19 22:20 Сейчас в теме
(4) Приводить перечисления из COM легче так:
COMсоединение.XMLстрока(ДокументОбъект.ВидОперации)
вернет "ОплатаПокупателя". А что это "Перечисления.ВидыОперацийПКО" я уже и так знаю, у меня типы уже считаны.

Перечисления.ВидыОперацийПКО[Источник] = База.Перечисления.ВидыОперацийПКО.ОплатаПокупателя - это не понял. Ведь источник у нас COMобъект а Перечисления.ВидыОперацийПКО[Источник] - текущая ИБ. Следовательно надо Перечисления.ВидыОперацийПКО[COMсоединение.XMLстрока(ДокументОбъект.ВидОперации)]. Но для этого как раз и пишу правило. Имена перечислений могут не совпадать.
+
7. dimon_tb 20.04.19 22:31 Сейчас в теме
(6) не было всего текста кода, по этому просто предположил
+
8. asdfgcom 415 20.04.19 23:10 Сейчас в теме
(7) Кстати, верно предположил. Я так типы получаю из документов и справочников (Кроме составных - надо еще голову поломать).
времДок = COMподключение.Документы[ИмяЭлемента].СоздатьДокумент();
// РеквизитыДокумента - массив с реквизитами. Стандартными и не очень
Для Каждого Рекв Из РеквизитыДокумента Цикл
ПолноеИмяРеквизита = времДок[рекв].Метаданные().ПолноеИмя();

Мог допустить неточности, по памяти пишу.
тип реквизита - все, что до точки из полного имени.
с рекв. таб. части - то же самое.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот