|
0
Omskdizel
11.08.11
✎
11:53
|
Собственно проблемка:
Файлик Экселя с около 15к строк (это прайс поставщика, задача прикрутить остатки из него к заказу поставщику)
База УТ11, которая 7.2, но это не принципиально.
Имеется следующий код:
MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open("Driver={Microsoft Excel Driver (*.xls)};" +
"DriverId=790;" +
"Dbq=d:\1.xls;" +
"DefaultDir=d:\");
MyRst = Новый COMОбъект ("ADODB.Recordset");
MyStr = "select * from [Sklad$]";
MyRst.Open (MyStr, MyCon, 2, 3);//adOpenDynamic, adLockOptimistic
MyRst.MoveNext();
Пока НЕ MyRst.EOF() Цикл
НН=Формат((MyRst.Fields(КолонкаНН).Value),"ЧГ=0");
Если (НН<>"0") И (НН<>"") Тогда
Стр=ТЗ.Добавить();
Стр.ГруппаОборудования=СокрЛП(Строка(MyRst.Fields(КолонкаГруппаОборудования).Value));
Стр.ВидОборудования=СокрЛП(Строка(MyRst.Fields(КолонкаВидОборудования).Value));
Стр.Производитель=СокрЛП(Строка(MyRst.Fields(КолонкаПроизводитель).Value));
Стр.НН=НН;
Стр.ПартНомер=СокрЛП(Строка(MyRst.Fields(КолонкаПартНомер).Value));
Стр.НаименованиеОборудования=СокрЛП(Строка(MyRst.Fields(КолонкаНаименованиеОборудования).Value));
Стр.Цена=СокрЛП(Строка(MyRst.Fields(КолонкаЦена).Value));
Стр.ОстаткиОмск=СокрЛП(Строка(MyRst.Fields(КолонкаОстаткиОмск).Value));
Стр.ОстаткиНовосибирск=СокрЛП(Строка(MyRst.Fields(КолонкаОстаткиНовосибирск).Value));
Стр.ОстаткиЦО=СокрЛП(Строка(MyRst.Fields(КолонкаОстаткиЦО).Value));
КонецЕсли;
MyRst.MoveNext();
КонецЦикла;
MyRst.Close();
MyCon.Close();
Файл читается, ошибки не выдаются, но...
Некоторые строки из файла передаются пустыми в 1С. Т.е. иду трассировкой по строкам, а они реально пустые передаются. Причем тут же смотрю это в Экселе - там все отображается как обычно. Пропусков строк просто нет. Может кто сталкивался с подобным?
Еще по дороге вопросик - есть у RecordSet какое-нибудь свойство, чтобы посмотреть, какую строку он обрабатывает в данный момент? Посмотрел на MSDN, все примерно подходящие по смыслу пробнул, но оне не показывают номер строки. Методов тож не обнаружил.
Заранее спасибо за помощь.
|
|
|
3
ado
11.08.11
✎
12:34
|
>> Еще по дороге вопросик - есть у RecordSet какое-нибудь свойство, чтобы посмотреть, какую строку он обрабатывает в данный момент?
Нет. Насколько я знаю, RecordSet принципиально ничего не знает о таблице в целом, только о текущей записи.
|
|
|
5
Omskdizel
11.08.11
✎
13:52
|
Мда, оно не читает все отличное от нуля или положительного значения в этих колонках. Теперь приходится идти огородом - получаем файл по электронке, прогоняем по нему скрипт, который удаляет неугодное, и только потом подсовываем 1Ске. Даже и не знаю теперь кому адресовать лестные отзывы...
|
|