1. asdfgcom 317 20.04.19 20:42 Сейчас в теме

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

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

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

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

Чего за нафиг? Кто знает?
Вознаграждение за ответ
Показать полностью
Найденные решения
2. acanta 48 20.04.19 21:10 Сейчас в теме +0.8 $m
В рамках ком соединения вы можете сравнивать(а также выполнять другие арифметические операции) только базовые типы данных.
Приводим все к строке.
А зачем в правилах конвертации писать ком соединения?
Остальные ответы
Избранное Подписка Сортировка: Древо
2. acanta 48 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 317 20.04.19 22:13 Сейчас в теме
(4) "Приводим все к строке." как сказал acanta.
Буду приводить к строке. Не хотелось усложнять. Но если "только базовые типы данных", то ничего не поделаешь.
"А зачем в правилах конвертации писать ком соединения?" - а это не правила конвертации. Это конвертация с правилами ))). Написал загрузчик. Правила в нем пишу "налету". Загружаю. Не нравится - переписываю правило к тому или иному реквизиту - загружаю. До тех пор, пока не устроит. Просят постоянно загрузить из всего чего угодно вовсюда куда ума не приложу. Писать ко всему правила конвертации - можно жизнь на это положить. А так - круто. Сопоставил - загрузил. не понравилось или обновление пришло - пофигу. Условие к реквизиту прописал и вуаля.
6. asdfgcom 317 20.04.19 22:20 Сейчас в теме
(4) Приводить перечисления из COM легче так:
COMсоединение.XMLстрока(ДокументОбъект.ВидОперации)
вернет "ОплатаПокупателя". А что это "Перечисления.ВидыОперацийПКО" я уже и так знаю, у меня типы уже считаны.

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

Мог допустить неточности, по памяти пишу.
тип реквизита - все, что до точки из полного имени.
с рекв. таб. части - то же самое.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
Полный день

Работа от Инфостарт
Санкт-Петербург
Временный (на проект)

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 115 000 руб. до 160 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день