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