Контакти

Виправлення помилок підключення через COM-з'єднання. Усунення помилок підключення через COM-з'єднання Управління COM класами

Як у Windows x32(x86)/x64 зареєструвати компонент com-з'єднання comcntr.dll 1С 8.

Відповідь на це питання актуальна в контексті натрійки обмінів між базами 1С за допомогою прямого підключення. Один із варіантів встановлення/реєстрації компоненти com-з'єднання наведено на сторінці: На ній описано варіант встановлення компоненти при встановленні/перевстановленні компонентів платформи 1С: Підприємство зі стандартного пакета установки. Але трапляється і так, що все-таки com-компонента з якихось таємничих пірчин все ж не реєструється при вищевказаній операції.

Для цього є альтернативний варіант за допомогою командного рядка операційної системи. Забігаючи трохи вперед, і щоб убезпечити себе від помилок при реєстрації com-компоненти comcntr.dll через командний рядок, подібних до наведеної на скрині

Щоб уникнути помилки "Модуль comcntr.dll завантажений, але не вдалося виконати виклик DllRegisterServer, код помилки 0x80070005" запускайте командний рядок з правами адміністратора

У системі з розрядністю x32(x86) для платформи 1С: Підприємство 8.2

C:\Program Files (x86)\1cv82\<номер_релиза>\bin> regsvr32 comcntr.dll

Де<номер_релиза>- Номер поточного релізу плафторми 1С 8.

Для платформи 1С: Підприємство 8.3 командний рядок для реєстрації com-компоненти виглядатиме приблизно так:

C:\Program Files (x86)\1cv8\<номер_релиза>\bin> regsvr32 comcntr.dll

На скрині, наведеному нижче як пірмер для випадку реєстрація comcntr.dll в ОС x86 значення<номер_релиза> - "8.3.9.1818"

Тепер розглянемо варіант для системи з розрядністю x64 для платформи 1С: Підприємство 8.2, альтернативний варіант:

C:\Windows\SysWOW64>regsvr32 "C:\Program Files (x86)\1cv82\<номер_релиза>\bin\comcntr.dll"

Для Windows x64 реєстрація com-з'єднання 1С 8.3 може виглядати так:

C:\Windows\SysWOW64>regsvr32 "C:\Program Files (x86)\1cv8\<номер_релиза>\bin\comcntr.dll"

Якщо наведений матеріал не допоміг, пропонується звернутися до альтернативних публікацій: Реєстрація comcntr.dll-компоненти в 64-бітній версії Microsoft Windows і Реєстрація компоненти comcntr.dll для COM з'єднання з 1С 8 в 32-бітній операційній системі

© www.. Всі права захищені. Використання текстів та зображень із цієї сторінки без письмового дозволу власника заборонено. При використанні матеріалів з даної сторінки обов'язковим є посилання на цю сторінку.


Часто буває потрібно отримати дані з різних баз, які зовсім не рідкість працюють на різних платформах. Це може бути регулярний обмін даними між базами. Також можуть бути якісь разові обробки переносу даних. Це можуть бути і звіти, що збирають дані з різних баз і формують необхідний результат на виході.
У кожному з цих випадків необхідно з однієї бази підключитися до іншої через з'єднання COM. Ось на етапі підключення часто чатують на різні неприємності. У цій статті будуть розглянуті деякі помилки та способи їх усунення. Тут будуть наведені конкретні помилки при з'єднанні між певними платформами, але способи усунення можуть бути такими ж підходящими і при з'єднанні між платформами в інших варіантах.

Ситуація перша.При спробі підключення через COM-з'єднання до бази джерела видається повідомлення про помилку. Щось на зразок: "Помилка при виклику конструктора (COMObject): -2147221164 (0x80040154): Клас не зареєстрований".
Для усунення подібної помилки спочатку потрібно зареєструвати бібліотеку клієнта - приймача. Для різних версій клієнтів однієї версії платформи потрібно реєструвати свою бібліотеку. Тобто для різних складання платформи версії 8.3 потрібно заново реєструвати версію бібліотеки потрібного релізу платформи. Для платформи версії 8.2 такий самий підхід.
Бібліотека реєструється в такий спосіб. Запускається Командний рядок з-під Адміністратора, у ньому пишеться команда

Regsvr32 "[Шлях до бібліотеки]\bin\comcntr.dll ,

Наприклад, regsvr32 "c:\Program Files (x86)\1cv8\8.3.5.1119\bin\comcntr.dll" і команда виконується. Усі відкриті додатки 1С у своїй краще закрити. У разі успішної реєстрації буде видано повідомлення про успіх. Якщо видається повідомлення про помилку, потрібно перевірити шлях, яким знаходиться бібліотека, і всі права.
Також цю команду можна помістити в cmd файл і запустити його з правами Адміністратора.

Якщо така помилка випадає при спробі підключити до БД на платформі 7.7, слід перевірити реєстр щодо наявності реєстрації 7.7-коннектора. У розділі HKEY_CLASSES_ROOT повинні бути гілки, зображені на малюнку:

Для правильної реєстрації 7.7-конектора слід один раз запустити 1С Підприємство 7.7 від імені Адміністратора.

Ситуація друга.При спробі встановити COM-з'єднання випадає помилка з повідомленням про невідповідність версії клієнта джерела БД. У цьому випадку проблема вирішується реєстрацією правильної версії бібліотеки comcntr.dllтак, як це було описано вище.

Ситуація третя.При спробі підключення через COM-з'єднання до бази-джерела на платформі 1С 7.7 помилок не видається, але обробка "намертво" "зависає". При знятті завдання з'єднання через консоль керування серверами 8.х залишається і не скидається ніякими хитрощами, крім перезапуску служби сервера 1С. Таке явище відбувається, коли здійснюється спроба з'єднання з БД на платформі 8.х БД на платформі 7.7 з сеансу сервера. Чітко певних причин такої поведінки програми тут не наводиться. Рекомендація одна – використовувати виклик підключення із сеансу клієнта (& на Клієнті).

Ситуація четверта.При спробі підключення через COM-з'єднання до бази-джерела на платформі 1С 7.7 помилок не видається, але з'єднання не відбувається. У цьому випадку, а також у деяких інших допомагає ручна реєстрація COM-компонентів.

1. Заходимо до Панелі керування → Адміністрація → Служби компонентів.
2. Переходимо до гілки Комп'ютери → Мій комп'ютер → Програми COM+.


3. У контекстному меню вибираємо Створити → Програма. Відкриється Майстер інсталяції COM+. Вибираємо "Створити новий додаток".

4. Ім'я нового додатка краще написати, щоб було зрозуміло про що мова: V8_ComConnector, спосіб активації - "серверний додаток".

5. На наступному кроці встановлюємо "Поточний користувач". Натискаємо «Далі». У гілці створеної програми переходимо на гілку "Ролі" відкриваємо роль "CreatorOwner" і далі в розділі "Користувачі" створюємо користувача - обліковий запис під яким працює сервер 1С.
6. У гілці створеної програми переходимо на гілку "Компоненти" та створюємо компонент: Створити - Компонент Вибираємо "Установка нових компонентів", і в діалозі вибираємо потрібну DLL-ку (в даному прикладі: [Шлях до бібліотеки]\bin\comcntr.dll ).
7. У контекстному меню вибираємо «Властивості». У вікні, що відкрилося, переходимо на вкладку «Безпека».
8. Знімаємо галку «Примусова перевірка доступу додатків». Ставимо галку "Застосувати політику програмних обмежень". Встановлюємо Рівень обмежень – «Необмежений»


9. Натискаємо "ОК".

Обновлення-1с. Вирішення проблем із com-бібліотекою для зовнішнього підключення до бази.

2018-10-05T16:32:35+00:00

Обновлятор-1с у своїй роботі використовує com-бібліотеку від 1с для зовнішнього підключення до баз.

У більшості випадків жодних проблем з цією бібліотекою не спостерігається - обновлятор сам автоматично реєструє та використовує бібліотеку потрібної версії 1с, але зрідка виникають випадки (переважно на серверних ОС), коли потрібні "танці з бубном".

Як зрозуміти, що у нас проблеми з COM

Для цього натискаємо кнопку "Перевірити налаштування", утримуючи клавішу "Shift" на клавіатурі:

При нормальній роботі COM звіт буде приблизно таким:

При проблемах з COM виникне ось така чи схожа помилка:

Ще може писати, щось типу " Не вдалося створити програмне підключення до 1С".

Так, судячи з тесту, у нас проблеми з COM

Насамперед, про яку саме бібліотеку йдеться? Ця бібліотека comcntr.dllяка знаходиться в папці bin конкретної платформи 1с:

Ця бібліотека встановлюється та автоматично реєструється в системі під час встановлення платформи.

Крім того, обновлятор перед тим як підключатися до бази через зовнішнє з'єднання, сам додатково реєструє в системі бібліотеку з потрібної версії платформи за допомогою команди:

regsvr32. exe/n/i: user

Отже, що ми можемо зробити?

Крок №0

Насамперед переконуємося, що у нас справді проф-версія платформи, тому що для базової версії платформи зовнішнє підключення до баз працювати не повинно (це обмеження платформи).

Щоб зрозуміти яка у нас платформа (базова чи професійна) виконаємо ось цей .

Якщо ліцензія на платформу у нас все ж таки не професійна, а базова, то всі інші кроки не мають сенсу. Зовнішнє підключення до баз у нас не працюватиме (через обмеження платформи). Нічого не залишається, крім як настроїти бази.

Крок №1

Якщо у вас включений UAC, то досягти цього можна, натиснувши на ярлику обновлятора правою кнопкою, і вибравши варіант "Запуск від імені адміністратора".

Далі вибираємо базу та натискаємо кнопку "Перевірити налаштування". Якщо помилка зникла і більше не відтворюється навіть при звичайному запуску оновлень (без прав адміністратора) – вітаю, проблему вирішено. Якщо ні – йдемо далі.

Крок №2

У 32-бітній версії ОС пробуємо виконати команду

regsvr32/n/i: user "шлях до папки bin\comcntr.dll"

У 64-бітній версії ОС команда буде приблизно такою:

C: \Windows\SysWOW64\regsvr32/n/i: user "шлях до папки bin\comcntr.dll"

Ці команди запускаємо від імені користувача з правами адміністратора. А при включеному UAC, запускаємо cmd через "Запуск від імені адміністратора" або через такий же запуск написаного батника.

Якщо команда реєстрації не допомогла, потрібно попередньо видалити реєстрацію бібліотеки comcntr.dll, запустивши ту ж команду виклику regsvr32 з ключем /u

Якщо це не допомогло, спробуйте перевстановити платформу 1С у режимі Виправити, а потім зареєструйте бібліотеку, як написано вище.

Крок №3

Схоже, що у обновлятора не вдається зареєструвати COM компонент через налаштування безпеки на вашому сервері.
В цьому випадку:

  1. Заходимо в Панель управління – Адміністрація – Служби компонентів.
  2. Переходимо до гілки Комп'ютери - Мій комп'ютер - Програми COM+.
  3. У контекстному меню вибираємо Створити – Додаток. Відкриється Майстер інсталяції COM+.
  4. Натискаємо "Далі".
  5. Вибираємо "Створити новий додаток".
  6. Вводимо ім'я "V83COMConnector". Встановлюємо перемикач "Серверний додаток". Натискаємо "Далі".
  7. На наступному кроці встановлюємо "Поточний користувач". Натискаємо "Далі".
  8. Натискаємо "Готово".
  9. У гілці V83COMConnector, що з'явилася, переходимо до підвітки Компоненти.
  10. У контекстному меню вибираємо Створити – Компонент. Відкриється Майстер установки COM+.
  11. Натискаємо "Далі".
  12. Вибираємо "Встановлення нових компонентів".
  13. Вибираємо файл<каталог 1С>\bin\comcntr.dll.
  14. Натискаємо "Далі" – "Готово".
  15. Переходимо до гілки V83COMConnector.
  16. У контекстному меню вибираємо "Властивості". У вікні, що відкрилося, переходимо на вкладку «Безпека».
  17. Знімаємо галку «Примусова перевірка доступу додатків». Ставимо галку "Застосувати політику програмних обмежень". Встановлюємо рівень обмежень - "Необмежений".
  18. Натискаємо "ОК".

Після цього обновлятор повинен самостійно реєструвати компоненти всіх версій платформ, а не тільки тієї, яку ми прописали в компоненті.

Крок №4

Буває так, що допомагає лише повторне переустановлення платформи (при цьому відбувається коректна реєстрація компоненти).

Крок №5

Якщо проблема почала виникати відразу після оновлення платформи 1с, то найімовірніше нової версії платформи 1с не вистачає якогось сервісного пакета або оновлення для вашої операційної системи. Тому якщо є можливість – ставимо їх усі, якщо ні – діємо вибірково згідно цієї.



Сподобалася стаття? Поділіться їй