При настройке межсерверного интеграционного обмена между различными информационными базами 1С (например, между конфигурациями Альфа-Авто и Управление Производственным Предприятием) специалисты часто используют механизм COM-соединения (ComConnector). Однако при работе в инфраструктуре с несколькими доменами Windows или разной сетевой адресацией вызов COM-объекта может периодически завершаться критической ошибкой: «1Cv8tmp.1CD - Файл не является файлом базы данных».
Рассмотрим подробно причины возникновения этой неисправности, разберем по шагам базовый способ ее устранения, а также проанализируем дополнительные настройки кода и сетевого окружения, которые позволят навсегда избавиться от сбоев при COM-обмене.
Для понимания природы проблемы проанализируем, как платформа 1С:Предприятие работает со временными данными сеанса. Файл с именем 1Cv8tmp.1CD (и парный ему файл блокировок 1Cv8tmp.1CL) представляет собой служебное хранилище временных сеансовых данных. Он создается платформой при запуске клиентского приложения или при инициализации внешнего COM-соединения.
В этом файле фиксируются сведения об активных пользователях, текущих блокировках объектов и временных таблицах. При нормальном завершении работы сеанса данный файл автоматически освобождается и удаляется платформой. Ошибка «1Cv8tmp.1CD - Файл не является файлом базы данных» возникает в следующих ситуациях:
1Cv8tmp.1CD. При повторной попытке подключения возникают конфликты доступа.Как показывает практика решения подобных проблем, наиболее распространенной причиной сбоя при COM-соединении между разными доменами является некорректная работа протокола IPv6 в стеке Windows. Выясним, как правильно отключить IPv6 на стороне сервера, где расположена целевая база данных (база-приемник):
Разберем также вариант полного отключения IPv6 через реестр Windows для исключения системных задержек при обработке DNS-запросов:
regedit от имени Администратора.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\ParametersDisabledComponents.ffffffff (в шестнадцатеричной системе) или 4294967295 (в десятичной).После отключения IPv6 сетевой стек сервера полностью переключается на стабильную работу через протокол IPv4, что устраняет таймауты при инициализации COM-соединения через границы доменов.
Посмотрим на ситуацию со стороны программного кода. Качественная обработка завершения COM-сеанса — важнейшее условие корректной очистки временных файлов 1Cv8tmp.1CD. Разберем правильную структуру кода подключения и завершения сеанса:
Функция ВыполнитьCOMПодключение(СтрокаПодключения)
Результат = Новый Структура("Успех, Соединение, Ошибка", Ложь, Неопределено, "");
Попытка
ComОбъект = Новый COMОбъект("V83.COMConnector");
Результат.Соединение = ComОбъект.Connect(СтрокаПодключения);
Результат.Успех = Истина;
Исключение
Результат.Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
Возврат Результат;
КонецФункции
Процедура ЗавершитьCOMСеанс(COMСоединение)
Если COMСоединение <> Неопределено Тогда
// Явно освобождаем память и закрываем сеанс
COMСоединение = Неопределено;
// Вызываем сборщик мусора для немедленного освобождения ресурсов
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
Рассмотрим ключевые рекомендации при написании кода обмена:
Попытка ... Исключение.Неопределено.Если ошибка «1Cv8tmp.1CD - Файл не является файлом базы данных» уже возникла и блокирует работу пользователей или фоновых процессов, проанализируем пошаговый алгоритм экстренного восстановления базы:
1cv8.exe, 1cv8c.exe или процессы службы rphost.exe (если речь идет о файловом доступе к базе через службу).1Cv8tmp.1CD, 1Cv8tmp.1CL и 1Cv8.1CL.Прямое COM-подключение между базами, находящимися в разных доменах или организациях, имеет фундаментальные ограничения по безопасности и надежности. Разберем наиболее современные и стабильные альтернативы:
comcntr.dll, а авторизация выполняется с помощью стандартной HTTP-аутентификации.Таким образом, сочетание отключения IPv6 на уровне операционной системы и явного освобождения COM-объектов в коде 1С гарантирует стабильную работу обмена данными и полностью предотвращает появление ошибок временных файлов баз данных.