[РЕШЕНО] Перечисление в COM-соединении

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем alexburn, 29 май 2017.

  1. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    554
    Баллы:
    204
    Приветствую, ребята! Столкнулся с такой проблемой. Как при COM-соединении установить значение перечисления? Т.е. у меня код:
    Код:
    Функция СоздатьКонтрагента(Подключение)
    КонтрагентВЦБ = Подключение.Справочники.Контрагенты.СоздатьЭлемент();
    КонтрагентВЦБ.ЮридическоеФизическоеЛицо = НайтиПеречисление(ЗапросКЦБ, ДокументПолис.Страхователь.ЮридическоеФизическоеЛицо, "ЮридическоеФизическоеЛицо");
    Попытка
            КонтрагентВЦБ.Записать();
            Возврат КонтрагентВЦБ.Ссылка;
        Исключение
            ВывестиСообщениеОбОшибке(ИнформацияОбОшибке());
        КонецПопытки;
    КонецФункции
    
    Функция НайтиПеречисление(ПарЗапросКЦБ, Знач ВыборкаПолеПеречисленияДок, ИмяПеречисления)
    
        КоличествоНайденныхПеречислений = 0;
          
        ПарЗапросКЦБ.Текст =
        "ВЫБРАТЬ
        |    ПРЕДСТАВЛЕНИЕ("+ИмяПеречисления+".Ссылка) КАК СсылкаСтрока,
        |    "+ИмяПеречисления+".Ссылка КАК Ссылка
        |ИЗ
        |    Перечисление."+ИмяПеречисления+" КАК "+ИмяПеречисления+"";
      
        Результат = ПарЗапросКЦБ.Выполнить();
        ВыборкаЦБ = Результат.Выбрать();
      
        Пока ВыборкаЦБ.Следующий() Цикл
    
            Если ВыборкаЦБ.СсылкаСтрока = Строка(ВыборкаПолеПеречисленияДок) Тогда
                КоличествоНайденныхПеречислений = КоличествоНайденныхПеречислений + 1;
                НайденнаяСсылка = ВыборкаЦБ.Ссылка;
            КонецЕсли;
          
        КонецЦикла;
      
        Если  КоличествоНайденныхПеречислений > 0 Тогда
            Возврат  НайденнаяСсылка;
        Иначе
            Возврат Неопределено;
        КонецЕсли;
    
    КонецФункции
    Контрагент создается нормально, только вот Юр-Физ лицо у контрагента остается пустое. В отладчике смотрю - НайденнаяСсылка имеет тип COM-object, т.е. по сути то что требуется.
    Пробовал так же устанавливать напрямую значение перечисления:
    Код:
    КонтрагентВЦБ.ЮридическоеФизическоеЛицо = Подключение.Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
    Но опять пустое значение в базе-приемнике.
    Подскажите пожалуйста, что делать с перечислениями в COM-соединении на 8.3 ?
  2. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.807
    Симпатии:
    496
    Баллы:
    104
    Здарова. Видел недавно в инете пример. Может подойдет
    Код:
    Ном = COM_ОбъектБД.Перечисления.ВидыТМЦ.Индекс(COM_ЭлементСправочника.Перечисление);
    Имя = COM_ОбъектБД.Метаданные().Перечисления.ВидПеречисления.EnumValues.Get(Ном).Name;
    
  3. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    554
    Баллы:
    204
    Что за COM_ОбъектБД ? Подключение в моем случае ?
    COM_ЭлементСправочника.Перечисление - наименование перечисления в базе источнике ?
    Что-то какая-то странная конструкция, раньше проще было:
    Код:
    Подключение.Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
  4. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.807
    Симпатии:
    496
    Баллы:
    104
    Наверное. Сам с COM давно не работал. Случайно увидел.
    --- Объединение сообщений, 29 май 2017 ---
    А через Метаданные() не идет?
  5. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    554
    Баллы:
    204
    Ну я с помощью запроса сделал, пока не знаю, верно ли работает. Чуть позже отпишусь.
  6. TopicStarter Overlay
    alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    554
    Баллы:
    204
    Нашел все-таки ошибку. Это поле перезаполнялось в другом участке кода. Так что все работает :), всем откликнувшимся огромное спасибо!!!

Поделиться этой страницей