Имя: Пароль:
1C
1С v8
Получение данных 1С 7.7 из 1С 8.3 посредством OLE
0 bUbA
 
05.04.20
16:51
Добрый день!

Возникла необходимость переноса некоторых данных по проводкам из 7 в 8 (8.3.15.1565), обе базы файловые.
Выполняю подключение с и из клиентских процедур, и из серверных. Использую следующие объекты:
V1CEnterprise.Application
V77.Application
V77L.Application

Подключение проходит, COM объект получаю во всех случаях. Дальше выполняю запрос:

ТекстЗапр =
    "//{{ЗАПРОС(Сформировать)
    |Период с '" + НачПериода + "' по '" + КонПериода + "';
    |ОбрабатыватьОперации Все;
    |ДатаОперации = Операция.ДатаОперации;
    |СуммаОперации = Операция.СуммаОперации;
    |СчетД = Операция.Дебет.Счет;
    |СчетК = Операция.Кредит.Счет;
    |ТекущийДокумент = Операция.ТекущийДокумент;
    |Контрагенты = Операция.Дебет.Контрагенты, Операция.Кредит.Контрагенты;
    |Договоры = Операция.Дебет.Договоры, Операция.Кредит.Договоры;
    |Условие(СчетД=""""76.5"""");
    |//}}ЗАПРОС";

Таблица = Соединение.CreateObject("ТаблицаЗначений");
Запрос.Выполнить(ТекстЗапр);
Запрос.Выгрузить(Таблица);
Если Таблица <> 0 Тогда
   Таблица.ВыбратьСтроки();
   Пока Таблица.ПолучитьСтроку() = 1 Цикл
    
   КонецЦикла;
КонецЕсли;

Но при попытке обратиться к полям таблицы (Таблица.СчетД, Таблица.СуммаОперации и т.д.) получаю ошибку "Поле объекта не обнаружено".
Делаю по-другому:

Операция = Соединение.CreateObject("Операция");
Операция.ВыбратьОперацииСПроводками(Объект.Период.ДатаНачала, Объект.Период.ДатаОкончания, "76.5");
    
Пока Операция.ПолучитьОперацию() = 1 Цикл
        
    Сообщить(Операция);
    Для Сч = 1 По Операция.КоличествоПроводок() Цикл
    Операция.ПолучитьПроводкуПоНомеру(Сч);
    Сообщить("СчетДт " + Операция.Дебет.Счет + " СчетКт " + Операция.Кредит.Счет);
    КонецЦикла;
    
    Прервать;
КонецЦикла;

И все, что я получаю в ответ - это значение COMОбъект, никаких чисел, строк, строковых идентификаторов на другие объекты, только COMОбъект и все.

Кто-нибудь с таким сталкивался? Как получить данные?
1 skafandr
 
05.04.20
18:03
В том фрагменте ответ получаете правильно. Операция,Операция.Дебет.Счет,Операция.Кредит.Счет  - это все COMОбъект
Получайте именно элементарные данные - Операция.Содержание Операция.СуммаОперации
2 ДенисЧ
 
05.04.20
18:17
ообщить("СчетДт " + Операция.Дебет.Счет.Код + " СчетКт " + Операция.Кредит.Счет.Код);

Что говорит?