Имя: Пароль:
1C
1C 7.7
v7: Табличная часть документа по OLE
0 mirko
 
18.08.16
17:12
Нужно перенести часть данных из документа Реализация (ТиС) по OLE в другую базу.
С номером документа и датой проблем нет, все передается, а реквизиты табличной части (например наименование) передаются, как «OLE». Причем из той же табличной части количество, цены, сумма передаются корректно.

Процедура ПереносРеквизитов()
ДатаНачало = НачНедели(РабочаяДата());
ДатаКонец = РабочаяДата();

БазаОле=СоздатьОбъект("V77.Application"); // Получаем доступ к OLE объекту 1С

КаталогБазыОле  = "E:\1c\work-bases\DB\";
ПользовательОле = "user";
ПарольОле       = "12345";
МонопольныйРежимOLE = ""; // default /m для немонопольного запуска указать пустую строку!
ЗапускБезЗаставки = 0;       // для появления заставки (например, чтобы наблюдать
                             // процесс запуска базы OLE визуально) поставьте здесь "0"
РезультатПодключения = БазаОле.Initialize ( БазаОле.RMTrade , "/d" +
                       СокрЛП(КаталогБазыОле) + " /n" + СокрЛП(ПользовательОле)+
                       " /p" + СокрЛП(ПарольОле) + МонопольныйРежимOLE,
                       ?(ЗапускБезЗаставки = 1,"NO_SPLASH_SHOW",""));
Если РезультатПодключения = 0 Тогда
     Предупреждение("Не удалось подключится к указанной базе - проверьте вводные!");
КонецЕсли;

ДокОле = БазаОле.CreateObject("Документ.Реализация");
ДокОле.ВыбратьДокументы(ДатаНачало, ДатаКонец);
Сообщить ("Синхронизируем документы реализации...","");
Пока ДокОле.ПолучитьДокумент() = 1 Цикл

    Сообщить (ДокОле.НомерДок);
    Сообщить (ДокОле.ДатаДок);

    ДокОле.ВыбратьСтроки();
    Пока ДокОле.ПолучитьСтроку() = 1 Цикл
        Сообщить (ДокОле.Номенклатура);
        Сообщить (ДокОле.Количество);
        Сообщить (ДокОле.Сумма);
    КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Как сделать корректный перенос Наименования? Может дело в том, что Наименование в документе загружается из справочника? Хотя проверка получения реквизитов непосредственно в донорской базе не выявила проблем: там наименование запросто извлекается перебором строк.
1 Зая Бусечка
 
18.08.16
17:13
Сообщить (ДокОле.Номенклатура.Наименование);
2 hhhh
 
18.08.16
17:16
через ole передаются только примитивные типы: строка, чило, дата. Всё остальное не передается.
3 Chameleon1980
 
18.08.16
19:54
поиск номенклатуры в оле базе по наименованию, коду etc.

Другие спр также.

обратите внимание на (2)
4 Злопчинский
 
18.08.16
20:07
в Книге знаний есть хорошо разжевано