К статье
Практический материал

Администрирование · 11 мин

1С и SQL: что это такое и как они работают вместе

Что такое SQL в 1С, чем отличается файловый и клиент-серверный режим, как платформа хранит данные в MS SQL Server и когда нужен прямой доступ к базе.

Запрос «1С SQL что такое» обычно означает одно из двух: либо человек хочет понять, как программа 1С хранит свои данные в базе SQL-сервера, либо ему нужно разобраться, как из 1С обращаться к базе напрямую запросами. Оба смысла связаны с одним фундаментом — платформа 1С:Предприятие умеет работать в клиент-серверном режиме, где данные хранятся не в файле, а в системе управления базами данных (СУБД).

SQL (Structured Query Language) — это язык структурированных запросов, на котором «разговаривают» с реляционными базами данных: читают, добавляют, изменяют и удаляют записи. 1С сама по себе SQL-запросы в явном виде почти не использует — вместо этого у платформы есть собственный язык запросов, похожий на SQL по синтаксису, но работающий с объектами конфигурации: документами, справочниками, регистрами.

Понимание связки «1С + SQL» важно администраторам, разработчикам и внедренцам: от выбора режима работы зависят производительность, надёжность хранения, возможности резервного копирования и масштабируемость системы. Ниже разберём, как устроено хранение данных, чем отличаются режимы работы и когда прямой доступ к SQL-базе оправдан, а когда опасен.

Как 1С хранит данные: файловый и клиент-серверный режимы

Платформа 1С:Предприятие поддерживает два принципиально разных способа хранения информационной базы. В файловом режиме вся база — это один файл 1Cv8.1CD на диске или в сетевой папке. Платформа сама читает и пишет в него, никакой отдельной СУБД не требуется. Такой вариант прост в установке и подходит для небольших компаний с несколькими пользователями.

В клиент-серверном режиме данные размещаются в полноценной СУБД, а между пользователями и базой встаёт сервер 1С:Предприятия. Платформа сама формирует SQL-запросы к СУБД, создаёт таблицы, индексы и управляет транзакциями. Администратор видит в SQL Server десятки таблиц с техническими именами вроде _Document123 или _Reference45 — это и есть объекты конфигурации в физическом представлении.

Сравнение вариантов

Файловый режим

Подходит для 1–10 пользователей, не требует отдельного сервера и СУБД. Ограничение: снижение производительности при росте базы и числа пользователей, блокировки при одновременной записи.

Клиент-серверный режим (SQL)

Подходит для десятков и сотен пользователей, больших объёмов данных, регламентных операций. Требует лицензии на сервер 1С и СУБД, а также квалифицированного администрирования.

Какие СУБД поддерживает платформа 1С

Платформа 1С:Предприятие работает с несколькими системами управления базами данных. Наиболее распространён вариант Microsoft SQL Server — он исторически стал стандартом де-факто для коммерческих внедрений в Windows-инфраструктуре. Также поддерживаются PostgreSQL (включая адаптированные сборки), IBM DB2 и Oracle Database.

Выбор СУБД влияет на стоимость владения и требования к администрированию. PostgreSQL позволяет снизить затраты на лицензии, но требует специальных сборок и внимательной настройки. MS SQL Server проще в сопровождении для типовых сценариев, но лицензии на него и на сервер 1С составляют заметную часть бюджета. Конкретные поддерживаемые версии СУБД зависят от версии платформы — их нужно сверять с документацией к вашему релизу.

Чем язык запросов 1С отличается от SQL

Внутри конфигурации разработчик пишет запросы на встроенном языке запросов 1С. Внешне он похож на SQL: там есть ВЫБРАТЬ, ИЗ, ГДЕ, СГРУППИРОВАТЬ ПО — прямые аналоги SELECT, FROM, WHERE, GROUP BY. Но оперирует он не физическими таблицами, а логическими объектами: Справочник.Номенклатура, Документ.РеализацияТоваровУслуг, РегистрНакопления.ОстаткиТоваров.

Когда запрос выполняется, платформа транслирует его в SQL-код конкретной СУБД, подставляя реальные имена таблиц и полей, добавляя служебные условия (например, отбор по разделителям данных). Разработчик не управляет этим процессом напрямую, но может влиять на производительность: правильно использовать индексы, виртуальные таблицы регистров с параметрами, избегать соединений с вложенными запросами без необходимости.

bsl
ВЫБРАТЬ
	Товары.Ссылка КАК Товар,
	Товары.Код КАК Код
ИЗ
	Справочник.Номенклатура КАК Товары
ГДЕ
	НЕ Товары.ПометкаУдаления

Ключевое отличие в безопасности и целостности: язык запросов 1С позволяет только читать данные. Изменение выполняется через объектную модель — методы Записать(), Провести(), которые выполняют бизнес-логику, контроль прав и проверки заполнения. Прямой UPDATE в SQL обходит все эти механизмы.

Как посмотреть, какие SQL-запросы формирует платформа

Для диагностики производительности полезно видеть, во что превращается запрос 1С на стороне СУБД. В MS SQL Server для этого используется SQL Server Profiler или Extended Events — инструменты трассировки, показывающие реальные запросы, их длительность и планы выполнения. В PostgreSQL аналогичную роль играют логи медленных запросов и расширение pg_stat_statements.

Со стороны 1С есть технологический журнал — механизм логирования событий платформы. Включив события DBMSSQL и EXCP, можно увидеть тексты SQL-запросов с привязкой к контексту кода конфигурации, который их породил. Это основной способ найти «тяжёлый» запрос: сначала фиксируется проблемный SQL, затем по контексту определяется место в коде.

Как найти медленный запрос
  1. 1
    Включите технологический журнал на сервере 1С с событиями DBMSSQL и SDBL с фильтром по длительности
  2. 2
    Воспроизведите проблемную операцию в пользовательском режиме
  3. 3
    Найдите в журнале запросы с большой длительностью и определите вызывающий их код
  4. 4
    Проверьте план выполнения запроса в СУБД: используются ли индексы, нет ли полного сканирования таблиц
  5. 5
    Оптимизируйте запрос 1С: добавьте параметры виртуальных таблиц, уберите лишние соединения, проверьте индексацию реквизитов отбора

Можно ли работать с базой 1С напрямую через SQL

Технически база данных 1С в SQL Server — обычная база, к которой можно подключиться через Management Studio и выполнить любой запрос. Чтение данных напрямую — распространённая практика: так строят внешнюю отчётность, интеграции с BI-системами, выгрузки в хранилища данных. Для SELECT это относительно безопасно, если учитывать структуру хранения: итоги регистров лежат в отдельных таблицах, ссылочные поля хранятся как двоичные идентификаторы, а удалённые объекты помечаются флагом.

Изменение данных напрямую — категорически недопустимая практика в рабочей базе. Структура таблиц 1С не документирована как интерфейс: итоги регистров, служебные поля, версии данных и последовательности документов связаны между собой. Ручной UPDATE легко нарушает эту согласованность, и база начинает выдавать неверные остатки, ошибки при проведении или вовсе перестаёт открываться. Кроме того, прямая модификация лишает поддержки со стороны фирмы «1С» и партнёров.

Администрирование SQL-базы 1С: что важно настроить

Клиент-серверная 1С требует регулярного обслуживания со стороны СУБД. План обслуживания обычно включает обновление статистики, дефрагментацию или перестроение индексов, контроль роста журнала транзакций и регулярное резервное копирование средствами самой СУБД. Модель восстановления базы (simple или full) выбирают исходя из требований к точке восстановления: full даёт возможность отката на произвольный момент времени, но требует регламентного backup журнала.

Отдельная тема — блокировки. 1С использует управляемые блокировки данных, которые платформа выставляет через СУБД. При ошибках проектирования (например, запись больших наборов в одной транзакции или обращение к объектам в разном порядке) возникают взаимоблокировки и таймауты. Диагностируются они через технологический журнал (события TLOCK, TDEADLOCK) и динамические представления СУБД.

Типичные ошибки
01
Прямая правка данных в SQL в обход платформы — рассогласование итогов и повреждение базы
02
Отсутствие регламентного обновления статистики и обслуживания индексов — постепенная деградация производительности
03
Журнал транзакций без регламентного backup в модели full — переполнение диска и остановка базы
04
Резервное копирование только файлами СУБД без проверки восстановления — копия оказывается нерабочей в критический момент
05
Запуск тяжёлых отчётов напрямую по рабочей базе в часы пик — блокировки и жалобы пользователей

Как выбрать подход к работе с данными

Выбор между механизмами зависит от задачи. Для оперативной работы и изменения данных — только объектная модель и язык запросов 1С. Для аналитики и отчётности по большим объёмам разумно выгружать данные в отдельное хранилище или читать копию базы, не нагружая рабочую. Для интеграций предпочтительны штатные механизмы: HTTP-сервисы, веб-сервисы, планы обмена, форматы EnterpriseData.

Маршрут решения

Как выбрать действие

Нужно прочитать данные для отчёта или BI-системыИспользуйте прямой SELECT к копии базы или настройте выгрузку через штатные механизмы обмена
Нужно изменить данные в базеТолько через объектную модель 1С (обработка на встроенном языке) после резервного копирования
Запросы 1С работают медленноАнализируйте технологический журнал и планы запросов в СУБД, оптимизируйте запрос и индексы
Пользователей больше десятка и база растётПланируйте переход с файлового режима на клиент-серверный с выделенным сервером СУБД
Итог

Что важно запомнить

SQL в контексте 1С — это уровень хранения данных в клиент-серверном режиме. Разработчик работает со встроенным языком запросов, платформа сама транслирует его в SQL. Читать базу напрямую допустимо, изменять — никогда. Производительность обеспечивается корректными запросами, индексами и регламентным обслуживанием СУБД.

Частые вопросы

Какая СУБД лучше для 1С — MS SQL Server или PostgreSQL?

Однозначного ответа нет. MS SQL Server проще в типовом сопровождении и чаще встречается у специалистов по 1С, но требует лицензий. PostgreSQL снижает стоимость владения, однако требует адаптированной сборки и более внимательной настройки. Выбирайте исходя из бюджета, компетенций администраторов и требований к инфраструктуре.

Можно ли писать SQL-запросы прямо в коде 1С?

Штатно — нет: встроенный язык работает только с собственным языком запросов. Обходные пути через COM-объекты (ADO) или внешние компоненты технически возможны для подключения к сторонним базам, но это усложняет поддержку и создаёт риски безопасности. Для интеграций предпочтительнее HTTP-сервисы и планы обмена.

Как узнать, в каком режиме работает моя база 1С?

Откройте список информационных баз в окне запуска и посмотрите строку подключения: если указан путь к файлу — режим файловый, если указаны сервер 1С и имя базы — клиент-серверный. Ту же информацию показывает пункт «О программе» внутри самой базы.

Безопасно ли читать данные напрямую из SQL-базы 1С?

Чтение через SELECT относительно безопасно, но создаёт нагрузку и может вызывать блокировки, если запросы тяжёлые. Правильная практика — читать из копии базы, реплики или отдельного аналитического хранилища, а не из рабочей базы в часы активности пользователей.

Что делать, если данные в базе уже испортили прямым SQL-запросом?

Немедленно остановите изменения и оцените масштаб: если есть актуальная резервная копия до момента правки — восстановитесь из неё. Если копии нет, запустите тестирование и исправление информационной базы (chdbfl для файлового режима, проверка логической целостности через конфигуратор), но гарантии полного восстановления это не даёт. В сложных случаях потребуется специалист с опытом восстановления баз 1С.

Нужно ли знать SQL разработчику 1С?

Глубокое знание не обязательно, но понимание основ сильно помогает: планы запросов, индексы, блокировки, транзакции. Разработчик, который понимает, как его запрос 1С превращается в SQL, пишет более производительный код и быстрее диагностирует проблемы совместно с администратором СУБД.