7.7 Табличная часть документа по OLE

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем mirko, 18 авг 2016.

  1. TopicStarter Overlay
    mirko
    Offline

    mirko

    Регистрация:
    18 авг 2016
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Нужно перенести часть данных из документа Реализация (ТиС) по 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 Цикл
            Сообщить (ДокОле.Номенклатура);
            Сообщить (ДокОле.Количество);
            Сообщить (ДокОле.Сумма);
        КонецЦикла;
        КонецЦикла; 
    КонецПроцедуры
    Как сделать корректный перенос Наименования? Может дело в том, что Наименование в документе загружается из справочника? Хотя проверка получения реквизитов непосредственно в донорской базе не выявила проблем: там наименование запросто извлекается перебором строк.
    Последнее редактирование: 18 авг 2016
  2. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Конечно тип Справочник.ТМЦ в одной базе не равен типу Справочник.ТМЦ в другой для 1с это два разных типа. Надо читать с базы источника наименование или код и искать в аналогичном справочнике в базе приемнике. либо создать какой нибудь справочник согласования

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