Имя: Пароль:
1C
1С v8
Подключение через СОМОбъект из 8.2 к 7.7 (Получить реквизит ссылочного типа)
0 america2013
 
06.12.13
12:15
Рад приветствовать, уважаемые форумчане!!!
Прошу помочь мне с такой проблемой, имею код:


    v7 = Новый COMObject("V77.Application");
    Попытка
        СтрокаПодключения = "/D""" + СокрЛП(ПутьКБазе77) + """ /N""" + СокрЛП(Пользователь) + """ /P""" + СокрЛП(Пароль) + """";
        
        Открыта = v7.Initialize(v7.RMTrade, СтрокаПодключения, "NO_SPLASH_SHOW");
    Исключение
        Предупреждение("Ошибка при подключении!");
        Сообщить(ИнформацияОбОшибке());
    КонецПопытки;
    ВыбДок = v7.CreateObject("Документ.ПлатежноеПоручение");
    ВыбДок.ВыбратьДокументы(НачПериода, КонПериода);
    Пока ВыбДок.ПолучитьДокумент() = 1 Цикл
//Здесь нормельно:
            ФормаСтатуса.СтрокаСостояния = ВыбДок.НомерДок;
            ФормаСтатуса.СтрокаСостояния = ВыбДок.ДатаДок;


//А здесь проблема!!! Выдает пустое значение : (((
            ФормаСтатуса.СтрокаСостояния = ВыбДок.ВидДвиженияДенежныхСредств.Наименование;
            
    КонецЦикла;
    
    
    v7 = "";



Подключиться удается, получить значения - документы, - тоже, а
проблема в том, что не удается получить значения реквизитов у документа, так как тип у них - Справочник. Как получить значение реквизита с типом Справочник?

Заранее благодарен!
1 Wobland
 
06.12.13
12:16
а как ты себе представляешь значение типа тамошний справочник на этой стороне?
2 DmitriyDI
 
06.12.13
12:17
(0) получаемый реквизит будет простым типом данных
3 america2013
 
06.12.13
12:23
(1) Представлял, что это будет набор простых значений типа число или строка. Вообще, когда начинал с этим работать, такой задачи не было, а сейчас планирую каким-то образом получать эти данные. Думаю над тем, что может быть стоит сначала считать в таблицу значения справочника реквизита ВидДвиженияДенежныхСредств, а затем сравнивать с получившейся таблицей, получаемые значения нужного реквизита при переборе. Понятно, что с однородными конфигами такой проблемы не было бы, но можно сделать в данном случае?
4 america2013
 
06.12.13
13:23
Что же, господа, совсем без вариантов?
5 Фомич
 
06.12.13
13:33
Создать объект, на который ссылаетесь из документа и найти его по коду/наименованию, м.б. так?
6 Фомич
 
06.12.13
13:39
КлючПоиска = ТекущаяСтрока.Виды.Наименование;
СпрВД = БазаОле.CreateObject("Справочник.ВидыДеятельности");
Если СпрВД.НайтиПоРеквизиту("КодВидов",КлючПоиска,1) = 1 Тогда
ТекВД = СпрВД.ТекущийЭлемент();
КонецЕсли;
7 america2013
 
06.12.13
13:51
(6) Благодарю за совет!
Позволил себе перефразировать ваше предложение, если не верно понял вашу мысль, прошу поправьте, вот что получилось:

    v7 = Новый COMObject("V77.Application");
    Попытка
        СтрокаПодключения = "/D""" + СокрЛП(ПутьКБазе77) + """ /N""" + СокрЛП(Пользователь) + """ /P""" + СокрЛП(Пароль) + """";
        
        Открыта = v7.Initialize(v7.RMTrade, СтрокаПодключения, "NO_SPLASH_SHOW");
    Исключение
        Предупреждение("Ошибка при подключении!");
        Сообщить(ИнформацияОбОшибке());
    КонецПопытки;
    ВыбДок = v7.CreateObject("Документ.ПлатежноеПоручение");
    СпрВД  = v7.CreateObject("Справочник.ВидыДвиженияДенежныхСредств");
    ВыбДок.ВыбратьДокументы(НачПериода, КонПериода);
    Пока ВыбДок.ПолучитьДокумент() = 1 Цикл
//Здесь нормально:
            ФормаСтатуса.СтрокаСостояния = ВыбДок.НомерДок;
            ФормаСтатуса.СтрокаСостояния = ВыбДок.ДатаДок;


//Ругается на строке!!!
            КлючПоиска = ВыбДок.ВидДвиженияДенежныхСредств.Код;

            Если СпрВД.НайтиПоРеквизиту("Код",КлючПоиска,1) = 1 Тогда
                ТекВД = СпрВД.ТекущийЭлемент();
            КонецЕсли;


//А здесь проблема!!! Выдает пустое значение : (((
            ФормаСтатуса.СтрокаСостояния = ВыбДок.ВидДвиженияДенежныхСредств.Наименование;
            
    КонецЦикла;
    
    
    v7 = "";


Выдает ошибку:
{Форма.Форма.Форма(379)}: Ошибка при вызове метода контекста (НайтиПоРеквизиту)
            Если СпрВД.НайтиПоРеквизиту("Код",КлючПоиска,1) = 1 Тогда
по причине:
Произошла исключительная ситуация (1С:Предприятие): Неверное имя реквизита!
8 hhhh
 
06.12.13
13:57
(7) "Код" - это не реквизит.
  используйте СпрВД.НайтиПоКоду
9 dk
 
06.12.13
14:04
вообще-то должен нормально через несколько точек возвращать
может проблема в том, что без выбратьстроки обращаешься к табличному реквизиту?
10 dk
 
06.12.13
14:05
или виддвижения не заполнен
или виддвижения это перечисление
или ...
короче отладчик в зубы и вперед
11 Фомич
 
06.12.13
14:17
(8) - правильно сказал, или найдите по коду или по наименованию, по реквизиту - он должен быть с "отбором по реквизиту".
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.