Переход на Linux и стремление к повышению стабильности систем заставляют разработчиков искать альтернативы стандартному COM-соединению (ADODB), которое привязано к архитектуре Windows. Давайте разберем, какие существуют штатные и архитектурные решения для связи 1С с MS SQL в современных реалиях.
Одним из самых надежных и штатных способов работы с внешними базами данных без привлечения COM являются Внешние источники данных. Это объекты конфигурации, которые позволяют платформе взаимодействовать с MS SQL как с «родным» источником.
ВИД в среде Linux необходимо установить системный ODBC-драйвер Microsoft ODBC Driver for SQL Server. Платформа 1С использует этот слой абстракции для выполнения запросов.Внешний источник данных в дереве конфигурации, описываете структуру таблиц, которые вам необходимы, и работаете с ними через привычный Запрос.1С:Предприятие, который обеспечивает работу с MS SQL, PostgreSQL и другими СУБД. Это избавляет от необходимости писать сложный код для обработки соединений вручную.Если проект подразумевает высокую нагрузку или необходимость сложной бизнес-логики при работе с данными, лучшим решением будет вынос работы с MS SQL в отдельный микросервис. Рассмотрим, почему это эффективно:
Вместо того чтобы заставлять 1С напрямую подключаться к SQL-серверу, мы создаем небольшой REST API сервис на C# (ASP.NET Core), Node.js или Go. При таком подходе взаимодействие строится по следующей схеме:
HTTP-запрос (обычно POST с JSON-телом) к нашему микросервису.MS SQL, выполняет запрос, фильтрует данные и возвращает результат в формате JSON.API. Это снимает риски SQL-инъекций и неконтролируемого доступа.Если использование ВИД или создание API по каким-то причинам невозможно, проанализируем менее распространенные способы:
Существуют готовые решения, написанные по технологии Native API. Они представляют собой динамические библиотеки (.so для Linux или .dll для Windows), которые позволяют вызывать методы прямо из 1С, минуя COM. Это дает высокую производительность, так как работа идет «ближе к железу», однако требует поиска или разработки качественной внешней компоненты.
Для простейших задач обмена данными можно использовать системную утилиту 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 и обеспечит надежный контроль доступа к данным.