Как организовать подключение из 1С к MS SQL без использования COM-объектов?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Переход на Linux и стремление к повышению стабильности систем заставляют разработчиков искать альтернативы стандартному COM-соединению (ADODB), которое привязано к архитектуре Windows. Давайте разберем, какие существуют штатные и архитектурные решения для связи 1С с MS SQL в современных реалиях.

Использование внешних источников данных (ВИД)

Одним из самых надежных и штатных способов работы с внешними базами данных без привлечения COM являются Внешние источники данных. Это объекты конфигурации, которые позволяют платформе взаимодействовать с MS SQL как с «родным» источником.

  1. Настройка на уровне ОС: Для работы ВИД в среде Linux необходимо установить системный ODBC-драйвер Microsoft ODBC Driver for SQL Server. Платформа 1С использует этот слой абстракции для выполнения запросов.
  2. Интеграция в метаданные: Вы создаете объект Внешний источник данных в дереве конфигурации, описываете структуру таблиц, которые вам необходимы, и работаете с ними через привычный Запрос.
  3. Преимущество: Это полностью поддерживаемый механизм платформы 1С:Предприятие, который обеспечивает работу с MS SQL, PostgreSQL и другими СУБД. Это избавляет от необходимости писать сложный код для обработки соединений вручную.

Архитектурный подход: Микросервисная прослойка (REST API)

Если проект подразумевает высокую нагрузку или необходимость сложной бизнес-логики при работе с данными, лучшим решением будет вынос работы с MS SQL в отдельный микросервис. Рассмотрим, почему это эффективно:

Вместо того чтобы заставлять 1С напрямую подключаться к SQL-серверу, мы создаем небольшой REST API сервис на C# (ASP.NET Core), Node.js или Go. При таком подходе взаимодействие строится по следующей схеме:

  1. 1С отправляет запрос: 1С формирует HTTP-запрос (обычно POST с JSON-телом) к нашему микросервису.
  2. Сервис обрабатывает логику: Микросервис, имея полноценные драйверы для работы с MS SQL, выполняет запрос, фильтрует данные и возвращает результат в формате JSON.
  3. Безопасность: Мы избегаем прямой возможности «коверкать» базу со стороны 1С, так как все операции строго ограничены методами API. Это снимает риски SQL-инъекций и неконтролируемого доступа.

Альтернативные методы интеграции

Если использование ВИД или создание API по каким-то причинам невозможно, проанализируем менее распространенные способы:

Внешние компоненты (Native API)

Существуют готовые решения, написанные по технологии Native API. Они представляют собой динамические библиотеки (.so для Linux или .dll для Windows), которые позволяют вызывать методы прямо из 1С, минуя COM. Это дает высокую производительность, так как работа идет «ближе к железу», однако требует поиска или разработки качественной внешней компоненты.

Системная утилита SQLCMD

Для простейших задач обмена данными можно использовать системную утилиту sqlcmd. Вы можете вызывать её из 1С с помощью функции ЗапуститьПриложение() или КомандаСистемы():


Команда = \"sqlcmd -S ИмяСервера -U Логин -P Пароль -d ИмяБазы -Q \"\"SELECT * FROM Таблица\"\" -o C:\\temp\\result.txt\";
ЗапуститьПриложение(Команда);
// После выполнения разбираем текстовый файл result.txt средствами 1С

Важное примечание: Этот метод является «грязным» и не рекомендуется для высоконагруженных систем или процессов, требующих мгновенной обработки данных. Он хорошо подходит для разовых выгрузок или фоновых заданий, где допустима небольшая задержка.

Подведем итоги

При переходе на Linux и отказе от COM-объектов, мы рекомендуем двигаться в сторону Внешних источников данных как самого «чистого» способа платформы. Если же проект требует гибкости, безопасности и масштабируемости, лучшим вложением сил станет создание своего REST API сервиса, который будет «посредником» между 1С и MS SQL. Это избавит вас от проблем с драйверами, зависимостей от Windows и обеспечит надежный контроль доступа к данным.

← На главную