Интеграция Microsoft SQL Server с платформой 1С:Предприятие — ключевой шаг для предприятий, стремящихся к централизации данных, повышению производительности и расширению аналитических возможностей. Эта связка позволяет использовать мощные инструменты SQL для обработки больших объемов информации, одновременно сохраняя привычный интерфейс для бизнес-пользователей. Однако процесс настройки требует внимания к деталям: от выбора правильной версии SQL Server до конфигурирования драйверов и оптимизации запросов.

Многие администраторы сталкиваются с типичными проблемами: ошибки подключения, медленная работа при большом количестве пользователей или несовместимость версий. В этой статье мы разберём все этапы — от подготовки серверов до тонкой настройки взаимодействия, — а также рассмотрим альтернативные способы обмена данными между системами. Особое внимание уделим режиму совместимости 1С с SQL Server 2022, который может существенно повлиять на производительность при работе с крупными базами.

Если ваша компания использует 1С:ERP или 1С:Управление холдингом, интеграция с SQL Server становится не просто рекомендацией, а необходимостью для поддержки высоких нагрузок. Далее вы найдёте пошаговые инструкции, примеры кода и советы по устранению распространённых ошибок — от Ошибка 80004005 до проблем с кодировкой.

📊 Какой тип интеграции SQL Server и 1С вам интересен?
Прямое подключение через ODBC
Обмен через внешние обработки
Использование ETL-инструментов
Другое

1. Выбор версии SQL Server для работы с 1С

Не все версии Microsoft SQL Server одинаково совместимы с 1С:Предприятие 8.3. Officially supported versions на 2026 год включают SQL Server 2016–2022, но есть нюансы. Например, не поддерживает SQL Server Express для баз с более чем 20 пользователями из-за ограничений по ресурсам. Для крупных предприятий рекомендуется Standard или Enterprise редакции.

При выборе версии учитывайте:

  • 🔹 SQL Server 2019/2022 — оптимальный выбор для новых проектов. Поддерживают UTF-8 и имеют улучшенные механизмы резервного копирования.
  • 🔹 SQL Server 2016–2017 — подходят для legacy-систем, но требуют установки последних Service Pack.
  • 🔹 SQL Server 2014 и старше — не рекомендуются из-за отсутствия поддержки и уязвимостей безопасности.

Важно: может работать с SQL Server в режиме совместимости более старой версии (например, SQL Server 2022 (160) в режиме 2019 (150)). Это полезно при миграции, но может снизить производительность на 10–15%.

⚠️ Внимание: Перед установкой проверьте лицензионные требования Microsoft. Некоторые функции (например, Always On Availability Groups) доступны только в Enterprise-версии.
Версия SQL Server Поддержка 1С Макс. размер БД Ограничение по ОЗУ
SQL Server 2022 Полная (с последними релизами 1С) 524 ПБ 128 ГБ (Standard), неограничено (Enterprise)
SQL Server 2019 Полная 524 ПБ 128 ГБ (Standard)
SQL Server 2017 Частичная (требуется SP3+) 524 ПБ 128 ГБ
SQL Server Express Ограниченная (до 20 пользователей) 10 ГБ 1.4 ГБ

2. Подготовка сервера перед подключением

Перед настройкой интеграции необходимо выполнить несколько критичных шагов на стороне SQL Server:

  1. Установите ODBC Driver for SQL Server (версия должна соответствовать разрядности вашей ОС и 1С). Скачать его можно с официального сайта Microsoft.
  2. Создайте пользователя базы данных с правами db_owner или db_datareader/db_datawriter (в зависимости от сценария использования).
  3. Настройте SQL Server Configuration Manager: включите протоколы TCP/IP и Named Pipes, укажите статический порт (по умолчанию 1433).

Для также потребуется:

  • 🔧 Установить платформу 1С:Предприятие 8.3 версии не ниже 8.3.20 (для полной поддержки SQL Server 2022).
  • 🔧 Подключить компоненту 1C:Enterprise 8. Data Separation Server (если планируется работа с большими базами).
  • 🔧 Настроить права доступа к папке с базой данных (например, C:\Program Files\1cv8\srvinfo).

Установить ODBC Driver|Создать пользователя БД с правами db_owner|Включить протокол TCP/IP в SQL Server Configuration Manager|Настроить брандмауэр для порта 1433|Обновить 1С до версии 8.3.20+-->

Особое внимание уделите настройке collation (порядка сортировки) базы данных. Для русскоязычных систем рекомендуется использовать Cyrillic_General_CI_AS. Несоответствие collation между и SQL Server может привести к ошибкам при сортировке или поиске данных.

⚠️ Внимание: Если вы используете SQL Server на виртуальной машине, убедитесь, что выделено достаточно ресурсов (минимум 4 ядра CPU и 8 ГБ ОЗУ для базы среднего размера). Недостаток ресурсов проявляется в виде ошибок Timeout expired.

3. Настройка ODBC-подключения

Основной способ связать и SQL Server — через ODBC (Open Database Connectivity). Инструкция для Windows Server 2019/2022:

1. Откройте Панель управления → Администрирование → Источники данных ODBC (64-разрядная).

2. Перейдите на вкладку Системный DSN и нажмите Добавить.

3. Выберите драйвер ODBC Driver 17 for SQL Server (или актуальную версию).

4. Заполните поля:

- Имя источника данных: произвольное (например, 1C_SQL_Connection)

- Описание: укажите назначение (опционально)

- Сервер: имя или IP-адрес сервера SQL Server

- Протокол: TCP/IP

- Порт: 1433 (если не изменялся)

- База данных: имя вашей базы (например, Base1C)

- Проверка подлинности: SQL Server Authentication (указать логин/пароль) или Windows Authentication

После сохранения источника проверьте подключение кнопкой Test Data Source. Если тест прошёл успешно, можно переходить к настройке .

Что делать если тест ODBC завершается ошибкой "Login failed for user"

Проверьте:

1. Правильность логина/пароля (учтите регистр!).

2. Настройки аутентификации в SQL Server (разрешен ли SQL Authentication).

3. Наличие пользователя в базе данных (не только на уровне сервера!).

4. Отсутствие блокировки аккаунта (проверьте в SQL Server Management Studio → Security → Logins).

В 1С:Предприятие подключение к SQL Server через ODBC настраивается при создании новой информационной базы:

  1. Запустите 1cv8.exe с правами администратора.
  2. Выберите Добавить → Создание новой информационной базы.
  3. На этапе выбора типа базы укажите Сервер 1С:Предприятия (для клиент-серверного варианта) или Файловый (для локального тестирования).
  4. В параметрах подключения выберите созданный ODBC DSN.

4. Альтернативные способы интеграции

Помимо ODBC, существуют другие методы обмена данными между и SQL Server:

  • 🔄 Внешние обработки: Использование COM-объектов или HTTP-сервисов для выгрузки/загрузки данных. Подходит для периодического обмена.
  • 🔄 ETL-инструменты: SQL Server Integration Services (SSIS) или 1C:EDT для сложных трансформаций данных.
  • 🔄 Прямой доступ через ADO: Написание скриптов на с использованием объекта ADODB.Connection.
  • 🔄 Репликация данных: Настройка SQL Server Replication для синхронизации выбранных таблиц.

Пример кода для подключения к SQL Server из через ADO:


Подключение = Новый COMОбъект("ADODB.Connection");

Подключение.ConnectionString = "Provider=SQLOLEDB;Data Source=myServer;Initial Catalog=myDB;User ID=myUser;Password=myPass;";

Подключение.Open();

Запрос = Новый COMОбъект("ADODB.Recordset");

Запрос.Open("SELECT TOP 10 * FROM Справочник_Номенклатура", Подключение);

// Обработка данных

Пока Не Запрос.EOF Цикл

Сообщить(Запрос.Fields("Наименование").Value);

Запрос.MoveNext();

КонецЦикла;

Запрос.Close();

Подключение.Close();

Преимущество ADO — гибкость, но такой подход требует знания VBScript и осторожности при работе с транзакциями. Для массовых операций лучше использовать внешние обработки или SSIS.

💡

Если вам нужно регулярно выгружать данные из 1С в SQL Server, рассмотрите создание stored procedure на стороне SQL. Это ускорит обработку и снизит нагрузку на 1С.

5. Оптимизация производительности

После успешного подключения часто возникают проблемы с скоростью работы. Основные причины и решения:

  • 🐢 Медленные запросы: Используйте SQL Server Profiler для анализа долгих операций. Часто виноваты неоптимизированные запросы от (например, выборка всех полей вместо конкретных).
  • 🐢 Блокировки: Настройте уровень изоляции транзакций (READ COMMITTED SNAPSHOT) или используйте подсказки WITH (NOLOCK) для отчётных запросов.
  • 🐢 Нехватка индексов: Создайте индексы для полей, часто используемых в WHERE или JOIN. В это обычно поля Ссылка, Дата, Номер.

Пример создания индекса для таблицы Документ_РеализацияТоваровУслуг:


CREATE NONCLUSTERED INDEX [IX_Документ_РеализацияТоваровУслуг_Дата]

ON [dbo].[Документ_РеализацияТоваровУслуг] ([Дата])

INCLUDE ([Номер], [Контрагент_Key]);

Для мониторинга нагрузки используйте системные представления:


-- Топ 10 самых ресурсоёмких запросов

SELECT TOP 10

qs.total_logical_reads,

qs.execution_count,

qs.total_logical_reads/qs.execution_count AS avg_logical_reads,

SUBSTRING(qt.text, (qs.statement_start_offset/2)+1,

((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.text)

ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) + 1) AS query_text

FROM sys.dm_exec_query_stats AS qs

CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt

ORDER BY qs.total_logical_reads DESC;

⚠️ Внимание: Избегайте использования SELECT * в запросах из 1С. Явное перечисление полей (SELECT Поле1, Поле2) сокращает объём передаваемых данных и ускоряет выполнение.

6. Типичные ошибки и их решение

При интеграции и SQL Server пользователи сталкиваются с характерными ошибками. Рассмотрим самые распространённые:

Код ошибки Описание Решение
80004005 Ошибка подключения к базе данных Проверьте настройки ODBC, права пользователя, доступность сервера по сети.
0x80040E14 Синтаксическая ошибка в SQL-запросе Исправьте запрос в коде 1С или внешней обработке. Часто проблема в кавычках или именах полей.
4060 Не найдена база данных Убедитесь, что база существует и имя указано верно (с учётом регистра!).
18456 Ошибка аутентификации Проверьте логин/пароль, режим аутентификации (SQL или Windows).
1205 Таймаут блокировки Увеличьте lock_timeout или оптимизируйте транзакции.

Если ошибка не устраняется, включите логирование на стороне SQL Server:


-- Включение трассировки ошибок

DBCC TRACEON(3605, -1); -- Перенаправление вывода в errorlog

DBCC TRACEON(1200, 1204, 1222, -1); -- Логирование блокировок

Логи находятся в SQL Server Management Studio → Management → SQL Server Logs.

💡

90% ошибок подключения связаны с неверными настройками ODBC или недостаточными правами пользователя. Всегда начинайте диагностику с проверки этих параметров.

7. Безопасность интеграции

При связывании и SQL Server критично обеспечить защиту данных:

  • 🔒 Используйте Windows Authentication вместо SQL Authentication, где это возможно (меньше риск утечки credentials).
  • 🔒 Ограничьте права пользователя в SQL Server: достаточно db_datareader и db_datawriter для большинства сценариев.
  • 🔒 Настройте SQL Server Audit для отслеживания подозрительных действий (например, массовых DELETE).
  • 🔒 Шифруйте соединение с помощью SSL/TLS (настройка в SQL Server Configuration Manager).

Пример настройки аудита для отслеживания изменений в критичных таблицах:


-- Создание спецификации аудита

CREATE SERVER AUDIT SQL_Audit

TO FILE (FILEPATH = 'C:\SQL_Audit\')

WITH (QUEUE_DELAY = 1000, ON_FAILURE = CONTINUE);

-- Создание спецификации для базы данных

CREATE DATABASE AUDIT SPECIFICATION Track_1C_Changes

FOR SERVER AUDIT SQL_Audit

ADD (UPDATE, DELETE ON OBJECT::dbo.Документ_ПоступлениеТоваров BY public),

ADD (INSERT ON OBJECT::dbo.Справочник_Контрагенты BY public);

Для также рекомендуется:

- Отключить возможность изменения структуры базы данных через конфигуратор (права доступа).

- Использовать Роли доступа для ограничения функционала пользователей.

- Регулярно обновлять платформу (уязвимости часто исправляются в новых релизах).

8. Автоматизация обмена данными

Для регулярного обмена данными между системами можно настроить автоматические задачи. Варианты реализации:

  • Планировщик задач Windows: Запуск внешних обработок или скриптов по расписанию.
  • SQL Server Agent: Выполнение SSIS-пакетов или T-SQL скриптов в заданное время.
  • 1C:Enterprise Script: Использование встроенного планировщика для вызова HTTP-сервисов.

Пример создания задачи в SQL Server Agent для ночной выгрузки данных:

  1. Откройте SQL Server Management Studio → SQL Server Agent → Jobs.
  2. Создайте новую задачу (New Job).
  3. Добавьте шаг (Steps) с типом Transact-SQL script (T-SQL):

-- Пример скрипта для выгрузки данных в промежуточную таблицу

INSERT INTO dbo.Staging_1C_Orders

SELECT

t.Ссылка AS OrderID,

t.Дата AS OrderDate,

t.Контрагент_Key AS CustomerID,

td.Номенклатура_Key AS ProductID,

td.Количество AS Quantity

FROM dbo.Документ_РеализацияТоваровУслуг t

JOIN dbo.Документ_РеализацияТоваровУслуг_Товары t ON t.Ссылка = td.Ссылка

WHERE t.ПомеченНаУдаление = 0 AND t.Дата > DATEADD(day, -1, GETDATE());

Для обратной загрузки в можно использовать COM-объект или HTTP-сервис. Пример HTTP-вызова из 1С:


АдресСервиса = "http://sql-server/reports/load_orders";

HTTPСоединение = Новый HTTPСоединение(АдресСервиса);

HTTPЗапрос = Новый HTTPЗапрос("/api/load");

HTTPЗапрос.УстановитьТелоИзСтроки(JSONЗапись(ДанныеДляЗагрузки));

Ответ = HTTPСоединение.ВыполнитьЗапрос(HTTPЗапрос);

💡

Для отладки автоматических задач используйте логирование в файлы или таблицы БД. Это поможет быстро найти причину сбоя, если задача не выполнилась.

FAQ: Частые вопросы по интеграции SQL Server и 1С

Можно ли подключить 1С к SQL Server, установленному на Linux?

Да, начиная с SQL Server 2017, возможна установка на Linux (Ubuntu, RHEL, SUSE). Для подключения из потребуется:

  1. Установить ODBC Driver for SQL Server на машине с .
  2. Настроить ODBC DSN с указанием IP-адреса Linux-сервера.
  3. Убедиться, что порт 1433 открыт в фаерволле (ufw allow 1433/tcp).

Производительность на Linux может быть выше за счёт оптимизации ядра, но официальная поддержка ограничена.

Как перенести базу 1С с файлового варианта на SQL Server?

Процедура переноса:

  1. Создайте пустую базу данных на SQL Server с collation Cyrillic_General_CI_AS.
  2. В конфигураторе выберите Администрирование → Выгрузить информационную базу (файл .dt).
  3. Создайте новую базу в с типом Сервер 1С:Предприятия и укажите подключение к SQL Server.
  4. Загрузите данные через Администрирование → Загрузить информационную базу.

Для больших баз (>50 ГБ) рекомендуется использовать утилиту chdbfl.exe (из комплекта ).

Почему после обновления SQL Server перестала работать 1С?

Частые причины:

  • Изменился уровень совместимости базы данных (проверьте в Свойства БД → Совместимость).
  • Обновился ODBC-драйвер, но не обновлена платформа .
  • Отключены протоколы TCP/IP или Named Pipes в SQL Server Configuration Manager.

Решение: верните уровень совместимости к предыдущей версии или обновите до актуального релиза.

Как ускорить работу 1С с SQL Server при большом количестве пользователей?

Рекомендации:

  • Разделите базу на кластер (основная база + вынесенные архивные данные).
  • Используйте индексированные представления для часто запрашиваемых отчётов.
  • Настройте пулы соединений в ODBC (параметр Pooling=Yes).
  • Ограничьте количество одновременно открытых транзакций (параметр MAXDOP в SQL Server).

Для 100+ пользователей рассмотрите переход на SQL Server Enterprise с функцией Read-Only Routing.

Можно ли использовать SQL Server для аналитики данных из 1С?

Да, это одно из ключевых преимуществ интеграции. Вы можете:

  • Создавать OLAP-кубы в SQL Server Analysis Services (SSAS).
  • Использовать Power BI для визуализации данных прямо из SQL Server.
  • Настраивать автоматические отчёты через SQL Server Reporting Services (SSRS).

Пример запроса для анализа продаж по регионам:


SELECT

r.Наименование AS Регион,

SUM(td.Сумма) AS ОбщаяВыручка,

COUNT(DISTINCT t.Контрагент_Key) AS КоличествоКлиентов

FROM dbo.Документ_РеализацияТоваровУслуг t

JOIN dbo.Документ_РеализацияТоваровУслуг_Товары td ON t.Ссылка = td.Ссылка

JOIN dbo.Справочник_Контрагенты c ON t.Контрагент_Key = c.Ссылка

JOIN dbo.Справочник_Регионы r ON c.Регион_Key = r.Ссылка

WHERE t.Дата BETWEEN '2026-01-01' AND '2026-12-31'

GROUP BY r.Наименование

ORDER BY ОбщаяВыручка DESC;