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

01.11.2019 Новини

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

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

http://www.steeltrace.ru/details/articleid/22/%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1 %86%D0%B8%D1%8F-1%D1%81-com-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0% BD%D1%82%D0%B0-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1 %81-64-%D0%B1%D0%B8%D1%82%D0%BD%D1%8B%D0%BC%D0%B8-%D0%BF%D1%80%D0%B8%D0%BB %D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F%D0%BC%D0%B8.aspx

Upd. Додаток: якщо на Windows-сервері 64-біт стоїть Сервер 1С Підприємство 64-біт (у дистрибутиві windows64.rar),
то такої проблеми не буде. Уставник дозволяє поставити COM-конектор без встановлення самої півночі. Це корисно, коли програма реалізована на платформі 8.3, а COM-з'єднання потрібно до баз на 8.2.

За додаток дякуюbrix8x.

Наведено алгоритм налаштування системи зі скріном до кожної дії.

2. Реєстрація компоненти comcntr.dll

5. Старт сервера 1С. (обов'язково:)

Викликаємо консоль


Реєструємо компоненту. Компонента відсутня, якщо встановлено лише сервер 1С. Чомусь 1С публікує її лише у складі клієнта.


Upd. Якщо компонента не реєструється, можливо доведеться спочатку видалити стару компоненту, тільки потім встане нова.
Робимо regsvr32 /u"c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll"
Потім те саме, але без "/u" regsvr32 "c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll"

За додаток дякуюshur52.

Запускаємо службу компонентів. Описується для Windows Server 2008 R2 Standart.








У гілці Components додаємо нову компоненту comcntr.dll






ВАЖЛИВО! Після встановлення потрібно трохи змінити властивості. Ця тонкість ніде не описана, без неї я не працювала!

Перезапуск фізичного сервера

Обновлення-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с не вистачає якогось сервісного пакета або оновлення для вашої операційної системи. Тому якщо є можливість – ставимо їх усі, якщо ні – діємо вибірково згідно цієї.


Часто буває потрібно отримати дані з різних баз, які зовсім не рідкість працюють на різних платформах. Це може бути регулярний обмін даними між базами. Також можуть бути якісь разові обробки переносу даних. Це можуть бути і звіти, що збирають дані з різних баз і формують необхідний результат на виході.
У кожному з цих випадків необхідно з однієї бази підключитися до іншої через з'єднання 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 технології, накопичених за роки розвитку та використання інтеграційного комерційного продукту 2iS: Інтеграція нашої компанії 2iS.

Терміни

ОС – операційна система

COM-клієнт - процес (потік) ОС, який запросив створення COM-об'єкта

COM-сервер - COM-об'єкт, створений на запит клієнта

Com-з'єднувач - COM-об'єкт V8X.ComСonnector для створення зовнішніх з'єднань з базами 1С

Automation-сервер - він же OLE-сервер, COM-об'єкт V8X.Application для створення програм 1С

Видання платформи - підстрока до 2-ї точки платформи (наприклад 8.2, 8.3)

Складання платформи - повний рядок версії платформи (наприклад 8.2.19.130, 8.2.16.352)

З'єднання зовнішнього з'єднання

Розглянемо алгоритм підключення зовнішнього з'єднання деталей
  1. Створення COM-об'єкта Com-з'єднувач (ім'я класу - V8X.ComConnector). Варіанти:
  2. Внутрішньопроцесний (inproc)
  3. Повинен бути зареєстрований клас V8X.ComConnector тієї ж розрядності, що й COM-клієнт
  4. Якщо видання платформи COM-клієнта збігається з виданням платформи COM-сервера, також потрібна рівність складання платформи COM-клієнта і COM-сервера.
  5. Він реєструється під час встановлення платформи з опцією «Зовнішнє з'єднання». У будь-який момент його можна зареєструвати командою Regsvr32 comcntr.dll в каталозі виконуваних файлівплатформи.
  6. COM-об'єкт створюється у пам'яті COM-клієнта
  7. Витрати створення приблизно - 0.01(перше)/0.001(друге) сек
  8. приклад

  9. Позапроцесне локальне (local)
  10. Повинен бути зареєстрований клас V8X.ComConnector будь-якої розрядності та складання платформи. Необхідно налаштувати через dcomcnfg.exe COM+ програму з активацією «серверна програма»/«Server apllication». Докладніше розглянуто далі.
  11. COM-об'єкт створюється у пам'яті службового хост-процесу (dllhost.exe) на комп'ютері COM-клієнта
  12. Витрати створення приблизно - 0.06(перше)/0.03(друге) сек
  13. приклад
    КомЗ'єднувач = Новий COMОб'єкт (“V83.ComConnector”);
    Зовнішнє З'єднання = КомЗ'єднувач.Connect (Рядок З'єднання);
  14. Позапроцесне нелокальне (DCOM)
  15. На нелокальному комп'ютері має бути зареєстрований клас V8X.ComConnector будь-якої розрядності та складання платформи. Необхідно налаштувати на нелокальному комп'ютері через dcomcnfg.exe COM+ програму з активацією «Серверна програма»/«Server apllication». Докладніше розглянуто далі.
  16. Необхідно налаштувати на нелокальному комп'ютері роль «Сервер додатків»/«Application server» і увімкнути нелокальний доступ COM+, вибравши опцію « Мережевий доступ COM+»/”COM+ network access”. Докладніше розглянуто далі.
  17. COM-об'єкт створюється у пам'яті службового хост-процесу (dllhost.exe) іншому комп'ютері
  18. Витрати створення приблизно
  19. Експериментальні дані

На графіку видно, що тривалість створення цього COM-об'єкта прямо пропорційна затримці каналу коефіцієнт пропорційності становить приблизно 24. Можна припустити, що при створенні цього COM-об'єкта відбувається 24 виклику через канал.
  1. приклад
    КомЗ'єднувач = Новий COMОб'єкт (“V83.ComConnector”, Ім'я Комп'ютера);
    Зовнішнє З'єднання = КомЗ'єднувач.Connect (Рядок З'єднання);
  2. Виконання методу Connect (створення зовнішнього з'єднання)
  3. Створення сеансу – 1 сек.
  4. Ініціалізація сеансу – сек
  5. ПередПочаткомРоботиСистеми (тільки для Automation-сервера)
  6. ПриПочаткуРоботиСистеми
  7. Ініціалізація параметрів сеансу
  8. Підвантаження потрібних метаданих

Витрати на COM-дзвінки

Щоразу, коли ми звертаємось у вбудованій мові до властивості або методу COM-об'єкта (виконуємо COM-виклик), відбувається ряд додаткових дійв порівнянні зі зверненням до рідного об'єкта вбудованої мови. Якщо COM-сервер знаходиться в іншому локальному процесі, то при цьому ще спочатку виконується перенесення всіх параметрів COM-клієнта в COM-сервер і в кінці виконується зворотне перенесення параметрів COM-клієнт. Для такого перенесення інформація природно повинна бути серіалізована на стороні відправника і потім десеріалізована на стороні одержувача, що разом з деякими іншими діями отримало назву маршалінгу та демаршалінгу. У нелокальному режимі (DCOM) такий перенесення ще витрачатиме час на мережеві комунікації і при першому зверненні до нового COM-об'єкта на передачу його «скелета», і тому затримка каналу відіграватиме вирішальну роль. Технічний огляд DCOM,)

Співвідношення витрат за виклик за типами розташування COM-сервера

  1. Мінімальні для внутрішньопроцесного Com-сервера
  2. Середні для локального позапроцесного Com-сервера
  3. Від середніх до великих для нелокального позапроцесного Cом-сервера в залежності від якості каналу зв'язку

Мінімізація кількості COM-дзвінків

  1. Створюємо базову зовнішню обробку з набором загальних методів прийому викликів від COM-клієнта за COM-сервера
  2. Тепер нам не потрібно змінювати конфігурацію бази COM-сервера, щоб використовувати складний функціонал.
  3. У продукті ми назвали її «Сервісний процесор». На її передачу та ініціалізацію йде близько 1 сек.
  4. Проектуємо взаємодію з COM-сервером за принципом "мінімум COM-дзвінків", тобто готуємо все необхідне на стороні COM-клієнта і передаємо як параметри одного великого виклику»
  5. Створюємо вбудовану обробку для виконання такого дзвінка в COM-клієнті
  6. Передача агрегатних об'єктів
  7. Серіалізуємо всі вхідні параметри на стороні COM-клієнта
  8. Десеріалізуємо всі вхідні параметри на стороні COM-сервера
  9. Серіалізуємо всі вихідні параметри на стороні COM-сервера
  10. Десеріалізуємо всі вихідні параметри на стороні COM-клієнта
  11. У нашому продукті ми назвали її "Виконання сервісу інфобази"
  12. Для багаторазових COM-дзвінків передбачаємо регульовану частоту
  13. Наприклад, інформаційні дзвінки можуть здійснюватися зі змінюваною частотою

Зворотній зв'язок

При використанні принципу «мінімум COM-дзвінків» значну частину часу код виконуватиметься в чужому контексті, що серйозно посилює деякі незручності COM-дзвінків:
  1. Не можна перервати потік COM-Клієнта та його з'єднання з сервером додатків 1С, доки не завершиться виклик COM-сервера
  2. COM-Клієнт не має інформації про прогрес виконання виклику в COM-сервері
Для боротьби з цими незручностями можна організувати Зворотній зв'язоквід COM-сервера до COM-клієнту, передавши COM-серверу посилання на загальний модуль COM-клієнта і періодично викликаючи через неї COM-клієнт. Потрібно відзначити, що є помилки платформи, що виявляються при створенні посилань на один загальний модуль більш ніж в одному COM-північному сеансі. Тому поки що краще очищати посилання на загальний модуль у всіх утримуваних COM-серверах перед поміщенням у новий. У зворотних дзвінках можна передавати:
  1. інформацію про прогрес виконання
  2. накопичені повідомлення користувачу (отримувати функцією Отримати ПовідомленняПользователю(Істина))

Схема принципу "мінімум COM-дзвінків"

Така схема дружня до великих затримок каналів зв'язку. Тому вона багато в чому нагадує виклик веб-сервісу. А отже, використовуючи її для COM взаємодії, ви значно знижуєте витрати на можливі переходи між COM і веб-сервісом в обох напрямках.

Налагодження

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

Щоб увімкнути можливість налагодження зовнішніх з'єднань, у підкаталозі conf потрібно створити файл comcntrcfg.xml з відповідним вмістом. У вікні підключення можна зробити кнопку/прапорець для створення такого файлу. Однак багато версій платформи містять помилку, через яку предмети налагодження зовнішніх з'єднань не видно у налагоджувачі навіть із цим коректно налаштованим файлом. На платформі 8.3 ці проблеми начебто вирішені.

Приклад файлу comcntrcfg.xml:


Також не можна забувати про необхідність запускати конфігуратор для налагодження з тим самим (до регістра літер) рядком з'єднання, що й предмет налагодження. Тому в цьому діалозі потрібно зробити кнопку для запуску конфігуратора COM-сервера з правильним рядком з'єднання.

Якоюсь мірою обійти проблему невидимості предмета налагодження зовнішнього з'єднання та низку інших незручностей можна шляхом одноразового виконання коду на товстому клієнта із заміною режиму «Зовнішнє з'єднання» на «Automation-сервер» (додаток), тобто. використовуючи COM клас V8X.Application і включену видимість. Тому у вікні підключення потрібні параметри для вибору режиму з'єднання.

Після створення підключення на стороні COM-клієнта зазвичай потрібне підключення відладчика бази COM-сервера та встановлення там точки зупинки у потрібному місці. Тому у вікні підключення потрібно розташувати кнопку підключення відладчика/конфігуратора COM-сервера. Якщо COM-сервер запущено в режимі видимої програми, то для підключення відладчика можна скористатися асинхронним викликом виключення в ньому. З діалогу з помилкою у додатку COM-сервера через кнопку «Конфігуратор» можна буде відкрити конфігуратор і здебільшого одразу підключити відладчик. Якщо підключення відладчика в такий спосіб недоступне, оператору допоможе відображати інформацію про сеанс (його номера) в базі COM-сервера. Також потрібна кнопка відкриття у відкритому налагоджувачі файлу зовнішньої обробкияка буде виконуватися в ньому.

Управління COM класами та COM+ додатками 1С

Управління COM класами

  1. Зовнішнє з'єднання (V8X.ComConnector)
  2. Реєстрація: Regsvr32 comcntr.dll
  3. Скасування реєстрації: Regsvr32 comcntr.dll /u
  4. Automation-сервер (V8X.Application)
  5. Реєстрація - 1cv8.exe /regserver
  6. Скасування реєстрації - 1cv8.exe /unregserver

Управління COM+ додатками

Здійснюється через оснастку dcomcnfg.exe. Для реєстрації 1С як COM+ програми необхідно відкрити оснастку "dcomcnfg". У ній у гілці "Служби компонентів"-"Комп'ютери"-"Мій комп'ютер"-"Програми COM+" (COM+ Applications) необхідно додати новий додаток (application). Під час додавання можна вказати будь-яке ім'я. Далі необхідно вказати користувача, від імені якого буде працювати COM+ додаток на закладці Ідентифікація (Identity). Також потрібно задати доступ до додатку для всіх користувачів шляхом додавання, якщо відсутня, ролі з будь-яким ім'ям у гілці Ролі (Roles), та додавання в її гілку Користувачі (Users) користувача Все (Everyone). Після додавання програми необхідно створити новий компонент. Для цього у гілці "Компоненти" створеної програми необхідно вибрати пункт меню "Створити"-"Компонент". При створенні вибрати імпорт вже зареєстрованих компонентів та знайдіть у списку (бажано 64-бітну) компоненту 1С (V8x.COMConnector.1).

У нашому продукті є інструмент «Керування COM класами 1С» для перегляду/реєстрації/зміни всіх COM класів і COM+ додатків 1С на вказаному комп'ютері:

Налаштування DCOM-сервера

Для Windows 2008 Server необхідно додати роль "Сервер додатків" (Application server). Для цього необхідно відкрити панель керування комп'ютером, клацнути правою кнопкою миші у гілки "Ролі" та вибрати пункт меню "Додати роль".

З'явиться око, у якому необхідно вибрати роль "Сервер додатків"/"Application server". На етапі вибору ролей сервера програм необхідно вказати пункт "Мережевий доступ до COM+"/"COM+ network access". Якщо це не зробити, то при спробі створення COM-об'єкта ви отримуватимете помилку "Помилка при виклику конструктора (COMОб'єкт): The component or application containing the component has been disabled".

Проблеми

  1. Високі витрати на підключення/ініціалізацію
  2. Утримання com-серверів - ефективний засібборотьби
  3. Тимчасове сховище. Виробник не рекомендує, але подітися більше нема куди. http://infostart.ru/public/331683/
  4. Повторне використання значень, що повертаються. Очищаються кожні 20 хв.
  5. Різні збирання платформи клієнта та сервера при однаковому виданні платформи
  6. Для обходу для кожної відмінної від COM-клієнта збирання платформи призначаємо та налаштовуємо DCOM сервер
  7. Відсутність інформації про типи вкладених у COM-об'єкти об'єктів 1С (замість типу об'єкта 1С скрізь отримуємо тип «COMОб'єкт») та відсутність контекстної підказки щодо них
  8. Для обходу застосовуємо принцип «мінімум COM-дзвінків»
  9. При передачі виключення з COM-сервера воно набуває короткої форми через помилку платформи
  10. Для обходу обертаємо кожен виклик на стороні COM-сервера у спробу і у винятку перевикликаємо виняток із повним описом помилки
  11. При створенні об'єкта COM помилка “Версія компоненти "comcntr" (8.X.XX.XXX) відрізняється від версії кореневого модуля "core82" (8.X.YY.YYY)”
  12. Для обходу створюємо COM+ додаток із позапроцесною активацією. Тоді COM-сервер створюватиметься в окремому процесі і збігу версій цих модулів не потрібно.
  13. Повільні канали (великі затримки)
  14. Кожній підмережі за окремим повільним каналом призначаємо та налаштовуємо свій DCOM сервер та при зверненні до баз за цим каналом COM-сервери створюємо на цьому комп'ютері, мінімізуючи кількість та обсяги викликів Com-клієнт<->Com-сервер
  15. Кешуємо (повторно використовуємо) COM-сервери
  16. Неможливо розірвати з'єднання робочого процесу, в якому очікується завершення виклику COM-сервера
  17. Для обходу можна використовувати створення COM-об'єктів у виділених хост-процесах, налаштувавши відповідним чином COM+ додаток, та реєструвати ідентифікатори цих процесів у прив'язці до сеансів COM-клієнтів. Тоді при необхідності завершити серверне з'єднання такого сеансу можна спочатку вбити процес COM-сервера, а потім сам сеанс.
  18. Під час звернення до COM-об'єкта може виникати помилка «Невідома помилка». Можливі причини:
  19. Com-сервер перестав існувати. Можливі причини:
  20. Переповнення стеку
  21. Невідновна помилка
  22. Хост-процес завершився
  23. Втрата зв'язку з нелокальним COM-сервером
  24. Збіг імен властивостей та методів без параметрів об'єкта створює неоднозначність звернення до них через COM
  25. Наприклад, якщо у довідника є реквізит Повне Найменування, то через наявність методу Повне Найменування() звернення до реквізиту Повне Найменування через COM може призвести до виклику методу Повне Найменування ()
  26. Для обходу використовуємо принцип “мінімум COM-дзвінків”

Com-технологія VS веб-сервіси в локальній мережі

Недоліки

  1. Розглянуті вище складності із взаємодією різних збірок платформи 1C, що вимагають для свого вирішення сервісного механізму
  2. Високі витрати на підключення/ініціалізацію, тому за відсутності кешування є неефективним для частих дрібних викликів
  3. Прив'язка до сімейства операційних систем(платформі) Windows

Переваги

  1. Відсутність потреби змінювати конфігурацію баз, до яких підключаємося
  2. Широка функціональність
  3. Простіше налагодження
  4. Не потрібно розгортати та підтримувати веб-сервер

Захоплення клієнтських ліцензій

У більшості випадків всім клієнтським додаткам, окремим випадком якого є Automation-сервер і з застереженнями є зовнішнє з'єднання, в одному сеансі ОС потрібна лише одна на всіх ліцензія. Однак, якщо клієнтській програмі не вдалося отримати апаратну ліцензію (від локального HASP або мережевого HASP) та програмну ліцензію (платформи або базової конфігурації), то намагається отримати окрему ліцензію з сервера 1С:Підприємства. Сервер 1С:Підприємства може видати ліцензію лише, якщо у властивостях бази дозволено видавати ліцензії сервером 1С:Підприємства. У такому випадку кожен клієнтський додаток та зовнішнє з'єднання може захоплювати свою власну ліцензію.

Висновок

Якщо ви хочете докладніше дізнатися про описані особливості, ви можете безкоштовно завантажити конфігурацію та демонстраційну базу продукту, для чого необхідно оформити попереднє замовлення на Інфостарті на продукт 2iS: Інтеграція. Незважаючи на наявність у конфігурації захищеного модуля, 99% програмного коду конфігурації відкрито, тобто Ви можете вивчити реалізацію описаних прийомів.