Всем привет. Написал быструю обработку для выгрузки прайса в Excel. На рабочем компе все супер-пупер. Просто летает. 65000 строк номенклатуры выгружается за полминуты.
Пришел на рабочий сервер и, иссесна не взлетел.
Так-с. Имеем сервер, или он имеет нас:
WS 2008 R2 x64
Office 2003 x32
Сервер 1С 8.2
Исполняемый код:
Сначала обработка ругалась так:
Установил какие только можно AccessDatabaseEngine и 2007 и 2010, и MDAC - ошибка не лечилась.
Потом пропихнул AccessDatabaseEngine_x64, установив с ключом /passive
Проверил права в реестре на ODBC.INI, выдал полные права пользователю 1С.
И.... о чудо.
Ошибка изменилась.
Работает только с провайдером Provider=Microsoft.ACE.OLEDB.12.0
Теперь имеем такое:
Если файл не создан
Если файл существует:
Идеи иссякли. я уже просто не знаю куда посмотреть и копать... (((
А выгружать прайс привычным COMОбъект("Excel.Application") - сдохнуть можно, пока дождешься...
Может кто поскажет еще какие варианты где подкрутить-посмотреть..
Пришел на рабочий сервер и, иссесна не взлетел.
Так-с. Имеем сервер, или он имеет нас:
WS 2008 R2 x64
Office 2003 x32
Сервер 1С 8.2
Исполняемый код:
СтрокаПодключения = "
|Provider=Microsoft.Jet.OLEDB.4.0;
//|Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source="+ИмяФайла+";
|Extended Properties=""Excel 8.0;HDR=No;"";";
Catalog = Новый COMОбъект("ADOX.Catalog");
Catalog.ActiveConnection = СтрокаПодключения;
Table = Новый COMОбъект("ADOX.Table");
Table.Name = "Table";
Column = Новый COMОбъект("ADOX.Column");
Column.Name = "Код";
Column.Type = 5;
Table.Columns.Append(Column);
Column = Новый COMОбъект("ADOX.Column");
Column.Name = "Наименование";
Column.Type = 202;
Table.Columns.Append(Column);
Catalog.Tables.Append(Table);
Table = Неопределено;
Catalog = Неопределено;
Connection = Новый COMОбъект("ADODB.Connection");
Connection.Open(СтрокаПодключения);
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;
Command.CommandType = 1;
Запрос = Новый Запрос("
|ВЫБРАТЬ ПЕРВЫЕ 65500
| Номенклатура.Код,
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура");
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Command.CommandText = "
|INS ERT IN TO [Table] VALUES ("+Выборка.Код+",'"+Выборка.Наименование+"')";
Command.Execute();
КонецЦикла;
Command = Неопределено;
Connection.Close();
Connection = Неопределено;
ПоказатьСначала обработка ругалась так:
Произошла исключительная ситуация (ADOX.Catalog): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
Установил какие только можно AccessDatabaseEngine и 2007 и 2010, и MDAC - ошибка не лечилась.
Потом пропихнул AccessDatabaseEngine_x64, установив с ключом /passive
Проверил права в реестре на ODBC.INI, выдал полные права пользователю 1С.
И.... о чудо.
Ошибка изменилась.
Работает только с провайдером Provider=Microsoft.ACE.OLEDB.12.0
Теперь имеем такое:
Если файл не создан
Ошибка при установке значения атрибута контекста (ActiveConnection)
Catalog.ActiveConnection = СтрокаПодключения;
по причине:
Произошла исключительная ситуация (Microsoft Access Database Engine): The Microsoft Access database engine could not find the object 'D:\price.xls'. Make sure the object exists and that you spell its name and the path name correctly. If 'D:\price.xls' is not a local object, check your network connection or contact the server administrator.
Catalog.ActiveConnection = СтрокаПодключения;
по причине:
Произошла исключительная ситуация (Microsoft Access Database Engine): The Microsoft Access database engine could not find the object 'D:\price.xls'. Make sure the object exists and that you spell its name and the path name correctly. If 'D:\price.xls' is not a local object, check your network connection or contact the server administrator.
Если файл существует:
Ошибка при вызове метода контекста (Append)
Catalog.Tables.Append(Table);
по причине:
Произошла исключительная ситуация (Microsoft Access Database Engine): Cannot update. Database or object is read-only.
Catalog.Tables.Append(Table);
по причине:
Произошла исключительная ситуация (Microsoft Access Database Engine): Cannot update. Database or object is read-only.
Идеи иссякли. я уже просто не знаю куда посмотреть и копать... (((
А выгружать прайс привычным COMОбъект("Excel.Application") - сдохнуть можно, пока дождешься...
Может кто поскажет еще какие варианты где подкрутить-посмотреть..
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
На компе файловая база? А на сервере клиент сервер? И вы пытаетесь со своего компа запустить на рабочей базе указав свой локальный путь, и сервер его не может найти?
Перевод в грубой форме:
The Microsoft Access database engine could not find the object 'D:\price.xls'. Make sure the object exists and that you spell its name and the path name correctly. If 'D:\price.xls' is not a local object, check your network connection or contact the server administrator.
Ядро базы данных Microsoft Access не может найти объект 'D: \price.xls.
Убедитесь, что объект существует и что вы записываете его имя и путь правильно. Если 'D: \ price.xls »не является локальным объектом, проверьте подключение к сети или обратитесь к администратору сервера.
Перевод в грубой форме:
The Microsoft Access database engine could not find the object 'D:\price.xls'. Make sure the object exists and that you spell its name and the path name correctly. If 'D:\price.xls' is not a local object, check your network connection or contact the server administrator.
Ядро базы данных Microsoft Access не может найти объект 'D: \price.xls.
Убедитесь, что объект существует и что вы записываете его имя и путь правильно. Если 'D: \ price.xls »не является локальным объектом, проверьте подключение к сети или обратитесь к администратору сервера.
(2) anterehin, эммм... там какбэ в диалоге указывается путь к файлу. На локальном компе - если файла нет, он создается и пишется. А тут просто ругается - нету. БОлее того, если создать пустой файл эксель в нужном месте - он скажет, что файл ридонли. (эксель точно закрыт)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот