После обновления платформы 1С — необходимо обязательно зарегистрировать COM-компоненту 1С.
COM-компонента в 1С используется для интеграции с приложениями и системами, позволяя вызывать их функции, обмениваться данными и управлять объектами через COM-интерфейс. В общем, важная вещь.
Даже обмен между ЗУП и БП проходит через него.
Чаще всего, ошибка, которая возникает, когда этой компоненты нет выглядит вот так:
1 |
{Обработка.ОбменДаннымиXML.МодульОбъекта(15947)}: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Invalid class string |
Содержание
Ручная регистрация
Для ручной регистрации необходимо открыть Командную строчку от имени администратора и ввести:
Для 64-разрядных серверов:
1 |
C:\Windows\SysWOW64\regsvr32 "C:\Program Files\1cv8\[номер версии 1С]\bin\comcntr.dll" |
Для 32-разрядных серверов:
1 |
regsvr32 "C:\Program Files (x86)\1cv8\[номер версии 1С]\bin\comcntr.dll" |
[номер версии 1С] — можете посмотреть, открыв папку C:\Program Files\1cv8\
или C:\Program Files (x86)\1cv8\
, в зависимости от разрядности.
Полуавтоматическая регистрация COM (x64) (скрипт)
Чтобы автоматизировать процесс, был сделан небольшой скрипт. Его можно скачать c Яндекс.Диска.
После запуска: скрипт найдет все установленные платформы 1С, далее надо выбрать какая версия нам нужна. Если пропустить выбор, то по умолчанию установится самая свежая.
Как это выглядит:
Листинг:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# Путь к каталогу с версиями 1С $basePath = "C:\Program Files\1cv8\" # Получаем список версий 1С, исключая папки "conf" и "common" $versions = Get-ChildItem -Path $basePath -Directory | Where-Object { $_.Name -notin @("conf", "common", "srvinfo") } | Sort-Object Name -Descending # Проверяем, есть ли версии if ($versions.Count -eq 0) { Write-Host "Версии 1С не найдены." exit } # Выводим список версий Write-Host "Список версий 1С:" for ($i = 0; $i -lt $versions.Count; $i++) { Write-Host "$($i + 1). $($versions[$i].Name)" } # Запрашиваем выбор версии $selectedIndex = Read-Host "Введите номер версии (по умолчанию 1): " if ([string]::IsNullOrEmpty($selectedIndex)) { $selectedIndex = 1 } else { $selectedIndex = [int]$selectedIndex } # Проверяем, что выбранный индекс в пределах допустимого if ($selectedIndex -lt 1 -or $selectedIndex -gt $versions.Count) { Write-Host "Неверный номер версии." exit } # Получаем выбранную версию $selectedVersion = $versions[$selectedIndex - 1].Name # Путь к comcntr.dll $comcntrPath = Join-Path -Path $basePath -ChildPath "$selectedVersion\bin\comcntr.dll" # Проверяем, существует ли файл comcntr.dll if (-Not (Test-Path -Path $comcntrPath)) { Write-Host "Файл comcntr.dll не найден для версии $selectedVersion." exit } # Регистрируем COM компоненту Write-Host "Регистрация COM компоненты для версии $selectedVersion..." Start-Process -FilePath "regsvr32.exe" -ArgumentList "/i:user `"$comcntrPath`"" -NoNewWindow -Wait Write-Host "COM компонента успешно зарегистрирована." |
Если мой материал был полезен, то можете угостить меня кофе ☕️