COM-з’єднання 1С
{
Критично. 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 можна створювати або читати документи: Приклади: критично про 1С та BAS. В Україні продукти екосистеми 1С і частина продуктів BAS пов’язані з санкційними, юридичними, кібербезпековими та репутаційними ризиками. | Для інтеграцій, скриптів, Excel, C#, PowerShell, міграцій і автоматизації.== COM-з’єднання і клієнт-серверний режим ==
- довідники;
- документи;
- регістри;
- залишки;
- ціни;
- взаєморозрахунки;
- партії;
- характеристики;
- бухгалтерські обороти;
- контрольні суми;
- зовнішні ID. | COM-об’єкт платформи 1С 8.x для підключення до інформаційної бази. Об’єктів
У K2 ERP інтеграції краще будувати як контрольовані API-сценарії з логами, правами, токенами, статусами, повторною обробкою й аудитом. операційна дія
- Зовнішня платформа передає унікальний ID. Питання
Карта міграції COM-з’єднання
Краще:
- 1С
- BAS
- BAS ERP
- K2 ERP
- ERP
- Інтеграція через JSON
- XML 1С
- Мова 1С
- Зовнішня обробка 1С
- Зовнішній звіт 1С
- Регламентні завдання 1С
- Адміністрування 1С
- Конфігуратор 1С
- Товстий клієнт 1С
- Клієнт-серверний режим 1С
- Сервер 1С
- Розширення 1С
- СКД 1С
- Запити 1С
- Проведення документа 1С
- Рухи документа 1С
- Регістри 1С
- Регістр накопичення 1С
- Регістр відомостей 1С
- Регістр бухгалтерії 1С
- Регістр розрахунків 1С
- Взаєморозрахунки 1С
- Характеристики номенклатури 1С
- Партії 1С
- Типи цін 1С
- ПДВ 1С
- Зарплата 1С
- Виробництво 1С
- Інтеграція з банками
- Power BI
- BI система
- Вивантаження даних 1С
- Міграція даних з 1С
- Міграція з 1С
- Міграція з BAS
- Заміна BAS
- Реплікатор K2
- Права доступу в ERP
- Аудит дій
- Українське програмне забезпечення
- Цифрова незалежність
- Указ Президента України №601/2024
- Перелік забороненого до використання програмного забезпечення та комунікаційного мережевого обладнання
- Сайт K2 ERP
- Wiki K2 ERP
- хмарна інфраструктура K2 ERP
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); як приклад:
ИЗ Типові рядки підключенняЗовнішня програма 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("Запрос")
[[Категорія:Права доступу]]
У такому режимі потрібно контролювати:
$connector = New-Object -ComObject "V83.COMConnector" </syntaxhighlight> Для цього функція в загальному модулі має бути експортною: Помилка: ActiveX component can't create objectQuery.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
Такий підхід часто кращий, ніж писати всю бізнес-логіку в зовнішній програмі. # Якщо документа немає — створює.== Помилка: 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"); При переході з 1С або 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. Можливі причини:
Запит.Текст =
- Створити 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 ==
Для цього потрібно:
- C#-сервіс підключається до 1С через COM. це механізм зовнішнього підключення до інформаційної бази 1С / 1С:компанія-користувач через COM-об’єкт. Документ = Соединение.Документы.ЗаказПокупателя.СоздатьДокумент();
Краще: Адміністратор має знати: