При организации межпрограммного обмена данными между конфигурациями 1С часто применяется прямое подключение через COM-соединение. Однако нередко разработчики сталкиваются с ситуацией, когда при выполнении метода подключения программа аварийно закрывается с системной ошибкой операционной системы о прекращении работы 1cv8.exe или сообщением о невозможности доступа к сетевому файлу базы данных.
Проанализируем типовой программный код, при выполнении которого может возникать данный сбой:
Подключение = Новый COMObject("V83.COMConnector");
Путь = Константы.КаталогБазыПриемника.Получить();
Пользователь = "ОбменВыгрузка";
Пароль = "1111";
Попытка
БазаОЛЕ = Подключение.Connect("File=""" + Путь + """; usr=""" + Пользователь + """; pwd=""" + Пароль + """;");
// Дальнейшая работа с объектами базы-приемника
СпрОрг = БазаОЛЕ.Константы.ОрганизацияПоУмолчаниюДляСкупки.Получить();
Исключение
Сообщить("Нет подключения, сообщите администратору: " + ОписаниеОшибки());
КонецПопытки;
Разберем основные причины возникновения этой критической ошибки и рассмотрим пошаговые методы восстановления работоспособности обмена.
Основная и наиболее частая причина падения процесса 1cv8.exe — несоответствие зарегистрированной в операционной системе COM-компоненты comcntr.dll версии установленной платформы 1С:Предприятие. При регулярных обновлениях платформы автоматическая регистрация библиотеки может завершиться сбоем (например, если в момент установки были запущены другие сеансы 1С или инсталлятор запускался без повышенных привилегий администратора). В реестре Windows остается зарегистрирована библиотека от старого релиза, что вызывает фатальный сбой при попытке вызова методов нового движка.
Разберем по шагам, как правильно перерегистрировать внешнюю библиотеку:
1cv8.exe, 1cv8c.exe, фоновые задания) на локальном компьютере.cmd.exe) обязательно от имени администратора.
regsvr32 "C:\Program Files\1cv8\8.3.X.XXXX\bin\comcntr.dll"
Для 32-разрядной платформы, установленной на 64-битной Windows, путь будет соответствовать папке Program Files (x86).Если вызывающий процесс 1С работает в 64-разрядном режиме, а зарегистрированная библиотека comcntr.dll является 32-разрядной (или наоборот), прямое создание объекта V83.COMConnector завершается сбоем. Для обеспечения межразрядной совместимости настроим суррогатный процесс dllhost.exe через службы компонентов:
dcomcnfg и нажмем Enter.1C_V83_COMConnector).comcntr.dll из каталога рабочей версии 1С.При подключении к файловой базе по общему сетевому ресурсу (например, \\comp2\baze) операционная система Windows использует сетевой стек протокола SMB. Если сетевое соединение прерывается, либо возникают конфликты дескрипторов файлов блокировок, 1С не может обработать такое событие внутри программного блока Попытка ... Исключение, что приводит к аварийному завершению приложения на уровне системного вызова I/O.
Для устранения проблем сетевого взаимодействия выполним следующие проверки:
*.cfl, *.lck, а также временный файл 1Cv8tmp.1CD.chdbfl.exe: Запустим автономную утилиту проверки физической структуры файла 1Cv8.1CD, которая расположена в каталоге bin платформы 1С, чтобы исключить логические повреждения таблиц.*.1CD, *.cfl, *.lgp, *.lgf в список исключений сканирования в реальном времени на обоих компьютерах.Работа с файловыми базами 1С через сетевые разделы по протоколу COM чувствительна к качеству локальной сети и блокировкам. Для повышения отказоустойчивости рекомендуется использовать современные механизмы интеграции: