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

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

Матеріал з K2 ERP Wiki

Сервер 1С

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

query.Text =

{

Правильна міграція — це не перенесення COM як технології, а перенесення корисної інтеграційної логіки в сучасну ERP-архітектуру: REST API, JSON, фонові задачі, audit log, Power BI, захищені секрети й контрольовані права доступу.; Запит.Текст =

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

Ідемпотентність означає, що повторний запуск не створює дублікати.;</syntaxhighlight>

{

!;== Як функціонує COMConnector ==

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

  • інтеграції з Excel;
  • вивантаження даних у зовнішню систему;
  • завантаження замовлень;
  • створення документів із зовнішньої програми;
  • автоматизації обмінів;
  • міграції даних;
  • синхронізації довідників;
  • отримання залишків;
  • отримання цін;
  • формування контрольних сум;
  • технічного адміністрування;
  • запуску старих інтеграцій;
  • зв’язку з .NET, PowerShell, VBScript або іншими Windows-застосунками.; * тимчасовий інструмент вивантаження даних;
  • старий механізм інтеграції, який потрібно замінити.; !; Без такої інформації COM-інтеграція стає “чорною скринькою”.; Приклади:

Проста аналогія. COM-з’єднання — це “технічний вхід” у 1С для іншої програми.;</syntaxhighlight>

Кожен запуск створює новий документ.; Варіант у K2 ERP

Чи варто робити нові інтеграції через COM?

"sku": "SKU-002",

Довідники, документи, регістри, запити Практичні перевірки: Причини: </syntaxhighlight>

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

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

  • немає external_id;
  • external_id не зберігається;
  • пошук виконується за номером, який має змогу повторюватися;
  • помилка після запису документа;
  • повторний запуск імпорту;
  • немає журналу інтеграції.;
    <div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
    
    # C#-сервіс підключається до 1С через COM.; Але після міграції COM-з’єднання зазвичай краще замінити на API або інший сучасний механізм.;
    
dynamic connection = connector.Connect(connectionString);

Для COM-інтеграцій потрібно вести журнал.; # Чи запускається той самий код інтерактивно.; |-

Що таке V83.COMConnector?; "@
"ВЫБРАТЬ " +

як ілюстрація:

{

Потрібно знайти всі COM-з’єднання, зрозуміти, які інформаційні дані вони читають або записують, які external_id використовують, які права мають, де зберігаються паролі, і замінити їх на API, фонові задачі, Power BI або інтеграційний шар K2 ERP.; Причина

Set Connection = Connector.Connect(ConnectionString)

COM-з’єднання і продуктивність

Добре:

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

COM-з’єднання часто застосовували для інтеграції 1С/BAS з Excel, сайтами, CRM, WMS, MES, банківськими обробками, внутрішніми сервісами, скриптами адміністрування, міграційними утилітами та старими корпоративними системами.; "sku": "SKU-001", Типова схема: Головне. COM-з’єднання 1С — це спосіб керувати 1С із зовнішньої програми.; File="C:\Bases\Accounting";Usr="Администратор";Pwd="password";

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

Чому COMConnector не створюється?

Контрагенты.Наименование КАК Наименование

Такий підхід часто кращий, ніж писати всю бізнес-логіку в зовнішній програмі.; Коментар Через COM можна читати інформаційні дані з регістрів за допомогою запитів.;== Висновок ==

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

== Контрольні суми після міграції COM-інтеграцій ==

Спрощений приклад логіки:
При переході з [[1С]] або [[BAS]] у [[K2 ERP]] COM-з’єднання потрібно інвентаризувати окремо.; {
=== Для чого застосовується V83.COMConnector? ===
 static void Main()
!; Зовнішній застосунок підключається до бази, отримує об’єкт з’єднання і далі має змогу працювати з довідниками, документами, запитами, регістрами та методами 1С майже так, ніби код виконується всередині 1С.;[[Категорія:Банк]]
[[Категорія:1С]]
Адміністратор має знати:
Marshal.ReleaseComObject(connector);
  • читати по одному об’єкту в циклі;
  • робити запит для кожного рядка;
  • створювати документи без пакетної логіки;
  • проводити кожен документ одразу;
  • не використовувати запити;
  • передавати великі таблиці через COM по одному полю;
  • запускати важкі операції в робочий час;
  • тримати з’єднання відкритим годинами без потреби.; while (selection.Next())

Якщо ExternalID уже існує — документ оновлюється або пропускається.; Він надає можливість зовнішнім Windows-програмам підключатися до 1С/BAS, читати інформаційні дані, виконувати запити, створювати документи, викликати експортні процедури й автоматизувати обміни.; Після початку російської агресії проти України використання такого програмного забезпечення стало питанням не тільки бухгалтерії, а й кібербезпеки, комплаєнсу, репутації та цифрової незалежності.;== COM-з’єднання і розширення ==

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

Такий варіант часто використовували, коли сама 1С не мала зручного API або коли інтеграцію робила зовнішня команда.; while ($selection.Next()) {

  • налаштувати окремого службового користувача;
  • перевірити доступи;
  • перевірити розрядність;
  • перевірити змінні середовища;
  • не використовувати локальні шляхи користувача;
  • логувати помилки запуску.; Старий сценарій через COM

V83.COMConnector застосовується для створення зовнішнього COM-з’єднання з базою 1С 8.x.;== COM-з’єднання і права доступу == Можливі причини: Usr="Администратор";Pwd="password"; як ілюстрація: </syntaxhighlight> } Рядок.Номенклатура = Номенклатура; істотно про та BAS. В Україні продукти екосистеми і частина продуктів BAS пов’язані з санкційними, юридичними, кібербезпековими та репутаційними ризиками.; # Реєстрацію COM.;== Помилка: ActiveX component can't create object ==

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

ВЫБРАТЬ Логувати потрібно: Документ = Соединение.Документы.ЗаказПокупателя.СоздатьДокумент(); COM-з’єднання погано підходить, якщо: Причини:

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

Наслідки:

  • аналізу старих інтеграцій;
  • вивантаження довідників;
  • вивантаження документів;
  • вивантаження регістрів;
  • формування контрольних сум;
  • перевірки зовнішніх ID;
  • підготовки JSON;
  • заміни старих COM-вивантажень;
  • підготовки даних для Power BI;
  • порівняння старої і нової системи;
  • паралельного запуску 1С/BAS і K2 ERP.; Відповідь

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

"warehouse": "MAIN",

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

Реплікатор K2 і COM-з’єднання 1С

Зовнішня програма створює COM-об’єкт, передає рядок підключення, отримує з’єднання з інформаційною базою і далі виконує методи платформи.;== Реєстрація COM-компонента ==

Під час переходу з або BAS у K2 ERP COM-з’єднання має змогу виконувати дві ролі:

Але створення документів через COM має ризики: зовнішня програма має змогу обійти частину звичного користувацького сценарію, не заповнити обов’язкові поля або створити дублікати.; операційна дія

COM-з’єднання і актуалізація 1С/BAS

  • реліз платформи;
  • COM-компонент;
  • розрядність;
  • метадані;
  • назви об’єктів;
  • реквізити;
  • типи полів;
  • логіка проведення;
  • права;
  • розширення;
  • загальні модулі.; # Авторизуватися користувачем 1С.; ActiveX component can't create object: V83.COMConnector

Через COM можна викликати експортні процедури й функції загальних модулів, якщо вони доступні в контексті зовнішнього з’єднання.;

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

У реальному сценарії треба перевірити права, заповнення обов’язкових реквізитів, договори, організацію, валюту, складський облік, ПДВ, тип цін і регістри.; Через COM можна вивантажити:

* створити окремого службового користувача;
* дати мінімальні права;
* обмежити доступ до зарплати, ПДВ, банку, собівартості;
* заборонити зайві обробки;
* логувати дії;
* регулярно змінювати пароль або використовувати безпечний механізм секретів.;== Ідемпотентність COM-інтеграцій ==

* використовувати запити;
* читати інформаційні дані пакетами;
* обмежувати період;
* брати залишки з регістрів;
* не ходити в базу для кожного рядка;
* оптимізувати пошук external_id.; $selection = $result.Select()

!;

COM-з’єднання має змогу читати й змінювати критичні інформаційні дані.; Що означає

Запит = Соединение.NewObject("Запрос");

У K2 ERP інтеграції краще будувати як контрольовані API-сценарії з логами, правами, токенами, статусами, повторною обробкою й аудитом.; У більшості сценаріїв краще створювати документи, які самі формують правильні рухи.; Слабка сторона — залежність від Windows, COM-компонентів, розрядності, версій платформи, прав користувачів, паролів у рядках підключення і слабка придатність для сучасної cloud/API-архітектури.; це механізм зовнішнього підключення до інформаційної бази / 1С:організація через COM-об’єкт.; |-

Що краще для нових інтеграцій?;== COM-з’єднання і блокування ==
"Контрагенты.Ссылка КАК Ссылка, " +

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

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

Set Connector = CreateObject("V83.COMConnector")

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

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

$query = $connection.NewObject("Запрос") $connectionString = 'Srvr="server1c";Ref="Accounting";Usr="Администратор";Pwd="password";' Зовнішня програма Ризики:

COMConnector

{| class="wikitable" style="width:100%;"

{{DISPLAYTITLE:COM-з’єднання 1С}}

'''COM-з’єднання — це міст між старою 1С і зовнішнім світом.''' Але цей міст потрібно контролювати: права, паролі, логи, external_id, продуктивність, дублікати й безпека мають бути описані й перевірені.; Найчастіше для цього застосовують, коли потрібно COM-об’єкт '''V83.COMConnector''' або подібний компонент відповідної версії платформи.; * підключитися до файлової або клієнт-серверної бази;
* виконати запит;
* прочитати довідник;
* створити документ;
* записати документ;
* провести документ;
* отримати залишки;
* прочитати регістри;
* викликати експортну процедуру загального модуля;
* сформувати інформаційні дані для [[Інтеграція через JSON|JSON]];
* сформувати або прочитати [[XML 1С|XML]];
* запустити міграційне вивантаження;
* виконати службову інтеграцію.; |-
| Що найчастіше ламається?; Помилки
У [[Клієнт-серверний режим 1С|клієнт-серверному режимі]] COM-з’єднання підключається до інформаційної бази через [[Сервер 1С|сервер 1С]].;[[Категорія:Взаєморозрахунки]]

 Marshal.ReleaseComObject(connection);

У сучасній архітектурі COM краще замінювати на API, web-сервіси, JSON, черги або інтеграційний шар.; COM доцільний переважно для старих Windows-інтеграцій, тимчасових рішень або міграційних задач.; # Середовище запуску.;<syntaxhighlight lang="text">

 "Контрагенты.Наименование КАК Наименование " +
<syntaxhighlight lang="text">
 dynamic selection = result.Select();
Через 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
| Потрібні секрети, логи, моніторинг
|}

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

== 32-bit і 64-bit проблеми ==
== Карта міграції COM-з’єднання ==
КонецФункции
 Write-Output $selection.Наименование
</div>
|-
| COMConnector
| Технічний доступ до 1С
| REST API / integration layer
| Авторизація і права
|-
| Рядок підключення
| Адреса бази, користувач системи, пароль
| API endpoint + token
| Захист секретів
|-
| Запит 1С
| Вибірка даних
| API method / SQL dataset
| Контроль полів
|-
| ExternalID
| Зовнішній ключ
| External reference
| Захист від дублів
|-
| Журнал обміну
| Статус інтеграції
| Integration log
| Повтори і помилки
|-
| Служба Windows
| Автоматичний запуск
| Background job / scheduler
| Моніторинг
|}

"ВЫБРАТЬ

Set Result = Query.Execute()

* кількість довідників;
* кількість документів;
* кількість рядків;
* суми документів;
* залишки товарів;
* залишки по складах;
* ціни;
* взаєморозрахунки;
* зовнішні ID;
* кількість імпортованих об’єктів;
* кількість помилок;
* дублікати;
* статуси обміну;
* час виконання інтеграції.; Його потрібно захищати так само серйозно, як API з правом запису в ERP.; Наслідок
[[Розширення 1С]] можуть впливати на COM-інтеграції.; Указ Президента України №601/2024 ввів у дію рішення для бізнесу РНБО від 2 вересня 2024 року щодо сфера застосування, скасування та внесення змін до санкцій.; Контроль
Приклад журналу:
Типова помилка:
Цей користувач системи має мати рівно ті права, які потрібні для інтеграції.;<syntaxhighlight lang="csharp">
 },

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

Результат = Соединение.ОбщийМодульИнтеграции.ПолучитьОстаткиДляСайта(ДатаОстатков);
[[Категорія:Партії 1С]]
Для нових інтеграцій краще розглядати REST API, JSON, webhooks, черги або інтеграційний шар.; Перед підтримкою, використанням або міграцією таких систем потрібно перевіряти актуальні офіційні обмеження.; як ілюстрація:

* додано новий обов’язковий реквізит;
* змінено форму, але COM її не використовує;
* додано перевірку перед записом;
* змінено логіку проведення;
* додано підписку на подію;
* змінено права.; Аналог у K2 ERP
|-
| Що таке COM-з’єднання 1С?;== Приклад COM-з’єднання з PowerShell ==

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

Один із популярних старих сценаріїв — Excel підключається до 1С через COM і отримує інформаційні дані.; # Передати параметри підключення.; Це потенційний повний програмний доступ до бази.; dynamic query = connection.NewObject("Запрос");

* зовнішня програма масово проводить документи;
* паралельно користувачі працюють із тими самими регістрами;
* регламентне задача виконує обмін;
* закриття місяця перераховує собівартість.;== COM-з’єднання і регістри ==
Set Selection = Result.Select()
Такий підхід зручний для вивантаження залишків, цін, взаєморозрахунків або контрольних сум.; !; # Обробити результат.; COMConnector

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

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

Помилка: COM-з’єднання повільно читає інформаційні дані

Інформаційна база 1С/BAS

$connection = $connector.Connect($connectionString)

Див.; додатково

  • вивантаження CommerceML;
  • завантаження замовлень;
  • передача цін;
  • передача залишків;
  • електронний електронний документообіг;
  • старі SOAP-інтеграції;
  • міграційні файли.; Указ Президента України №601/2024 ввів у дію рішення для бізнесу РНБО від 2 вересня 2024 року щодо сфера застосування, скасування та внесення змін до персональних спеціальних економічних та інших санкцій.; class Program
  • інтеграційні функціональні можливості має бути кросплатформною;
  • сервіс функціонує в Linux;
  • потрібна cloud-архітектура;
  • потрібен стабільний web API;
  • багато одночасних підключень;
  • потрібна черга повідомлень;
  • потрібен масштабований обмін;
  • потрібно уникнути залежності від Windows/COM;
  • потрібно будувати нову сучасну архітектуру.; Окремо варто відзначити який надає можливість стороннім програмам звертатися до 1С, читати довідники, створювати документи, виконувати запити, запускати процедури, отримувати інформаційні дані, виконувати обміни і автоматизувати інтеграції виступає ключовою рисою COM-з’єднання 1С.; !; Питання
dynamic connector = Activator.CreateInstance(connectorType);
↓

Рядок.Цена = 1200; Сильна сторона COM — прямий доступ до можливостей 1С.;

  • замовлення покупця;
  • рахунки;
  • реалізації;
  • надходження;
  • платежі;
  • переміщення;
  • списання;
  • виробничі документи;
  • кадрові документи;
  • зарплатні документи.; |-
Чим небезпечне?; Для нових інтеграцій краще розглядати REST API, JSON, webhooks або інтеграційний шар.; # Виконує запит до залишків.; {
== Типові помилки COM-з’єднання ==
[[Категорія:Заміна BAS]]

 "quantity": 25

Краще шукати за кодом, артикулом або зовнішнім ID, а не тільки за назвою.; Рядок підключення часто містить пароль.;<syntaxhighlight lang="vbscript">

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

Якщо потрібно провести документ:

; # Виконати запит або метод.;

з цієї причини COM-інтеграції потрібно обов’язково тестувати після оновлень.; * не зберігати пароль відкритим текстом;

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

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

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

COM-з’єднання має змогу бути доречним, якщо:

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

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

У старих інтеграціях COM-з’єднання часто було основним способом “достукатися” до 1С ззовні.; Статус

  • залишки товарів;
  • обороти продажів;
  • ціни;
  • курси валют;
  • взаєморозрахунки;
  • бухгалтерські обороти;
  • зарплатні інформаційні дані;
  • виробничі залишки.; У сучасній ERP-архітектурі COM-з’єднання вважається застарілим або перехідним підходом.; | REST API, JSON, webhooks, черги або інтеграційний сервіс.; {

Приклад COM-з’єднання з C#

"ИЗ Справочник.Контрагенты КАК Контрагенты";

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

Номенклатура = Соединение.Справочники.Номенклатура.НайтиПоКоду("SKU-001");

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

Результат = Запит.Выполнить(); У C# істотно коректно звільняти COM-об’єкти, інакше можуть залишатися завислі процеси або витоки пам’яті.; У такому режимі потрібно контролювати:

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

Після встановлення розширення потрібно перевірити, чи не зламалися COM-інтеграції.; } Ризики: Краще:

Це спрощений приклад.; Не користувач системи відкриває форму руками, а зовнішній скрипт підключається до бази й сам виконує потрібні дії.;</syntaxhighlight>

  1. Версію платформи.; # Отримати об’єкт з’єднання.; # Якщо документа немає — створює.; Потрібно:

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

має змогу дати зовнішній програмі доступ до критичних даних і запису документів.; Помилка
Краще:
 dynamic result = query.Execute();
}

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

 ]

# Створити COMConnector.;== Що перевірити перед міграцією COM-інтеграцій ==
<syntaxhighlight lang="text">
|-
| Не створюється COMConnector
| Не встановлена платформа, не та розрядність, не зареєстрований COM
| інтеграційні функціональні можливості не запускається
|-
| Немає доступу до бази
| Неправильний рядок підключення або права
| Не вдається підключитися
|-
| Помилка авторизації
| Невірний користувач системи або пароль
| З’єднання не створюється
|-
| Дублюються документи
| Немає external_id
| Повторні замовлення або платежі
|-
| Повільна робота
| Запити в циклі, пооб’єктне читання
| інтеграційні функціональні можливості триває годинами
|-
| Завислі процеси
| COM-об’єкти не звільнені
| Пам’ять і процеси не очищуються
|-
| Помилки прав
| Службовий користувач системи має замало або забагато прав
| операційна дія не виконується або є собою ризик витоку
|}

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

 }

* COMConnector не зареєстрований;
* платформа 1С не встановлена;
* застосовується неправильна розрядність;
* скрипт запускається під іншим користувачем;
* служба не бачить COM-компонент;
* встановлено кілька версій платформи;
* немає прав на запуск COM.; # Після запису фіксує статус.;<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">

Через COM можна створити блокування так само, як через звичайний код 1С.; Зовнішня програма
Set Query = Connection.NewObject("Запрос")

$query.Text = @"
 WScript.Echo Selection Наименование

[[Категорія:COMConnector 1С]]
Погані практики:
 string connectionString = "Srvr=\"server1c\";Ref=\"Accounting\";Usr=\"Администратор\";Pwd=\"password\";";
[[Категорія:Типи цін 1С]]

[[Категорія:COM-з’єднання 1С]]
'''COM-з’єднання 1С''' — це потужний, але ризиковий механізм інтеграції.;[[Категорія:Power BI]]
</div>
Функция ПолучитьОстаткиДляСайта(ДатаОстатков) Экспорт
$result = $query.Execute()
Типова дія виконується через встановлення або реєстрацію платформи 1С.; Об’єктів

<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">

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

* використовувати external_id;
* зберігати external_id у 1С;
* перевіряти існування документа перед створенням;
* вести журнал обміну;
* використовувати статуси;
* мати унікальні ключі;
* контролювати повтори після помилок.; Конкретні команди залежать від версії платформи, каталогу встановлення і розрядності.; Приклад пошуку номенклатури:

 ↓

using System.Runtime.InteropServices;

* REST API;
* JSON;
* webhooks;
* черги повідомлень;
* інтеграційні сервіси;
* ETL;
* Power BI;
* сервісні облікові записи;
* audit log;
* централізоване сховище секретів;
* моніторинг інтеграцій.; '''істотно.''' COM-з’єднання 1С/BAS має змогу давати зовнішній програмі доступ до критичних бізнес-даних: фінансів, складу, банку, зарплати, ПДВ, виробництва, контрагентів, персональних даних, цін, собівартості й документів.; |}
Документ.Дата = Соединение.ТекущаяДата(); } Type connectorType = Type.GetTypeFromProgID("V83.COMConnector");
; Небезпека. Прямий запис у регістри через COM без розуміння типової логіки має змогу зламати залишки, взаєморозрахунки, ПДВ, зарплату, партії або собівартість.; * доступність сервера 1С;
  • доступність СУБД;
  • ліцензії;
  • права користувача;
  • активні сеанси;
  • блокування;
  • продуктивність;
  • журнал помилок.;== COM-з’єднання і паролі ==
;

COM-з’єднання має змогу використовуватися в інтеграції з:

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

</syntaxhighlight>

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

Типові причини: </syntaxhighlight>

Безпечно лише за умови мінімальних прав, захищених паролів, журналювання, контролю external_id, обмеження доступу й регулярного аудиту.;== COM-з’єднання і безпека ==
PowerShell часто використовують для адміністративних скриптів, міграційних перевірок і простих інтеграцій.; !;== COM-з’єднання в сучасній ERP-архітектурі ==

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

== Приклад COM-з’єднання з VBScript ==

* [[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]]
* [[Аудит дій]]
* [[Українське програмне забезпечення]]
* [[Цифрова незалежність]]

Приклад JSON:

* [https://www.president.gov.ua/documents/6012024-52009 Указ Президента України №601/2024]
* [https://cip.gov.ua/ua/statics/perelik-zaboronenogo-do-vikoristannya-programnogo-zabezpechennya-ta-komunikaciinogo-merezhevogo-obladnannya Перелік забороненого до використання програмного забезпечення та комунікаційного мережевого обладнання]
* [https://erp.kyiv.ua Сайт K2 ERP]
* [https://wiki.erp.kyiv.ua Wiki K2 ERP]
* [https://cloud.corp2.eu хмарна інфраструктура K2 ERP]

'''Практичний сенс.''' COM-з’єднання зручне, коли зовнішній застосунок має напряму прочитати або записати інформаційні дані в 1С без ручної роботи користувача.; Час
Документ.Записать(РежимЗаписиДокумента.Проведение);
== COM-з’єднання і файловий режим ==
рішення для бізнесу:
Він має змогу використовуватися для:
Що перевірити:
|-
| 15.05.2026 10:00
| Завантаження замовлень
| 120
| Успішно
| 0
|-
| 15.05.2026 11:00
| Вивантаження залишків
| 5000
| Помилка
| 3
|}

!;== COM-з’єднання і XML ==
ИЗ
Query.Text = "ВЫБРАТЬ Контрагенты.Ссылка КАК Ссылка, Контрагенты.Наименование КАК Наименование ИЗ Справочник.Контрагенты КАК Контрагенты"
=== Чи безпечно використовувати COM-з’єднання? ===
!;== Помилка: інтеграційні функціональні можливості функціонує вручну, але не функціонує службою ==

<syntaxhighlight lang="text">

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

* дату і час;
* зовнішню систему;
* користувача 1С;
* тип операції;
* external_id;
* кількість об’єктів;
* кількість помилок;
* текст помилки;
* час виконання;
* статус;
* повтори;
* результат.; | Для інтеграцій, скриптів, Excel, C#, PowerShell, міграцій і автоматизації.; # Відправляє JSON у зовнішній API.; using System;

<syntaxhighlight lang="text">

Недолік такого підходу — залежність від робочого місця, версій платформи, прав користувача і ручного запуску.; COM-з’єднання функціонує від імені користувача 1С, який вказаний у рядку підключення.; Після перенесення потрібно звірити:

Документ.Записать();

Погано:

COM-з’єднання використовують для:
<syntaxhighlight lang="powershell">
Do While Selection.Next()

 ↓

Замість нього частіше використовують:

Правильний підхід:

Справочник.Контрагенты КАК Контрагенты

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

- Для чого потрібне?;== Типові рядки підключення ==
// Логіка отримання залишків

COM-з’єднання і журналювання

  • залежність від шляху;
  • проблеми мережевого доступу;
  • блокування файлу;
  • пошкодження при збоях;
  • слабша масштабованість;
  • складніше багатокористувацьке використання.; Рядок.Сумма = 2400;

Схема:

Console.WriteLine(selection.Наименование);

</syntaxhighlight>

Зовнішні посилання

COM-з’єднання 1С — це технологія, яка надає можливість зовнішнім Windows-застосункам працювати з 1С через COM Automation.; Держспецзв’язку веде офіційно затверджений перелік забороненого до використання програмного забезпечення та комунікаційного обладнання, де згадуються продукти 1С/BAS, зокрема 1C:організація 8 і BAS ERP.; У деяких випадках потрібно зареєструвати COM-компонент платформи.;== Коли COM-з’єднання поганий варіант == COM-з’єднання додатково має змогу використовуватися для формування або читання XML.; # COM-інтеграція шукає документ за цим ID.; Саме через них часто працюють старі інтеграції, Excel-звіти, служби Windows, міграційні скрипти, обміни з сайтами й неочевидні бізнес-процеси.; Елемент COM-інтеграції

  1. Зовнішня платформа передає унікальний ID.; як ілюстрація:

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

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

  • CRM;
  • сайтом;
  • WMS;
  • MES;
  • банківськими системами;
  • Excel;
  • Access;
  • .NET-сервісами;
  • PowerShell-скриптами;
  • старими ERP;
  • міграційними утилітами.; # Якщо документ є собою — не створює новий.; ↓
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.складський облік КАК складський облік, ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков) КАК ТоварыНаСкладахОстатки";
"quantity": 10

Після актуалізація можуть змінитися: </syntaxhighlight>

</div>

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

* читати контрагентів;
* створювати контрагентів;
* шукати номенклатуру;
* оновлювати зовнішні ID;
* читати склади;
* створювати договори;
* оновлювати ціни;
* отримувати характеристики.;
; # Закрити бізнес-процес або звільнити COM-об’єкт.; # Розрядність платформи.; Контрагенты.Ссылка КАК Ссылка,

Писати напряму в регістри через зовнішню програму потрібно дуже обережно.; У реальному коді потрібно обробляти помилки, кодування, права, порожні значення і завершення COM-об’єктів.; # Розрядність зовнішньої програми.;== Коли COM-з’єднання доречне ==

  • читання об’єктів по одному;
  • багато звернень через COM-межу;
  • запит у циклі;
  • немає індексів для пошуку;
  • зовнішня програма обробляє великі таблиці не пакетно;
  • інформаційні дані витягуються з документів замість регістрів;
  • немає відбору по періоду.; "items": [
Рядок = Документ.Товары.Добавить();

== COM-з’єднання і міграція з 1С/BAS ==
== Санкції та ризики використання 1С/BAS в Україні ==

!; * інтеграційні функціональні можливості функціонує в Windows-середовищі;
* потрібен швидкий доступ до старої 1С;
* немає готового API;
* потрібно зробити міграційне вивантаження;
* потрібно отримати контрольні суми;
* є собою старий .NET або PowerShell-інструмент;
* потрібно тимчасово підтримати стару систему до міграції.; ConnectionString = "Srvr=""server1c"";Ref=""Accounting"";Usr=""Администратор"";Pwd=""password"";"

* які COM-інтеграції існують;
* де вони запускаються;
* під яким користувачем;
* який рядок підключення застосовується;
* де зберігаються паролі;
* які права має службовий користувач системи;
* які інформаційні дані читаються;
* які інформаційні дані записуються;
* чи є собою журнал;
* хто підтримує роботу інтеграцію;
* що буде, якщо інтеграційні функціональні можливості зупиниться.; Запит.УстановитьПараметр("ДатаОстатков", Соединение.ТекущаяДата());

* документи не проводяться;
* користувачі чекають;
* база функціонує повільно;
* виникають конфлікти транзакцій;
* інтеграційні функціональні можливості падає з помилкою.; * список усіх COM-інтеграцій;
* зовнішні програми, які їх використовують;
* користувачів 1С для підключення;
* рядки підключення;
* права;
* паролі й секрети;
* розклад запуску;
* які інформаційні дані читаються;
* які інформаційні дані записуються;
* external_id;
* журнали помилок;
* відповідальних;
* залежності від Excel, PowerShell, C#, служб Windows;
* залежності від версії платформи;
* бізнес-процеси, які інтеграційні функціональні можливості підтримує роботу.;== Варіанти заміни COM-з’єднання в K2 ERP ==
Через COM можна створювати або читати документи:
== COM-з’єднання і документи ==

<syntaxhighlight lang="text">

{{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С
}}

COM у такому випадку має змогу бути “мостом” між 1С і зовнішнім XML-обміном.;== COM-з’єднання і зовнішні системи ==

Через COM можна працювати з довідниками:

СУБД

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

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

$connector = New-Object -ComObject "V83.COMConnector" рішення для бізнесу: