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С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

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


Ведущий программист 1С
Сочи
зарплата от 82 500 руб. до 99 000 руб.
Полный день