Загрузка из Excel

1. 116hrus 6 17.12.14 16:34 Сейчас в теме
Всем доброго времени суток!
Столкнулся со следующей задачкой:
В клиент-серверном варианте не работает загрузка данных из Excel. Использую методы MS Adodb.
Появляется ошибка:

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Recordset): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.

Причем тоже самое в файловом варианте работает.

Драйвера ставил из этой темы:
http://infostart.ru/public/163640/

платформа 8.3.5.1068
конфигурация 1С:ERP Управление предприятием 2.0 (2.0.9.56)
Win 2008 R2 Standart (SP1)
Microsoft SQL Server 2008 R2
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DeniNikitin 36 17.12.14 18:34 Сейчас в теме
(1) 116hrus,
Для решения таких проблем нужна сама обработка или хотя бы код, который выполняется!!! А не просто текст ошибки.
+
3. jobkostya1c_ERP 100 17.12.14 19:47 Сейчас в теме
Тоже сегодня решил применить данный алгоритм для обработки загрузки из Екселя в БП 3.0.37.29 с формированием документов. Платформа 8.3.5.1248 стала давать крэш (белое окно). Обработку пишу с нуля для клиент-серверного варианта. Причем сама обработка перестала запускаться в БП 3.0.37.29. Нет ли какого-либо взаимодействия с операционной системой? Меняется ли что-то в самой операционной системе или это уже местные глюки. Проверяю сменой платформы, чисткой кэша. Обработка то предполагается универсальной, где екселя нет. Причем потом пошли глюки на запуск в БП 3.0.37.29 даже чистой копии обработки с формой и табличными частями. Наверняка есть какие-то проблемы с ОС?
+
4. jobkostya1c_ERP 100 17.12.14 20:00 Сейчас в теме
"Белое окно" с данными крэша:
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1CV8C.exe
Версия приложения: 8.3.5.1383
Отметка времени приложения: 548aff5c
Имя модуля с ошибкой: mngcore.dll
Версия модуля с ошибкой: 8.3.5.1383
Отметка времени модуля с ошибкой: 548b01fd
Код исключения: c0000005
Смещение исключения: 00001ae2
Версия ОС: 6.1.7601.2.1.0.256.48
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
+
5. DeniNikitin 36 17.12.14 20:39 Сейчас в теме
(4) kostyaomsk,
Для начала попробуй запустить 1С с админскими правами, двойной клик по значку не админ, выбери конкретно запустить с адином, тогда она регистрирует библиотеки и.т.д. Столкнулся с торговым оборудованием, которое не написано под 1С, но при этом вызываешь код:
	Попытка
		ЗагрузитьВнешнююКомпоненту("C:\Kodos\kodos_rd.dll");	
		kodos_rd = Новый("AddIn.kodos_rd");		
	Исключение
		Сообщить("Не удалось подключить kodos.dll");		
	КонецПопытки;

Показать


Без админа не работало, один раз запустил с админом и всё работает! 1С просто в реестре прописывает ключи для доступа к dll. А без админа не может!
succub1_5; jobkostya1c_ERP; +2
6. jobkostya1c_ERP 100 17.12.14 21:04 Сейчас в теме
Да она и так не под админскими правами на локальном ПК. Думал перехлест с фоновым заданием в БП 3.0 по технологическому журналу.
Еще версия, что обработка некорректно сохранилась. Создал новую и перетащил реквизиты и табличные части на форму эта вещь уже в 8.3.5.1383 открывается, а раньше в старой платформе 8.3.5.1248 нет. Причем установил точку останова во всех процедурах обработчиков формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
эта без ошибок. Дальше крэш.
Возможно при восстановлении настроек формы при смене версий? В новой и старой обработке убрал свойство сохранения настроек и автоматическую проверку заполнения. Возможно она и срабатывала.
Прикрепленные файлы:
+
7. Sander80 82 18.12.14 21:47 Сейчас в теме
Если это 8.3, то в клиент-серверном варианте, скорей всего, все ваши методы выполняются на сервере. А тогда надо, чтобы там был установлен офисный пакет, иначе там нужные Ком-объекты работать не будут
+
8. jobkostya1c_ERP 100 18.12.14 21:59 Сейчас в теме
(7) Sander80, база файловая на локальном ПК. Пишу просто для тонкого клиента. И еще пришлось консоль заданий под БП 3.0 переделать чтоб "убить" фоновые процессы. Чем уже отладку проводить? Трассировка в винде? Анализ Memory.DMP ?
+
9. jobkostya1c_ERP 100 19.12.14 10:30 Сейчас в теме
ситуация с конфигурацией БП 3.0.37.29 последняя. Из установчного дистрибутива демка - полностью на поддержке. Запуск в тонком клиенте на локальном компе. База файлова, права админские. При попытке запуска обычной обработки опять вылетает в дамп. Причина в самой обработке. Как отловить ошибку. Создал файл logcfg.xml для получения и анализа дампа. Получил файл 1cv8_8.3.5.1383_64e31ae2_20141219125719_3408.mdmp более 700 мб. Чем такое обрабатывать? Как искать что привело к ошибке именно в форме запускаемой обработки? По текстовым логам еще можно что-то понять?
Далее лог:
55:45.289012-0,EXCP,0,process=1cv8,Usr=DefUser,Exception=DatabaseException8,Descr="Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи) не выполнено 'DATAZONEOBJECTLOCKS'"
56:45.371021-0,EXCP,0,process=1cv8,Usr=DefUser,Exception=DatabaseException8,Descr="Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи) не выполнено 'DATAZONEOBJECTLOCKS'"
57:19.442000-0,EXCP,2,process=1cv8,Usr=Абдулов (директор),OSException=1cv8_8.3.5.1383_64e31ae2_20141219125719_3408,Context=Система.ПолучитьФорму : ВнешняяОбработка.ЗагрузкаИзЕкселяВБухгалтерию3.Form
57:19.442000-0,EXCP,2,process=1cv8,Usr=Абдулов (директор),OSException=1cv8_8.3.5.1383_64e31ae2_20141219125719_3408,Context=Система.ПолучитьФорму : ВнешняяОбработка.ЗагрузкаИзЕкселяВБухгалтерию3.Form
57:19.458000-0,EXCPCNTX,0,ClientComputerName=KOSTYAPC,ServerComputerName=KOSTYAPC,UserName=Абдулов (директор),ConnectString='File="I:\Базы_1С\БП 3.0.37.29 дек демо";',Context=Система.ПолучитьФорму : ВнешняяОбработка.ЗагрузкаИзЕкселяВБухгалтерию3.Form
57:19.458001-1156648998,EXCPCNTX,1,SrcName=SCOM,OSThread=4904,process=1cv8,ProcessName=RHostRoot,SrcProcessName=RHostRoot,Context=Система.ПолучитьФорму : ВнешняяОбработка.ЗагрузкаИзЕкселяВБухгалтерию3.Form
57:19.458002-1179690002,EXCPCNTX,0,SrcName=PROC,OSThread=4904,process=1cv8,Context=Система.ПолучитьФорму : ВнешняяОбработка.ЗагрузкаИзЕкселяВБухгалтерию3.Form
57:42.502001-0,EXCP,2,process=1cv8,Usr=Абдулов (директор),DumpError=I:\dump1c\1cv8_8.3.5.1383_64e31ae2_20141219125719_3408.mdmp,Context=Система.ПолучитьФорму : ВнешняяОбработка.ЗагрузкаИзЕкселяВБухгалтерию3.Form
+
10. jobkostya1c_ERP 100 19.12.14 10:31 Сейчас в теме
лог-файл вот:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
	<dump create="true" location="I:\dump1c" type="3"/>
	<log history="72" location="I:\log1C">
		<property name="all"/>
		<event>
			<eq property="name" value="excp"/>
		</event>
	</log>
</config>
Показать
+
11. jobkostya1c_ERP 100 19.12.14 10:38 Сейчас в теме
Это какой-то глюк самой управляемой формы платформы 8.3.5.1383? Вопрос как найти в чем причина. Создаю новую обработку переносом данных - ничего не вылетает. Упрвляемая форма открывается. Как ловить то подобные ошибки если бы было сотни элементов формы (про код вообще молчу)? Проверял с предыдущими релизами БП 3.0 тоже выпадает. Платформа последняя. Какими системными средствами диагностировать такие ошибки? Приложу полные логи:
Прикрепленные файлы:
14121912.log
14121913.log
+
12. jobkostya1c_ERP 100 19.12.14 11:20 Сейчас в теме
Как определить "битость" подобной формы без кода. Сделал копию все нормально. Как поступать в сложных случаях. Ладно если управляемую форму проще пересоздать в новой обработке?
+
13. jobkostya1c_ERP 100 19.12.14 15:16 Сейчас в теме
Установил опытным путем - платформа валится "белым окном" если добавить реквизит внешней обработки типа "ТаблицаЗначений". Интерфейс "Такси". Кто замечал подобный глюк?
+
14. DoctorRoza 19.12.14 15:44 Сейчас в теме
Переустановите патч от Microsoft, возможно поможет.
jobkostya1c_ERP; +1
19. jobkostya1c_ERP 100 21.12.14 20:57 Сейчас в теме
(14) DoctorRoza, на сайте майкрософт Проблема с Microsoft Jet OLEDB 4.0 Администрирование клиентских ОС Windows > Администрирование Windows 7 и Пример использования технологии ADO для чтения и записи данных в книгах Excel верно много что полезного по данной теме. Жаль, видимо передачу стартманей, видимо, отключили за дельные подсказки на форуме.
+
15. jobkostya1c_ERP 100 19.12.14 17:40 Сейчас в теме
Переустановил уже. Не в патче дело. Патч то от другой ошибки - для загрузки из Екселя. Видимо в модуль внешней обработки залезла процедура с чем-то, что расширенная проверка пропускает по ошибке. Раз синтаксический анализатор пропускает, то платформа и валится в момент выполнения.
+
16. caponid 19.12.14 18:17 Сейчас в теме
есть еще глюк из этой же оперы - для сервера терминалов 2012 сохранение печатной формы по сети из 1с в формате ексель отличном от .xslx приводит к непредсказуемым результатам с крахом и нечитаемым файлом
+
17. jobkostya1c_ERP 100 19.12.14 18:22 Сейчас в теме
Стоп, в модуль объекта внешней обработки закралась процедура с директивой компиляции "&НаКлиенте", а расширенная синтаксическая проверка даже не среагировала.
+
18. jobkostya1c_ERP 100 21.12.14 20:42 Сейчас в теме
И опять возвращаюсь к теме "ADO.Connection" по схожей ошибке метода Open()
Ошибка при вызове метода контекста (Open)

Также по материалам той же статьи SBS: Загрузка из EXCEL в 1С /3+1 метод/. MS ADODB.Connection нужно чтоб обработка была универсальной в режиме клинет-сервер для БП 3.0 по чтению EXCEL через ADO. Интересный глюк обнаружился при использовании в данной теме параметра provider в коде 1С 8.3.5:
Сon nectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + СокрЛП(ФайлEXCEL) + ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;""";

Пока явно не указать после строки подключения: ADODBConnection.Provider = "Microsoft.Jet.OLEDB.4.0"; в отладчике значение ADODBConnection.Provider = "SQLOLEDB", причем если явно не указать свойству Provider нужный драйвер подключения нет.
Как влияют настройки конкретного сервера (его операционной системы) на параметры подключения? Что лучше указать. Кстати переустановка патчей все-же потребовалась.
// Инициализация основного объекта ADODB.Connection. Открытие соединения.
		ADODBConnection = Новый COMОбъект("ADODB.Connection");		
		ADODBConnection.ConnectionString =  СonnectionString;		
		ADODBConnection.Provider = "Microsoft.Jet.OLEDB.4.0"; //?????  
		ADODBConnection.Open();
		// Импирически определенный параметр для правильного определения количества строк листа.
		ADODBConnection.CursorLocation = 3;    // По-умолчанию 2.
Показать

Интересно, какие еще "ключевые" параметры строки могут пригодится для чтения на разных серверах? Путь создается во временном каталоге, права на который под пользователем сеанса 1С Смотрел документацию Объект ADO.Connection, подключение к базе данных,
Ниже полная строка подключения:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=i:\1cFiles\tmp\v8_D250_9e.vf2;Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;
Прикрепленные файлы:
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот