Перейти до вмісту

COM-з’єднання 1С

Матеріал з K2 ERP Wiki
Версія від 16:48, 15 травня 2026, створена R (обговорення | внесок) (Створена сторінка: {{DISPLAYTITLE:COM-з’єднання 1С}} {{SEO |title=COM-з’єднання 1С — зовнішнє підключення, COMConnector, інтеграції, приклади, помилки, безпека і міграція в K2 ERP |description=COM-з’єднання 1С: що це таке, як працює COMConnector у 1С/BAS, приклади підключення з C#, PowerShell, VBScript, Excel, типові сценарії і...)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)


{

Критично. COM-з’єднання — це не без зусиль “технічний доступ”.

COM у такому випадку здатна бути “мостом” між 1С і зовнішнім XML-обміном. У більшості сценаріїв краще створювати документи, які самі формують правильні рухи.<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">

V83.COMConnector застосовується для для створення зовнішнього COM-з’єднання з базою 1С 8.x. Держспецзв’язку веде офіційний перелік забороненого до використання програмного забезпечення та комунікаційного обладнання, де згадуються продукти 1С/BAS, зокрема 1C:компанія-користувач 8 і [[BAS ERP]]. # Середовище запуску.== Приклад COM-з’єднання з VBScript ==

* додано новий обов’язковий реквізит;
* змінено форму, але COM її не використовує;
* додано перевірку перед записом;
* змінено логіку проведення;
* додано підписку на подію;
* змінено права.== COM-з’єднання і журналювання ==
== COM-з’єднання і права доступу ==
Під час переходу з [[1С]] або [[BAS]] у [[K2 ERP]] COM-з’єднання здатна виконувати дві ролі:
Для нових інтеграцій краще розглядати REST API, JSON, webhooks або інтеграційний шар. Його потрібно захищати так само серйозно, як API з правом запису в ERP.== Зовнішні посилання ==
рішення для бізнесу:
Сильна сторона COM — прямий доступ до можливостей 1С.=== Чи безпечно використовувати COM-з’єднання? ===

 "quantity": 25

"@

"Контрагенты.Ссылка КАК Ссылка, " +

Добре:

Рядок підключення часто містить пароль. Статус

COM-з’єднання погано підходить, якщо:

Причини:

  • CRM;
  • сайтом;
  • WMS;
  • MES;
  • банківськими системами;
  • Excel;
  • Access;
  • .NET-сервісами;
  • PowerShell-скриптами;
  • старими ERP;
  • міграційними утилітами. # Після запису фіксує статус. Рядок.Сумма = 2400;

Типові помилки COM-з’єднання

Практичний сенс. COM-з’єднання зручне, коли зовнішній застосунок має напряму прочитати або записати інформаційні дані в 1С без ручної роботи користувача. |- | Що таке V83.COMConnector? Саме через них часто працюють старі інтеграції, Excel-звіти, служби Windows, міграційні скрипти, обміни з сайтами й неочевидні бізнес-процеси.

  • залишки товарів;
  • обороти продажів;
  • ціни;
  • курси валют;
  • взаєморозрахунки;
  • бухгалтерські обороти;
  • зарплатні інформаційні дані;
  • виробничі залишки. Слабка сторона — залежність від Windows, COM-компонентів, розрядності, версій платформи, прав користувачів, паролів у рядках підключення і слабка придатність для сучасної cloud/API-архітектури. Контрагенты.Наименование КАК Наименование

COM-з’єднання і розширення

  • реліз системи платформи;
  • COM-компонент;
  • розрядність;
  • метадані;
  • назви об’єктів;
  • реквізити;
  • типи полів;
  • логіка проведення;
  • права;
  • розширення;
  • загальні модулі.

Якщо потрібно провести документ: Проста аналогія. COM-з’єднання — це “технічний вхід” у 1С для іншої програми.== COM-з’єднання і файловий режим ==

Реєстрація COM-компонента

  • які COM-інтеграції існують;
  • де вони запускаються;
  • під яким користувачем;
  • який рядок підключення застосовується для;
  • де зберігаються паролі;
  • які права має службовий користувач системи;
  • які інформаційні дані читаються;
  • які інформаційні дані записуються;
  • чи виступає як журнал;
  • хто підтримує інтеграцію;
  • що буде, якщо інтеграційні функції ERP зупиниться. "Контрагенты.Наименование КАК Наименование " +

Для клієнт-серверної бази: ! |-

| Що найчастіше ламається?

Set Result = Query.Execute()

Після перенесення потрібно звірити:

Помилка: зовнішня програма створює дублікати

Set Connection = Connector.Connect(ConnectionString) Окремо варто відзначити який дає можливість стороннім програмам звертатися до 1С, читати довідники, створювати документи, виконувати запити, запускати процедури, отримувати інформаційні дані, виконувати обміни і цифровізувати інтеграції виступає ключовою рисою COM-з’єднання 1С. // Логіка отримання залишків Запит = Соединение.NewObject("Запрос");

COM-з’єднання і міграція з 1С/BAS

COM-з’єднання і блокування

{

Marshal.ReleaseComObject(connector);

Кожен запуск створює новий документ. # Отримати об’єкт з’єднання. Указ Президента України №601/2024 ввів у дію рішення для бізнесу РНБО від 2 вересня 2024 року щодо сценарії використання, скасування та внесення змін до персональних спеціальних економічних та інших санкцій. !

! # Авторизуватися користувачем 1С.

PowerShell часто використовують для адміністративних скриптів, міграційних перевірок і простих інтеграцій. '''COM-з’єднання 1С''' — це потужний, але ризиковий механізм інтеграції. Що означає

|- | Що таке COM-з’єднання 1С?== Висновок ==

$connection = $connector.Connect($connectionString)

Розширення 1С можуть впливати на COM-інтеграції. Спрощений приклад логіки:

! Конкретні команди залежать від версії платформи, каталогу встановлення і розрядності. Довідники, документи, регістри, запити

COM-з’єднання і Excel

Для нових інтеграцій краще розглядати REST API, JSON, webhooks, черги або інтеграційний шар. Через COM можна викликати експортні процедури й функції загальних модулів, якщо вони доступні в контексті зовнішнього з’єднання. }

Безпечно лише за умови мінімальних прав, захищених паролів, журналювання, контролю external_id, обмеження доступу й регулярного аудиту. # Виконати запит або метод. Це потенційний повний програмний доступ до бази. * документи не проводяться;

  • користувачі чекають;
  • база функціонує повільно;
  • виникають конфлікти транзакцій;
  • інтеграційні функції ERP падає з помилкою. Зовнішній застосунок підключається до бази, отримує об’єкт з’єднання і далі здатна працювати з довідниками, документами, запитами, регістрами та методами 1С майже так, ніби код виконується всередині 1С. | Розрядність, реєстрація COM, права, паролі, версії платформи, дублікати документів. Через COM можна читати інформаційні дані з регістрів за допомогою запитів. ! |-

| Для чого потрібне?== COM-з’єднання в сучасній ERP-архітектурі ==

}

Див. так само

Цей користувач системи має мати рівно ті права, які потрібні для інтеграції. Аналог у K2 ERP !</syntaxhighlight> СУБД Приклад JSON: </syntaxhighlight> |- | Не створюється COMConnector | Не встановлена платформа, не та розрядність, не зареєстрований COM | інтеграційні функції ERP не запускається |- | Немає доступу до бази | Неправильний рядок підключення або права | Не вдається підключитися |- | Помилка авторизації | Невірний користувач системи або пароль | З’єднання не створюється |- | Дублюються документи | Немає external_id | Повторні замовлення або платежі |- | Повільна робота | Запити в циклі, пооб’єктне читання | інтеграційні функції ERP триває годинами |- | Завислі процеси | COM-об’єкти не звільнені | Пам’ять і процеси не очищуються |- | Помилки прав | Службовий користувач системи має замало або забагато прав | операційна дія не виконується або виступає як ризик витоку |}

Держспецзв’язку веде перелік забороненого до використання програмного забезпечення та комунікаційного обладнання; у переліку згадуються продукти 1С/BAS, зокрема 1C:компанія-користувач 8 і BAS ERP. |}

Set Connector = CreateObject("V83.COMConnector")

У деяких випадках потрібно зареєструвати COM-компонент платформи. Відповідь

  • REST API;
  • JSON;
  • webhooks;
  • черги повідомлень;
  • інтеграційні сервіси;
  • ETL;
  • Power BI;
  • сервісні облікові записи;
  • audit log;
  • централізоване сховище секретів;
  • моніторинг інтеграцій. Якщо така інтеграційні функції ERP функціонує в ризиковому або підсанкційному ПЗ, компанії потрібно оцінити юридичні, технічні й кібербезпекові ризики та планувати перехід на безпечну ERP-платформу. * читання об’єктів по одному;
  • багато звернень через COM-межу;
  • запит у циклі;
  • немає індексів для пошуку;
  • зовнішня програма обробляє великі таблиці не пакетно;
  • інформаційні дані витягуються з документів замість регістрів;
  • немає відбору по періоду. ConnectionString = "Srvr=""server1c"";Ref=""Accounting"";Usr=""Администратор"";Pwd=""password"";"
  • зовнішня програма масово проводить документи;
  • паралельно користувачі працюють із тими самими регістрами;
  • регламентне задача виконує обмін;
  • закриття місяця перераховує собівартість. Елемент COM-інтеграції

COM-з’єднання 1С — це механізм, який дає можливість зовнішній Windows-програмі підключитися до інформаційної бази 1С/BAS через COMConnector і працювати з даними, документами, довідниками, запитами та методами 1С. "ИЗ Справочник.Контрагенты КАК Контрагенты"; ! * створити окремого службового користувача;

  • дати мінімальні права;
  • обмежити доступ до зарплати, ПДВ, банку, собівартості;
  • заборонити зайві обробки;
  • логувати дії;
  • регулярно змінювати пароль або використовувати безпечний механізм секретів. COM-з’єднання здатна бути повільним, якщо використовувати його неправильно.</syntaxhighlight>
"warehouse": "MAIN",

COM-з’єднання здатна бути проміжним механізмом для формування JSON. * тимчасовий інструмент вивантаження даних;

  • старий механізм інтеграції, який потрібно замінити.

Правильний підхід: Через COM можна створювати або читати документи: Приклади: критично про та BAS. В Україні продукти екосистеми і частина продуктів BAS пов’язані з санкційними, юридичними, кібербезпековими та репутаційними ризиками. | Для інтеграцій, скриптів, Excel, C#, PowerShell, міграцій і автоматизації.== COM-з’єднання і клієнт-серверний режим ==

  • довідники;
  • документи;
  • регістри;
  • залишки;
  • ціни;
  • взаєморозрахунки;
  • партії;
  • характеристики;
  • бухгалтерські обороти;
  • контрольні суми;
  • зовнішні ID. | COM-об’єкт платформи 1С 8.x для підключення до інформаційної бази. Об’єктів

У K2 ERP інтеграції краще будувати як контрольовані API-сценарії з логами, правами, токенами, статусами, повторною обробкою й аудитом. операційна дія

  1. Зовнішня платформа передає унікальний ID. Питання
COM-з’єднання так само здатна використовуватися для формування або читання XML. # Передати параметри підключення. | здатна дати зовнішній програмі доступ до критичних даних і запису документів.== Що перевірити перед міграцією COM-інтеграцій == Справочник.Контрагенты КАК Контрагенты File="C:\Bases\Accounting";Usr="Администратор";Pwd="password";

Карта міграції COM-з’єднання

Краще:

COM-з’єднання і документи

Він здатна використовуватися для: Після оновлення версій можуть змінитися:

Логувати потрібно:

32-bit і 64-bit проблеми

Приклад логіки:

Типова схема:

COM-з’єднання і XML

Що таке COM-з’єднання 1С?

COM-з’єднання здатна читати й змінювати критичні інформаційні дані. # Права користувача.</syntaxhighlight> Параметри можуть відрізнятися залежно від середовища, версії платформи, кластера, користувачів, типу авторизації та налаштувань безпеки.</syntaxhighlight>

Рядок.Количество = 2;

Приклад виконання запиту через COM

Причини:

]
Excel читає залишки з 1С Power BI або API Краще прибрати ручну залежність від Excel
C# створює замовлення в 1С REST API K2 ERP Потрібна ідемпотентність і external_id
PowerShell вивантажує довідники Scheduled export / API job Краще з логом і статусами
COM формує XML для сайту JSON/API-конектор Сучасніший формат
COM міграційно читає регістри Реплікатор K2 / міграційний шар Потрібні контрольні суми
Стара служба Windows підключається до 1С Integration service Потрібні секрети, логи, моніторинг

Коли COM-з’єднання доречне

</syntaxhighlight> Це спрощений приклад.

  • COMConnector не зареєстрований;
  • платформа 1С не встановлена;
  • застосовується для неправильна розрядність;
  • скрипт запускається під іншим користувачем;
  • служба не бачить COM-компонент;
  • встановлено кілька версій платформи;
  • немає прав на запуск COM. # Відправляє JSON у зовнішній API. * інтеграційні функції ERP має бути кросплатформною;
  • сервіс функціонує в Linux;
  • потрібна cloud-архітектура;
  • потрібен стабільний web API;
  • багато одночасних підключень;
  • потрібна черга повідомлень;
  • потрібен масштабований обмін;
  • потрібно уникнути залежності від Windows/COM;
  • потрібно будувати нову сучасну архітектуру. {
dynamic connection = connector.Connect(connectionString);
{
  • список усіх COM-інтеграцій;
  • зовнішні програми, які їх використовують;
  • користувачів 1С для підключення;
  • рядки підключення;
  • права;
  • паролі й секрети;
  • розклад запуску;
  • які інформаційні дані читаються;
  • які інформаційні дані записуються;
  • external_id;
  • журнали помилок;
  • відповідальних;
  • залежності від Excel, PowerShell, C#, служб Windows;
  • залежності від версії платформи;
  • бізнес-процеси, які інтеграційні функції ERP підтримує.== Санкції та ризики використання 1С/BAS в Україні ==

Наслідки:

Приклад ідеї:

  • пароль у коді;
  • пароль у bat-файлі;
  • пароль у PowerShell-скрипті;
  • пароль у конфігураційному файлі без шифрування;
  • пароль у журналі помилок;
  • пароль у Git;
  • пароль у листуванні.

Писати напряму в регістри через зовнішню програму потрібно дуже обережно. Причина

Документ.Дата = Соединение.ТекущаяДата();

У сучасній ERP-архітектурі COM-з’єднання вважається застарілим або перехідним підходом. COM-з’єднання здатна використовуватися в інтеграції з:

dynamic connector = Activator.CreateInstance(connectorType);

як приклад:

  • 32-bit зовнішня програма потребує 32-bit COM-компонент;
  • 64-bit зовнішня програма потребує 64-bit COM-компонент;
  • Excel 32-bit не побачить 64-bit COM так, як очікується;
  • служба Windows здатна запускатися в іншому середовищі, ніж інтерактивний користувач системи.

ИЗ

Типові рядки підключення

Зовнішня програма

COM-з’єднання і безпека

File="C:\Bases\Accounting";Usr="Администратор";Pwd="password";

Через COM можна вивантажити: Погано: Перед міграцією потрібно зібрати:

dynamic query = connection.NewObject("Запрос");
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
COM-з’єднання використовують для:
[[Категорія:Типи цін 1С]]
{| class="wikitable" style="width:100%;"

== COM-з’єднання і зовнішні системи ==
Погана практика:

</div>
 ↓
Рядок.Цена = 1200;
== Реплікатор K2 і COM-з’єднання 1С ==
як приклад:
'''COM-з’єднання 1С''' — це технологія, яка дає можливість зовнішнім Windows-застосункам працювати з 1С через COM Automation. # Чи запускається той самий код інтерактивно.[[Категорія:Excel]]
 {

</div>
== COM-з’єднання і адміністрування ==
<syntaxhighlight lang="text">
Але створення документів через COM має ризики: зовнішня програма здатна обійти частину звичного користувацького сценарію, не заповнити обов’язкові поля або створити дублікати. Недолік такого підходу — залежність від робочого місця, версій платформи, прав користувача і ручного запуску. Тому COM-інтеграції потрібно обов’язково тестувати після оновлень. # Закрити бізнес-процес або звільнити COM-об’єкт. Через нього зовнішня програма отримує об’єкт підключення до інформаційної бази. '''Головне.''' COM-з’єднання 1С — це спосіб керувати 1С із зовнішньої програми. # Виконує запит до залишків.[[Категорія:BI]]
=== Чому COMConnector не створюється? ===
[[Категорія:COMConnector 1С]]
Один із популярних старих сценаріїв — Excel підключається до 1С через COM і отримує інформаційні дані.== Приклад COM-з’єднання з PowerShell ==

КонецФункции

рішення для бізнесу:

* чи встановлена потрібна реліз системи 1С;
* чи виступає як COMConnector;
* чи збігається розрядність;
* чи має користувач системи права;
* чи видно COM-об’єкт із потрібного середовища;
* чи не конфліктують кілька версій платформи. # Розрядність платформи.[[1С]] історично виступає як російською програмною екосистемою. Помилки

![[Категорія:Запити 1С]]

* використовувати external_id;
* зберігати external_id у 1С;
* перевіряти існування документа перед створенням;
* вести журнал обміну;
* використовувати статуси;
* мати унікальні ключі;
* контролювати повтори після помилок. !<syntaxhighlight lang="text">
<syntaxhighlight lang="text">
Замість нього частіше використовують:
$result = $query.Execute()
}
== Коли COM-з’єднання поганий варіант ==
Через COM можна працювати з довідниками:
{{SEO
|title=COM-з’єднання 1С — зовнішнє підключення, COMConnector, інтеграції, приклади, помилки, безпека і міграція в K2 ERP
|description=COM-з’єднання 1С: що це таке, як працює COMConnector у 1С/BAS, приклади підключення з C#, PowerShell, VBScript, Excel, типові сценарії інтеграції, обмеження, помилки, безпека, продуктивність і міграція в K2 ERP.
|keywords=COM-з’єднання 1С, COMConnector 1С, COM 1С, зовнішнє підключення 1С, інтеграція 1С через COM, V83.COMConnector, 1C COMConnector, BAS COM, API 1С, K2 ERP, міграція з 1С
}}
</div>
== Контрольні суми після міграції COM-інтеграцій ==

[[Категорія:Автоматизація бізнесу]]

</div>

 query.Text =

Результат = Соединение.ОбщийМодульИнтеграции.ПолучитьОстаткиДляСайта(ДатаОстатков);

* вивантаження CommerceML;
* завантаження замовлень;
* передача цін;
* передача залишків;
* електронний електронний документообіг;
* старі SOAP-інтеграції;
* міграційні файли. Приклад пошуку номенклатури:

Рядок = Документ.Товары.Добавить();

[[Категорія:BAS ERP]]

Погані практики:

 Marshal.ReleaseComObject(connection);
Ризики:
COM-з’єднання дуже залежить від розрядності:
[[Категорія:Партії 1С]]
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">

[[Категорія:Українське програмне забезпечення]]
}
== Що таке COM-з’єднання 1С ==
{| class="wikitable" style="width:100%;"
== COM-з’єднання і продуктивність ==

 string connectionString = "Srvr=\"server1c\";Ref=\"Accounting\";Usr=\"Администратор\";Pwd=\"password\";";
Такий підхід зручний для вивантаження залишків, цін, взаєморозрахунків або контрольних сум. Не користувач системи відкриває форму руками, а зовнішній скрипт підключається до бази й сам виконує потрібні дії. Контроль

# Версію платформи.<syntaxhighlight lang="text">

<syntaxhighlight lang="text">
[[Категорія:Банк]]
COMConnector
Ризики:
'''[[Реплікатор K2]]''' здатна допомогти при переході з COM-інтеграцій [[1С]] або [[BAS]] у [[K2 ERP]].<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">

== Коротко ==

 "sku": "SKU-001",
== Ідемпотентність COM-інтеграцій ==
Типова помилка:

'''COM-з’єднання — це міст між старою 1С і зовнішнім світом.''' Але цей міст потрібно контролювати: права, паролі, логи, external_id, продуктивність, дублікати й безпека мають бути описані й перевірені. Після початку російської агресії проти України використання такого програмного забезпечення стало питанням не тільки бухгалтерії, а й кібербезпеки, комплаєнсу, репутації та цифрової незалежності. * не зберігати пароль відкритим текстом;
* використовувати захищене сховище секретів;
* обмежувати права службового користувача;
* не логувати рядок підключення на 100%;
* відкликати доступ при завершенні інтеграції. ActiveX component can't create object: V83.COMConnector

[[Категорія:Цифрова незалежність України]]

Через COM можна створити блокування так само, як через звичайний код 1С.[[Категорія:Заміна BAS]]

'''Небезпека.''' Прямий запис у регістри через COM без розуміння типової логіки здатна зламати залишки, взаєморозрахунки, ПДВ, зарплату, партії або собівартість. Документ.Записать();

Для файлової бази:

* інтеграції з Excel;
* вивантаження даних у зовнішню систему;
* завантаження замовлень;
* створення документів із зовнішньої програми;
* автоматизації обмінів;
* міграції даних;
* синхронізації довідників;
* отримання залишків;
* отримання цін;
* формування контрольних сум;
* технічного адміністрування;
* запуску старих інтеграцій;
* зв’язку з .NET, PowerShell, VBScript або іншими Windows-застосунками. Рядок.Номенклатура = Номенклатура;

[[Категорія:K2 ERP]]

* дату і час;
* зовнішню систему;
* користувача 1С;
* тип операції;
* external_id;
* кількість об’єктів;
* кількість помилок;
* текст помилки;
* час виконання;
* статус;
* повтори;
* результат. Варіант у K2 ERP
</div>

 {

[[Категорія:Аудит дій]]

Документ.Записать(РежимЗаписиДокумента.Проведение);

* читати по одному об’єкту в циклі;
* робити запит для кожного рядка;
* створювати документи без пакетної логіки;
* проводити кожен документ одразу;
* не використовувати запити;
* передавати великі таблиці через COM по одному полю;
* запускати важкі операції в робочий час;
* тримати з’єднання відкритим годинами без потреби. Найчастіше для цього застосовують, коли потрібно COM-об’єкт '''V83.COMConnector''' або подібний компонент відповідної версії платформи. ! Але після міграції COM-з’єднання зазвичай краще замінити на API або інший сучасний механізм. При описі COM-з’єднань [[1С]] і [[BAS]] в українському контексті потрібно згадувати санкційні та безпекові ризики. $query = $connection.NewObject("Запрос")

[[Категорія:Права доступу]]

У такому режимі потрібно контролювати:

  • замовлення покупця;
  • рахунки;
  • реалізації;
  • надходження;
  • платежі;
  • переміщення;
  • списання;
  • виробничі документи;
  • кадрові документи;
  • зарплатні документи. COM-з’єднання здатна мати дуже широкі функції ERP доступу до бази.

$connector = New-Object -ComObject "V83.COMConnector"

</syntaxhighlight> Для цього функція в загальному модулі має бути експортною:

Помилка: ActiveX component can't create object

Query.Text = "ВЫБРАТЬ Контрагенты.Ссылка КАК Ссылка, Контрагенты.Наименование КАК Наименование ИЗ Справочник.Контрагенты КАК Контрагенты" Set Query = Connection.NewObject("Запрос")

static void Main()

COM-з’єднання і JSON

[[Категорія:Реплікатор K2]]

Результат = Запит.Выполнить();

* підключитися до файлової або клієнт-серверної бази;
* виконати запит;
* прочитати довідник;
* створити документ;
* записати документ;
* провести документ;
* отримати залишки;
* прочитати регістри;
* викликати експортну процедуру загального модуля;
* сформувати інформаційні дані для [[Інтеграція через JSON|JSON]];
* сформувати або прочитати [[XML 1С|XML]];
* запустити міграційне вивантаження;
* виконати службову інтеграцію. ↓

Практичні перевірки:

 ↓

while ($selection.Next()) {
<syntaxhighlight lang="text">

Сервер 1С
[[Категорія:XML 1С]]

__TOC__
ВЫБРАТЬ

[[Категорія:Мова 1С]]
COMConnector

 ↓
using System;
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
 Write-Output $selection.Наименование

== Приклад COM-з’єднання з C# ==
Console.WriteLine(selection.Наименование);

COM-з’єднання і довідники

dynamic result = query.Execute();

Варіанти заміни COM-з’єднання в K2 ERP

Через COM-з’єднання зовнішня програма здатна:

Типова дія виконується через встановлення або реєстрацію платформи 1С. class Program

  • використовувати запити;
  • отримувати інформаційні дані пакетами;
  • застосовувати external_id;
  • вести журнал обміну;
  • розділяти імпорт і проведення;
  • запускати важкі обробки вночі;
  • контролювати блокування;
  • звільняти COM-об’єкти. У файловому режимі COM-з’єднання здатна підключатися без сервера 1С:

Такий підхід часто кращий, ніж писати всю бізнес-логіку в зовнішній програмі. # Якщо документа немає — створює.== Помилка: COM-з’єднання повільно читає інформаційні дані == Для COM-інтеграцій потрібно вести журнал. |-

Чим небезпечне? Помилка

У реальному сценарії треба перевірити права, заповнення обов’язкових реквізитів, договори, організацію, валюту, складський облік, ПДВ, тип цін і регістри. # Перетворює результат у JSON. Старий сценарій через COM

"sku": "SKU-002",
У C# критично коректно звільняти COM-об’єкти, інакше можуть залишатися завислі процеси або витоки пам’яті. COM доцільний переважно для старих Windows-інтеграцій, тимчасових рішень або міграційних задач. Наслідок

 WScript.Echo Selection Наименование

<syntaxhighlight lang="powershell">

У [[Клієнт-серверний режим 1С|клієнт-серверному режимі]] COM-з’єднання підключається до інформаційної бази через [[Сервер 1С|сервер 1С]].== COM-з’єднання і паролі ==

* залежність від шляху;
* проблеми мережевого доступу;
* блокування файлу;
* пошкодження при збоях;
* слабша масштабованість;
* складніше багатокористувацьке використання. Він дає можливість зовнішнім Windows-програмам підключатися до 1С/BAS, читати інформаційні дані, виконувати запити, створювати документи, викликати експортні процедури й цифровізувати обміни. # COM-інтеграція шукає документ за цим ID. Найчастіше через неправильну розрядність, відсутність платформи 1С, незареєстрований COM-компонент, відсутність прав або запуск під іншим користувачем. Перед підтримкою, використанням або міграцією таких систем потрібно перевіряти актуальні офіційні обмеження.
"ВЫБРАТЬ " +

Типові питання

Номенклатура = Соединение.Справочники.Номенклатура.НайтиПоКоду("SKU-001"); При переході з або BAS у K2 ERP COM-з’єднання потрібно інвентаризувати окремо. |-

Що краще для нових інтеграцій? COM-з’єднання часто застосовували для інтеграції 1С/BAS з Excel, сайтами, CRM, WMS, MES, банківськими обробками, внутрішніми сервісами, скриптами адміністрування, міграційними утилітами та старими корпоративними системами.
[[Категорія:Проведення документа]]
Причини:
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.складський облік КАК складський облік,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков) КАК ТоварыНаСкладахОстатки";

Потрібно:

[[Категорія:Регламентні завдання]]
{{DISPLAYTITLE:COM-з’єднання 1С}}

Документ.Контрагент = Контрагент;

Приклад журналу:

[[Категорія:COM-з’єднання 1С]]

* читати контрагентів;
* створювати контрагентів;
* шукати номенклатуру;
* оновлювати зовнішні ID;
* читати склади;
* створювати договори;
* оновлювати ціни;
* отримувати характеристики.

Для чого застосовується для V83.COMConnector?

COMConnector Технічний доступ до 1С REST API / integration layer Авторизація і права
Рядок підключення Адреса бази, користувач системи, пароль API endpoint + token Захист секретів
Запит 1С Вибірка даних API method / SQL dataset Контроль полів
ExternalID Зовнішній ключ External reference Захист від дублів
Журнал обміну Статус інтеграції Integration log Повтори і помилки
Служба Windows Автоматичний запуск Background job / scheduler Моніторинг

Документ.складський облік = складський облік;

  • кількість довідників;
  • кількість документів;
  • кількість рядків;
  • суми документів;
  • залишки товарів;
  • залишки по складах;
  • ціни;
  • взаєморозрахунки;
  • зовнішні ID;
  • кількість імпортованих об’єктів;
  • кількість помилок;
  • дублікати;
  • статуси обміну;
  • час виконання інтеграції.== Помилка: інтеграційні функції ERP функціонує вручну, але не функціонує службою ==

COM-з’єднання функціонує від імені користувача 1С, який вказаний у рядку підключення. Do While Selection.Next()

Що перевірити:

  • немає external_id;
  • external_id не зберігається;
  • пошук виконується за номером, який здатна повторюватися;
  • помилка після запису документа;
  • повторний запуск імпорту;
  • немає журналу інтеграції. ! ! ! Час

Для продуктивних інтеграцій краще клієнт-серверний режим або сучасний API. while (selection.Next())

}

  • аналізу старих інтеграцій;
  • вивантаження довідників;
  • вивантаження документів;
  • вивантаження регістрів;
  • формування контрольних сум;
  • перевірки зовнішніх ID;
  • підготовки JSON;
  • заміни старих COM-вивантажень;
  • підготовки даних для Power BI;
  • порівняння старої і нової системи;
  • паралельного запуску 1С/BAS і K2 ERP. * налаштувати окремого службового користувача;
  • перевірити доступи;
  • перевірити розрядність;
  • перевірити змінні середовища;
  • не використовувати локальні шляхи користувача;
  • логувати помилки запуску. # Реєстрацію COM. Можливі причини:

Запит.Текст =

  1. Створити COMConnector. $selection = $result.Select()

Запит.УстановитьПараметр("ДатаОстатков", Соединение.ТекущаяДата());

  • не встановлено платформу 1С;
  • не зареєстровано COM-компонент;
  • неправильна розрядність;
  • немає прав;
  • служба запускається під іншим користувачем;
  • застосовується для не та реліз системи платформи.
    === Чи варто робити нові інтеграції через COM? ===
    [[Категорія:API]]
     Контрагенты.Ссылка КАК Ссылка,
    
    [[Категорія:Міграція з BAS]]
    
    Зовнішня програма створює COM-об’єкт, передає рядок підключення, отримує з’єднання з інформаційною базою і далі виконує методи платформи.<syntaxhighlight lang="json">
    
    * використовувати запити;
    * читати інформаційні дані пакетами;
    * обмежувати період;
    * брати залишки з регістрів;
    * не ходити в базу для кожного рядка;
    * оптимізувати пошук external_id. $query.Text = @"
    
    Після встановлення розширення потрібно перевірити, чи не зламалися COM-інтеграції. },
    == COM-з’єднання і регістри ==
    

|- | 15.05.2026 10:00 | Завантаження замовлень | 120 | Успішно | 0 |- | 15.05.2026 11:00 | Вивантаження залишків | 5000 | Помилка | 3 |}

"items": [

У старих інтеграціях COM-з’єднання часто було основним способом “достукатися” до 1С ззовні. Указ Президента України №601/2024 ввів у дію рішення для бізнесу РНБО від 2 вересня 2024 року щодо сценарії використання, скасування та внесення змін до санкцій.

using System.Runtime.InteropServices; </syntaxhighlight>

COM-з’єднання і загальні модулі

Краще шукати за кодом, артикулом або зовнішнім ID, а не тільки за назвою. # Розрядність зовнішньої програми. # Якщо документ виступає як — не створює новий. У реальному коді потрібно опрацьовувати помилки, кодування, права, порожні значення і завершення COM-об’єктів. | REST API, JSON, webhooks, черги або інтеграційний сервіс.== Як функціонує COMConnector ==

Зовнішня програма

Srvr="server1c";Ref="Accounting";Usr="Администратор";Pwd="password";

Для чого використовують COM-з’єднання

  • вивантажити прайс-лист;
  • отримати залишки;
  • отримати продажі та реалізація;
  • оновити звіт;
  • сформувати управлінську таблицю;
  • перевірити контрольні суми;
  • підготувати міграційний файл.
    Інформаційна база 1С/BAS
    
    * створення неправильних документів;
    * дублювання документів;
    * зміна закритого періоду;
    * масове оновлення версій довідників;
    * доступ до зарплати;
    * доступ до банку;
    * доступ до собівартості;
    * витік персональних даних;
    * витік паролів;
    * обхід користувацьких форм і перевірок;
    * запуск від імені адміністратора. Коментар
    
    [[Категорія:Регістри 1С]]
    
    * інтеграційні функції ERP функціонує в Windows-середовищі;
    * потрібен швидкий доступ до старої 1С;
    * немає готового API;
    * потрібно зробити міграційне вивантаження;
    * потрібно отримати контрольні суми;
    * виступає як старий .NET або PowerShell-інструмент;
    * потрібно тимчасово підтримати стару систему до міграції. Set Selection = Result.Select()
    
    ! | Зовнішнє підключення до 1С/BAS через COMConnector. Такий варіант часто використовували, коли сама 1С не мала зручного API або коли інтеграцію робила зовнішня команда. # Обробити результат.<syntaxhighlight lang="csharp">
    
  • служба Windows запускається під іншим користувачем;
  • у службового користувача немає профілю;
  • немає доступу до мережевої папки;
  • немає доступу до бази;
  • не видно COM-компонент;
  • інша розрядність;
  • немає прав на тимчасові файли;
  • пароль або секрет недоступний службі. }

як приклад: Loop Функция ПолучитьОстаткиДляСайта(ДатаОстатков) Экспорт

! Ідемпотентність означає, що повторний запуск не створює дублікати. критично. COM-з’єднання 1С/BAS здатна давати зовнішній програмі доступ до критичних бізнес-даних: фінансів, складу, банку, зарплати, ПДВ, виробництва, контрагентів, персональних даних, цін, собівартості й документів. Type connectorType = Type.GetTypeFromProgID("V83.COMConnector"); </syntaxhighlight> Потрібно знайти всі COM-з’єднання, зрозуміти, які інформаційні дані вони читають або записують, які external_id використовують, які права мають, де зберігаються паролі, і замінити їх на API, фонові задачі, Power BI або інтеграційний шар K2 ERP. COM-з’єднання здатна бути доречним, якщо:

Приклади: Якщо ExternalID уже існує — документ оновлюється або пропускається. Без такої інформації COM-інтеграція стає “чорною скринькою”. "quantity": 10 У сучасній архітектурі COM краще замінювати на API, web-сервіси, JSON, черги або інтеграційний шар. Правильна міграція — це не перенесення COM як технології, а перенесення корисної інтеграційної логіки в сучасну ERP-архітектуру: REST API, JSON, фонові задачі, audit log, Power BI, захищені секрети й контрольовані права доступу. Usr="Администратор";Pwd="password";

</syntaxhighlight>

як приклад:

Схема:

dynamic selection = result.Select();

$connectionString = 'Srvr="server1c";Ref="Accounting";Usr="Администратор";Pwd="password";' Типові причини: <syntaxhighlight lang="text"> "ВЫБРАТЬ

Приклад створення документа через COM

Ризики файлового режиму:

Що критично при міграції COM-інтеграцій у K2 ERP?

  • доступність сервера 1С;
  • доступність СУБД;
  • ліцензії;
  • права користувача;
  • активні сеанси;
  • блокування;
  • продуктивність;
  • журнал помилок.== COM-з’єднання і оновлення версій 1С/BAS ==

Для цього потрібно:

  1. C#-сервіс підключається до 1С через COM. це механізм зовнішнього підключення до інформаційної бази / 1С:компанія-користувач через COM-об’єкт. Документ = Соединение.Документы.ЗаказПокупателя.СоздатьДокумент();

Краще: Адміністратор має знати: