[РЕШЕНО] Получить ссылку на группу справочника через COMОбъект

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем A|_E><Ey, 25 мар 2015.

  1. TopicStarter Overlay
    A|_E><Ey
    Offline

    A|_E><Ey Опытный в 1С

    Регистрация:
    13 дек 2012
    Сообщения:
    356
    Симпатии:
    2
    Баллы:
    29
    Здравствуйте уважаемые форумчане, такой вопрос, хочу перебросить группу контрагентов из одной базы в другую, пишу обработку которая будет цеплять контрагентов из базы "Источника", помещать их в табличную часть обработки и в последующем создавать новые элементы справочников в базе Приемнике.

    Код:
      
        П = "Srvr=""192.168.40.7"";Ref=""main"";Usr=""Орлов А.С."";Pwd=""12345""";
        //П="";
        V8 = Новый COMОбъект("V82.COMConnector");
        Попытка
            База = V8.Connect(П);
        Исключение
            Сообщение       = Новый СообщениеПользователю();
            Сообщение.Текст = "Ошибка открытия информационной базы"; 
            Сообщение.Сообщить();
            Возврат;
        КонецПопытки;
    
            ЗапросКонтрагентов = База.NewObject("Запрос");
            ЗапросКонтрагентов.Текст ="ВЫБРАТЬ
                                      |    Контрагенты.НаименованиеПолное,
                                      |    Контрагенты.Комментарий,
                                      |    Контрагенты.ДополнительноеОписание,
                                      |    Контрагенты.ГоловнойКонтрагент,
                                      |    Контрагенты.ИсточникИнформацииПриОбращении,
                                      |    Контрагенты.КодПоОКПО,
                                      |    Контрагенты.ИНН,
                                      |    Контрагенты.КПП,
                                      |    Контрагенты.ЮрФизЛицо,
                                      |    Контрагенты.ОсновнойБанковскийСчет,
                                      |    Контрагенты.ОсновнойДоговорКонтрагента,
                                      |    Контрагенты.ОсновнойВидДеятельности,
                                      |    Контрагенты.ДокументУдостоверяющийЛичность,
                                      |    Контрагенты.ОсновнойМенеджерПокупателя,
                                      |    Контрагенты.Покупатель,
                                      |    Контрагенты.Поставщик,
                                      |    Контрагенты.РасписаниеРаботыСтрокой,
                                      |    Контрагенты.СрокВыполненияЗаказаПоставщиком,
                                      |    Контрагенты.ОсновноеКонтактноеЛицо,
                                      |    Контрагенты.НеЯвляетсяРезидентом,
                                      |    Контрагенты.ОКОПФ,
                                      |    Контрагенты.Регион,
                                      |    Контрагенты.ГруппаДоступаКонтрагента,
                                      |    Контрагенты.МОЛ_Склад,
                                      |    Контрагенты.Мерчендайзер,
                                      |    Контрагенты.ТипГрузополучателя,
                                      |    Контрагенты.ОбособленноеПодразделение,
                                      |    Контрагенты.ДатаПриемкиНач,
                                      |    Контрагенты.ДатаПриемкиКон,
                                      |    Контрагенты.ТипТТ,
                                      |    Контрагенты.РегионММЛ
                                      |ИЗ
                                      |    Справочник.Контрагенты КАК Контрагенты
                                      |ГДЕ
                                      |    Контрагенты.Ссылка В ИЕРАРХИИ(&Ссылка)
                                      |    И Контрагенты.ЭтоГруппа = ИСТИНА";
                                   
          ЗапросНаГруппу = База.NewObject("Запрос");
          ЗапросНаГруппу.Текст = "
                          |ВЫБРАТЬ
                          |    Контрагенты.Ссылка КАК Группа
                          |ИЗ
                          |    Справочник.Контрагенты КАК Контрагенты
                          |ГДЕ
                          |    Контрагенты.ЭтоГруппа = ИСТИНА
                          |    И Контрагенты.Код = &Код";
          ЗапросНаГруппу.УстановитьПараметр("Код","000008648");
          ВыборкаПоГруппе = ЗапросНаГруппу.Выполнить().Выбрать();
                                
          Пока ВыборкаПоГруппе.Следующий() Цикл
               Группа = ВыборкаПоГруппе.Группа;
          КонецЦикла;
       
          ЗапросКонтрагентов.УстановитьПараметр("Ссылка",Группа);
          Выборка = ЗапросКонтрагентов.Выполнить().Выгрузить(ТаблицаКонтрагентов);
    Проблемма в том чтобы получить ссылку на группу справочника с ссылочным типом данных, с COMОбъектами столкнулся впервые, не GetRef не ПолучитьСсылку() не работает, никто не сталкивался с данной проблеммой?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Дык передавай UID в виде строки, а дальше уже получай ссылку.
  3. TopicStarter Overlay
    A|_E><Ey
    Offline

    A|_E><Ey Опытный в 1С

    Регистрация:
    13 дек 2012
    Сообщения:
    356
    Симпатии:
    2
    Баллы:
    29

    Вложения:

  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    UUID - это зарезервированное слово.

    Строка(СсылкаНаОбъкт.УникальныйИдентификатор())
  5. TopicStarter Overlay
    A|_E><Ey
    Offline

    A|_E><Ey Опытный в 1С

    Регистрация:
    13 дек 2012
    Сообщения:
    356
    Симпатии:
    2
    Баллы:
    29
    Все получилось, спасибо за подсказку, может кому то понадобится
    Код:
    Пока ВыборкаПоГруппе.Следующий() Цикл
             СтрокаUUID = База.String(ВыборкаПоГруппе.Группа.уникальныйидентификатор());
             UUID = новый уникальныйидентификатор(СтрокаUUID);
             Ссылка = Справочники.Контрагенты.ПолучитьСсылку(UUID);
         КонецЦикла;
  6. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Так сделайте:
    Код:
    Пока ВыборкаПоГруппе.Следующий() Цикл
      СтрокаUUID = База.String(ВыборкаПоГруппе.Группа.уникальныйидентификатор());
      UUID = новый уникальныйидентификатор(СтрокаUUID);
      Ссылка = Справочники.Контрагенты.ПолучитьСсылку(UUID);
      Если Ссылка.ПолучитьОбъект() = Неопределено Тогда
        ВызватьИсключение ("Не найдена группа");
      КонецЕсли;
    КонецЦикла;
    

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