1с adodb connection не удается найти указанный поставщик
Добрый день, возникла проблема при чтении из 1С xls файла через ADO. суть проблемы: в файле 6 колонок. первые 5 колонок имеют числовой формат и они нормально считываются, а вот последняя имеет формат дата и при считывании через ADO значение в колонке null. пробовал следующие виды подключений: Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + СокрЛП(СписокНоменклатуры) + ";Extended Properties=""Excel 8.0;HDR=YES"""; "Driver=
Попробуй так еще: "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + ПараметрыПодключения.ИмяФайла + "; Extended Properties=""Excel 12.0; HDR=NO; IMEX=1;"""
Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно. - вот такая беда появляется при Connection.Open. На компе устанавливал AccessDatabaseEngine_x64.exe
У меня, кстати, так и не получилось под ADO гарантированно получать имена листов в том порядке, в котором они представлены пользователю. Пришлось ради этой чепухи стучаться в эксель напрямую (когда надо). А это долго :(
И от одной неочевидной бяки предостерегу, раскапывая которую пришлось много времени убить: если список листов получаешь через Connection.OpenSchema(adSchemaTables), то при сложном форматировании там могут быть не только листы, но и области листа. А в результате может быть такой замечательный эффект: данные как бы получаешь. Но не всегда все :)
спасибо тебе, мил человек. 2 дня убил на загрузку. имя листа всегда одно и тоже, но приму к сведению.
Так там как раз области и будут. Просто лист - это стандартная область. Ещё смертельно для ADO, когда в разных строках в одной колонке разные типы - ADO на этом выдаёт null.
Просто подавляющее большинство сэмплов кода в интернетиках для получения имени первого листа эту особенность не учитывает.
при моем первом попытке поработать с адом - я натолкнулся на простую но поразительную для меня бяку.. строк на единственном листе было тысяч пять, но адо возвращал что-то в районе 4000.. и все! так я плюнул и не юзаю адо. слава богу что не нужно.
Если имя листа определялось в коде, а не задавалось тобой фиксированно, то ты почти гарантированно натолкнулся на описанную мной бяку.
Вот я на таком же и споткнулся. Магазины присылали заявки вроде как в одном и том же шаблоне. Никаких визуальных отличий. Но из файлов пары магазинов вычитывалась только часть строк. Стал копать и докопался до . Х.з. почему там эти области появились. Может, пользователи где-то неловкое движение мышкой сделали :) Визуально тоже никаких областей и простейший формат.
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
Ранее работало, что-то изменилось в компе, уже не припомню .. Что пробовал:
1. разные строки подключения -
Connection = Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + Файл +
"; Extended Properties = ""Excel $ver$.0;HDR=YES;IMEX=1"";";
СтрокаПодключения12 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + Файл +
"; Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";";
СтрокаПодключенияACE = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + Файл +
";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;""";
Попытка
Connection.Open(СтрокаПодключения12);
Исключение
Попытка
Connection.Open(СтрокаПодключенияACE);
Исключение
Для Версия = 8 По 16 Цикл
//подключение к источнику данных
ТекСтрокаПодключения = СтрЗаменить(СтрокаПодключения, "$ver$", Строка(Версия));
Попытка
Connection.Open(ТекСтрокаПодключения);
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;
КонецЦикла;
КонецПопытки;
КонецПопытки;
2. переустанавливал OFFICE 32/64 бит
что за "Не удается найти указанный поставщик. Вероятно, он установлен неправильно." .
Этот провайдер довольно старый и существует только в 32-бит варианте. Соответственно, приложение с ним у вас работать будет только 32-битное.
вы можете просто создать где-нибудь в винде файл test.udl и запустить его на исполнение двойным щелчком. Откроется окно свойств microsoft data link. В звкладке "Поставщик данных" увидите всех провайдеров, которые у вас доступны в 64-битной среде (запускать надо именно в той винде где будет выполняться приложение). Джета 4 там точно не будет.
(4) Provider=Microsoft.ACE.OLEDB.12.0; -- это как раз то про что я говорил в (1): "Если надо 64-бит, то рассматривайте провайдер ACE"
(2) Заполняете все свойства во всех закладках, в которых надо, и нажимаете ОК. После этого исходный файлик test.udl у вас уже будет ненулевого размера. Открываете его каким-нибудь редактором, который умеет юникодный текст, хотя бы стандартным блокнотом. и вуаля, видите в нем третьей по счету готовую строку подключения.
кстати, udl-файл можно использовать и вместо строки подключения, приложив его где-нибудь рядом со своей обработкой.
Тогда нужно будет написать при открытии DBConn.Open("FILE NAME=X:\Path\test.udl"). Довольно удобно, если вы хотите иметь возможность менять строку подключения без влезания в обработку.
Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.
После обновления на платформу 8.3.19.1467 перестала работать обработка загрузки в бухгалтерию (АА 5).
Виснет на этапе инициализации ADO.
На форме "идет загрузка".
Что можно сделать?
Путем тестов установлено: если у вас 64 разрядный сервер, любой клиент(32 или 64) и вам нужно использовать ADO (например синхронизация БП и Альфа-Авто 5) - 19 и 20 платформы не для вас. Оставайтесь на 18 платформе.
На 18 платформе все работает, на 19 и 20 (под теми же пользователями и разрешениями - просто меняем запуск в реестре) - не работает. Явно что-то сломали в новых платформах. Как новая обработка это решит - не знаю.
Спрошу в этой теме так проблема аналогичная -для работы БП30 обновили платформу 1с до 8.3.20 (Альфа Авто осталась на старой платформе)..При выгрузке из Альфа Авто механизм работает нормально, а при загрузке -либо вообще не может получить доступ к файлу , либо виснет намертво еще на этапе настройки соответствии.(сейчас уже часов 5 висит на одном компе). Проблема проявилась сразу на разных компьютерах у нескольких бухгалтеров, при этом ничего кроме платформы на них не менялось.
Какие рекомендации есть по устранению проблемы?
Здравствуйте. У меня была похожая проблема. Зависало на этапе входа в таблицу соответствия. Решилось новой версией обработки от отдела Альфа-Авто и переходом таблицы соответствия на Регистр. Есть там такая галочка, в обработке загрузки в бп.
После получения актуальной обработки загрузки в БП 3.0 ситуация не изменилась-все также на платформе 8.3,20.1674 загрузка виснет намертво. В копии при откате на платформу 8.3.18.-загрузка прошла , но очень медленноооооо- два документа грузились минут 20.Делал все на копии.
Так как типовые конфигурации 1с Бухгалтерии все настойчивее требуют использование последних версий платформы (а именно 8.3.20 на текущий момент), хотел получить рекомендации, пояснения , указания-а что делать то в сложившейся ситуации?
Откатываться назад на 18 платформу всю нашу "экосистему 1с" в реальной ситуации -когда несколько баз бухгалтерии и пара серверов уже работают на 20 платформе -это как то не нормально.
Причина хоть определена сбоев загрузки?
Сообщите, пожалуйста, есть какие то подвижки в решении вопроса проблемы загрузки в бухгалтерию? Нужно январь месяц закрывать -информацию не можем перенести в БП 3.0
Добрый день! Обработка для Облака Вам отправлена на почту. Проверьте при помощи неё и отпишитесь, пожалуйста, помогла или нет. И, уточните, пожалуйста, в обработке какой режим загрузки выбирали На клиенте или На сервере?
Сейчас свежую копию готовлю бухгалтерии-буду тестить в ней. А до этого пробовали и на Клиенте и на Сервере, пробовали менять битность драйверов и платформы (на 64 битном варианте -вообще не запустилась обработка, вывалилась с ошибкой на драйвера ADO).Пробовали выгружать в файловый варинат. Ошибка однотипгная -зависает намертво либо пр выборе файла соответствия либо сама загрузка
При попытки на копи выбрать файл соответствия выдало:
Ошибка открытия ТС:: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
Был очищен путь к таблице соотвестствий так как файла на диске нет.
Прочтите справку обработки по галочке "Использовать АДО" для получения информации как устанавливать драйвер АДО.
Ошибка открытия ТС:: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
Прочтите справку обработки по галочке "Использовать АДО" для получения информации как устанавливать драйвер АДО.
Это первая ошибка
Ошибка открытия ТС:: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
Был очищен путь к таблице соотвестствий так как файла на диске нет.
Прочтите справку обработки по галочке "Использовать АДО" для получения информации как устанавливать драйвер АДО.
Ошибка открытия ТС:: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
Прочтите справку обработки по галочке "Использовать АДО" для получения информации как устанавливать драйвер АДО.
Победил ошибку, указанную выше, переустановкой драйверов на сервере.
В итоге :
Есть обработка : Загрузка_в_БП_3.0(8.3)_2022.02.01_17;51;44
она не работает- происходят зависания при считывании файла DBF или при загрузке самого файла обмена.
При использовании обработки: oblako_Загрузка_в_БП_3.0(8.3)_вариант от 20.01
Все прошло нормально.
Т.е. более ранняя версия работает корректно. При сравнении кода модуля видно что закомментированы методы работы с индексами таблицы DBF. (Конкретно, как я понял, влияет метод Seek из ADO). Ну еще местами вообще закомментирован вызов механизма ADO.
Скорее всего произошло наложение обновлений 19,20 платформ и обновление самой обработки загрузки-так как на 18 платформе новые версии обработки работают нормально.
На будущее -нужно тщательнее проверять режимы совместимости платформ и обработок (хотя кто это за ранее может знать?)
а кто-нибудь сравнивал скорость работы обработки на больших таблицах соответствий
при файловом расположении ТС и в регистре .
пару лет назад при работе с регистром работало намного медленнее,
т.к. сначала всю ТС из регистра читало в промежуточную рабочую ТС..
Цитата |
---|
написал: а кто-нибудь сравнивал скорость работы обработки на больших таблицах соответствий при файловом расположении ТС и в регистре . пару лет назад при работе с регистром работало намного медленнее, т.к. сначала всю ТС из регистра читало в промежуточную рабочую ТС.. |
Я несколько лет назад перевел одну организацию на хранение идентификаторов в доп. реквизитах объектов (это не Рарусовский механизм). Причина -пользователи постоянно теряли файл ДБФ или он "портился" при каких-нибудь коллизиях в работе системы или сети. Меня это тогда за. ло сильно, механизма ADO толи не было, толи он только начинал внедряться-сейчас не помню. Пришлось своё хранилище изобретать. База работает где то с 2013 года.
В итоге выводы такие: сначала было очень шустро. Где то года через 2 начались заметные замедления при загрузки. Сейчас, сравнивая обмен по этой организации и другой , у которой обмен по ADO настроен (но объем примерно такой же)могу сказать скорость примерно одинаковая, может быть временами мой механизм медленнее работает. Но это все субъективно- специально не проверками не заморачивался
Далее пытаюсь загрузить на SQL сервере. Исходные данные: Сервер 64 бит , 1с 64 бит , клиент -и 64 и 32 бита. Платформа 8.3.20. Файла ads.ini с содержимым:
[SETTINGS]
MTIER_LOCAL_CONNECTIONS=1
Скопирован в каталоги платформы 8.3.20 на клиенте и на сервере
Скопирован в каталоги
C:\Program Files (x86)\Advantage 11.10\OLEDB
C:\Program Files\Advantage 11.10\OLEDB
на клиенте и на сервере.
Драйвера ADO установлены из самой обработки –на клиенте и на сервере.(оба файла adsoledb_x86_64 и oledb устанавливал, которые идут в комплекте)
Файл DBFимеет размер 243 Мб, количество записей где-то 720000. Файл редактором dbf открывается, ошибок не выдает.
Ошибка совместного доступа к файлу 'C:\Users\USR1CV82\AppData\Local\Temp\TS_BP.DBF'. 32(0x00000020): Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
В итоге как я понял у нас происходит блокировка темповского файла на сервере…..AppData\Local\Temp\TS_BP.DBF' –но я не понимаю по какой причине.
При этом на рабочем сервере (в ДРУГОЕ время) запускались загрузки в другие базы с Бухгалтерии –там медленно , но загрузка проходит.
Я моделировал ситуацию на отдельном сервере –на нем нет других пользователей ,кроме меня. Проблема такая же остается
Вопрос –как и что и где нужно настроить ,что бы не происходила блокировка файла dbf?
Вообще задача следующая: нужно из Excel получить доступ к CSV-файлу, чтобы работать с CSV-файлом не в программе "Excel", а как с базой данных. Так по идее правильнее будет.
Ещё хотелось бы пользоваться одним поставщиком (а не несколькими) в разных версиях "MS Office".
Поставщик (имеет ещё название "провайдер") - это программа, которая подключается к базе данных. База данных в данной теме - это CSV-файл. Поставщик в данной теме "Microsoft Text ODBC Driver" (в макросе поставщик записан "".
Библиотека "ADO" подключается к поставщику.
Макрос подключается к библиотеке "ADO".
Ошибка при печати."Не удается найти указанный файл"
Вот код печати через дефолтный принтер: private static string GetDefaultPrinterName() < .
- Рассмотрим часть вашей строки подключения "Provider=. ". Название параметра здесь не Provider, а Driver. Смотрите официальную статью Microsoft, раздел "Строки подключения ODBC".
- После замены названия параметра мы обнаружим, что в вашей строке подключения не указан поставщик (Provider). Нужно его указать.
Aksima, строку подключения я смотрел на специальном сайте (http://www.connectionstrings.com/textfile/), но название параметра не заметил. Сделал вместо слова "Provider" слово "Driver" и заработало.
- Windows-реестр;
- нужно создать текстовый файл и поместить его в специальное место. Из этого текстового файла макрос будет брать разделитель.
Мне нужно указать разделитель ";".
Здравствуйте, Скрипт,
Да, вы правы. Если нужно использовать особый разделитель, то необходимо либо изменить соответствующую запись в реестре, либо использовать файл schema.ini.
По ссылке Excel, csv & Query вы можете найти мое решение этой проблемы.
Буду знать, что не всё так просто с "ADO" и текстовыми файлами.
Скрипт, указывать расположение данного файла не нужно.
Однако необходимо, чтобы этот файл лежал в той же папке, что и csv-файл. Когда драйвер будет его обрабатывать, он самостоятельно проверит наличие в папке csv-файла файла схемы данных и если он есть - применит указанные в нем настройки.
Если вы посмотрели далее в этой же теме еще один листинг, то наверняка обратили внимание на то, что при программном создании файла schema.ini я располагаю его в той же папке, где и csv-файл. Таким образом, указанное выше условие соблюдается.
Ошибка при компиляции: "Не удается найти указанный файл"
Всех С Новым Годом. При компиляции в VS 12 у меня выдает ошибку. Пробовал в VS 10.
Ошибка компиляции "не удается найти указанный файл"
Знаю, что уже много подобных тем созданно, но я их все прочел, пробовал делать, что подсказывали -.
Причина
Решение №1. Установите драйвер пакета MS Office
- Определите разрядность платформы 1С. Для клиент-серверной версии 1С сделайте это на компьютере, где установлена серверная часть. В диспетчере задач Windows перейдите на вкладку «Процессы», и если название процесса:
- 1cv8ct.exe *32 — это 32-разрядная платформа (x86);
- 1cv8ct.exe *64 — 64-разрядная (x64).
- для версии x86 — если 1С x86, а MS Office x86 или не установлен;
- для версии x64 — если 1С x64, а MS Office x64/x86 или отсутствует.
- разрядность 1С x86, а MS Office x64;
- при клиент-серверной версии 1С на клиенте используется Windows, а на сервере другая ОС.
Решение №2. Замените файл настроек внешней обработки
- Определите каталог хранения файла настроек.
По умолчанию это «С:\Sbis1C». В зависимости от режима работы настройки могут храниться на сервере вместе с базой 1С или на локальном компьютере. - Скачайте:
- файл настроек (XML, 280 байт) для 1С: «Управление торговлей» версия 10, «Управление производственным предприятием»;
- файл настроек (XML, 286 байт) для 1С: «Управление торговлей» версия 11, «ERP», «Бухгалтерия государственного учреждения», «Бухгалтерия сельскохозяйственного предприятия», «Бухгалтерия 2.0», «Бухгалтерия 3.0», «Комплексная автоматизация 2.0», «Управление нашей фирмой 1.0».
- Переименуйте скачанный файл в соответствии с другими файлами настроек, но не указывайте расширение «sbis».
Например: имя файла в настройках имеет вид «ВО82КА1-1-36_Конфигурация.sbis3.xml». Скачанный файл назовите «ВО82КА1-1-36_Конфигурация.xml»
Читайте также: