Администрирование · 12 мин
Как перевести 1С на SQL: переход с файловой базы на клиент-серверный режим
Пошаговая инструкция по переводу 1С с файлового режима на клиент-серверный вариант с MS SQL или PostgreSQL: подготовка, выгрузка, настройка и проверка.
Перевод информационной базы 1С с файлового режима на SQL (клиент-серверный вариант) — стандартная задача, которая возникает, когда база вырастает до нескольких гигабайт, одновременно работают больше 5–10 пользователей, а проведение документов и построение отчётов начинает заметно тормозить. Клиент-серверный режим снимает ограничения файловой архитектуры: данные хранятся в СУБД (MS SQL Server, PostgreSQL, IBM Db2 или Oracle), а платформа 1С обращается к ним через сервер приложений, что обеспечивает параллельную работу, транзакционность и нормальное резервное копирование.
Сама процедура технически несложная: база выгружается из файлового режима в файл .dt, на сервере создаётся пустая база данных в СУБД, новая информационная база регистрируется на сервере 1С, и в неё загружается выгрузка. Однако на практике успех зависит от подготовки: версий платформы, настроек СУБД, лицензий и тестирования до того, как пользователи начнут работать в новой базе.
Ниже разобраны условия, при которых переход оправдан, выбор СУБД, подготовительные шаги, сама процедура переноса, настройка после миграции, типичные ошибки и способы проверить результат.
Когда переход на SQL действительно нужен
Файловый режим 1С хранит всю базу в одном файле 1Cv8.1CD и использует механизм блокировок на уровне всего файла или его таблиц. Это нормально работает в небольших компаниях, но имеет жёсткие ограничения: при одновременной записи несколькими пользователями возникают конфликты блокировок, при размере базы в десятки гигабайт замедляются регламентные операции, а сам файл уязвим к повреждению при сбоях сети и питания.
Признаки того, что пора переходить на клиент-серверный режим: пользователи жалуются на ошибки «конфликт блокировок при выполнении транзакции»; проведение документов и закрытие месяца занимает часы; база не помещается в разумное время обслуживания; требуется разграничение прав на уровне СУБД и надёжное резервное копирование средствами SQL. Если база небольшая, пользователей мало и скорость устраивает — переход не даст ничего, кроме дополнительных затрат на сервер и лицензии.
Частые конфликты блокировок в файловом режиме — сигнал к переходу
Проверьте размер файла 1Cv8.1CD и длительность тестирования и исправления
Повторяющиеся ошибки транзакций и повреждения кэша указывают на предел файлового режима
Если нужны регламентные бэкапы средствами СУБД — файловый режим не подходит
Выбор СУБД и подготовка инфраструктуры
1С официально поддерживает несколько СУБД: Microsoft SQL Server, PostgreSQL (в том числе сборки Postgres Pro), IBM Db2 и Oracle Database. Для большинства внедрений выбор стоит между MS SQL Server и PostgreSQL. MS SQL Server исторически самый распространённый вариант в среде 1С, с большим количеством готовых инструкций и специалистов, но требует лицензий. PostgreSQL бесплатен, однако требует специальной сборки или корректной настройки под 1С и более внимательного тюнинга.
Архитектура клиент-серверного режима включает три компонента: сервер СУБД, сервер 1С:Предприятия (кластер) и клиентские приложения. Для небольших внедрений сервер СУБД и сервер 1С допустимо размещать на одной машине, но при росте нагрузки их лучше разнести. Клиенты подключаются к кластеру 1С, а не напрямую к SQL.
Сравнение вариантов СУБД
Максимум готовых инструкций и специалистов, штатная поддержка 1С; ограничение — стоимость лицензий на сервер и клиентские доступы
Бесплатная база или недорогая поддержка; требует специальной сборки под 1С и более тщательной настройки параметров
Подходят для крупных организаций с существующей инфраструктурой этих вендоров; для типового перехода избыточны
Отдельно проверьте лицензионную составляющую: для клиент-серверного режима нужна лицензия на сервер 1С:Предприятия, а при числе пользователей выше определённого порога — соответствующие клиентские лицензии. Работа в клиент-серверном варианте без лицензии на сервер ограничена, поэтому лицензии приобретаются до начала миграции, а не после.
Подготовка перед переносом
Главное правило: перенос выполняется на копии, а рабочая файловая база продолжает функционировать до полной проверки новой. Начните с полной резервной копии — как минимум выгрузки .dt и копии файла 1Cv8.1CD на независимый носитель. Зафиксируйте точную версию платформы 1С и релиз конфигурации: на новом сервере должна быть установлена та же или совместимая версия платформы.
Перед выгрузкой желательно выполнить тестирование и исправление базы в конфигураторе (без сжатия и реструктуризации, если времени мало) — это снижает риск переноса логических ошибок в новую базу. Также завершите все сеансы пользователей: выгрузка .dt требует монопольного доступа к базе.
На стороне СУБД подготовьте: установленный и запущенный экземпляр SQL-сервера, учётную запись с правами на создание баз данных (для MS SQL обычно используют отдельную учётную запись с ролью, достаточной для создания и обслуживания баз), а также достаточное дисковое пространство — база в SQL обычно занимает заметно больше места, чем файл 1CD, плюс нужен запас под журнал транзакций и резервные копии.
Пошаговая процедура переноса
Сам перенос состоит из четырёх этапов: выгрузка, установка серверных компонентов, создание базы и загрузка. Ниже порядок действий для типового сценария.
- 1Сделайте резервную копию файловой базы и зафиксируйте версию платформы и конфигурации
- 2Завершите сеансы пользователей и в конфигураторе выполните «Администрирование → Выгрузить информационную базу» в файл .dt
- 3Установите на сервере СУБД и сервер 1С:Предприятия той же версии платформы, что и на клиентах
- 4Откройте консоль кластера серверов 1С или диалог добавления базы и создайте новую информационную базу в режиме «на сервере 1С:Предприятия», указав тип СУБД, имя сервера, имя базы данных и учётную запись
- 5При создании базы разрешите создание базы данных в СУБД — платформа создаст её автоматически с нужными параметрами
- 6Откройте новую пустую базу в конфигураторе и выполните «Администрирование → Загрузить информационную базу», выбрав файл .dt
- 7Дождитесь окончания загрузки и реструктуризации, затем запустите базу в режиме предприятия и проверьте данные
- 8Переключите пользователей на новую базу, обновив список баз на клиентах или в файле ibases.v8i
Ключевые параметры при создании базы на сервере 1С: тип СУБД (MSSQLServer / PostgreSQL и т.д.), имя сервера баз данных, имя создаваемой базы, пользователь и пароль для доступа к СУБД, а также параметры кластера (сервер 1С и порт, по умолчанию 1541). Опция «Создать базу данных в случае её отсутствия» избавляет от ручного создания базы средствами СУБД — платформа сделает это сама с корректными настройками collation.
Настройка SQL-базы после загрузки
Сразу после загрузки база работоспособна, но для стабильной работы нужны регламентные операции на стороне СУБД. Для MS SQL Server обычно настраивают: модель восстановления (для продуктивной базы — Full с регулярным бэкапом журнала, либо Simple, если журналы не нужны), план обслуживания с обновлением статистики и перестроением индексов, ограничение максимальной памяти сервера, чтобы СУБД не отбирала всю память у сервера 1С при совместном размещении.
Также проверьте настройки самой информационной базы в кластере 1С: параметры блокировок (управляемый режим блокировок данных — стандарт для современных конфигураций), расписание регламентных заданий и защищённое соединение при необходимости. Регламентные задания, которые в файловом режиме выполнялись на клиенте, в клиент-серверном режиме выполняются на сервере — убедитесь, что они включены и отрабатывают.
Частая ситуация: после перехода база работает медленнее, чем в файловом режиме. Причина почти всегда не в самом SQL, а в отсутствии обновления статистики и в параметрах по умолчанию. Запустите обновление статистики по всем таблицам сразу после загрузки и настройте регулярное обслуживание — в большинстве случаев это снимает вопрос производительности без тюнинга запросов.
Проверка результата и переключение пользователей
Проверку делайте в два этапа. Сначала техническая: база открывается в конфигураторе и предприятии, справочники и документы на месте, итоги по отчётам (оборотно-сальдовая ведомость, остатки склада) совпадают с данными старой базы на момент выгрузки. Затем пользовательская: несколько ключевых сотрудников выполняют типовые операции — ввод документа, проведение, построение отчёта, обмен данными, печать.
Как проверить результат
ОСВ и остатки совпадают со старой базой на дату выгрузки
Расхождения в суммах или количестве — загрузка прошла с ошибками
Задания выполняются по расписанию на сервере без ошибок в журнале
Задания не стартуют или завершаются ошибкой в консоли кластера
Несколько пользователей проводят документы без конфликтов блокировок
Ошибки блокировок сохраняются — проверяйте режим управляемых блокировок
Бэкап средствами СУБД создаётся и тестово восстанавливается
Копия не создаётся или не восстанавливается — схему бэкапа нужно перенастроить
Переключение пользователей сводится к замене пути к базе в списке информационных баз: вместо файлового пути указывается сервер 1С и имя базы в кластере. Старую файловую базу переведите в режим «только чтение» или закройте к ней доступ, чтобы никто не продолжил вносить данные параллельно — расхождения между двумя работающими базами устранять крайне трудоёмко.
Типичные ошибки и ограничения
Важно понимать ограничения метода: выгрузка в .dt не переносит настройки пользователей в списке баз (их придётся задать заново), не переносит данные, хранящиеся вне базы (например, присоединенные файлы, если они настроены на хранение в томах на диске — их нужно переносить отдельно и перенастраивать тома), и не меняет саму конфигурацию. Если конфигурация доработана под файловый режим с использованием специфических механизмов, её работу в клиент-серверном варианте нужно тестировать отдельно.
Ещё одна граница: прямой доступ к таблицам SQL средствами запросов в обход платформы 1С не поддерживается и не документирован — структура таблиц служебная и может меняться. Все операции с данными выполняются через платформу, а СУБД используется для хранения, бэкапа и обслуживания.
Что важно запомнить
Переход 1С на SQL — это выгрузка .dt из файловой базы, создание базы на сервере 1С с подключением к СУБД и загрузка .dt в неё. Успех определяется подготовкой: резервная копия, совпадающие версии платформы, лицензия на сервер, обслуживание СУБД после загрузки и проверка итогов до отключения старой базы.
Частые вопросы
Можно ли перевести базу на SQL без выгрузки в .dt?
Нет, штатный механизм — именно выгрузка и загрузка через файл .dt. Таблицы 1С в СУБД имеют служебную структуру, и прямое копирование данных между файловым форматом и SQL невозможно. Сторонние утилиты прямого переноса существуют, но не поддерживаются вендором и используются на свой риск.
Сколько времени занимает переход?
Зависит от размера базы и оборудования: небольшая база переносится за пару часов, база в десятки гигабайт может загружаться из .dt большую часть суток. Планируйте переход на выходные и заранее измерьте длительность на тестовом прогоне.
Нужна ли отдельная лицензия для работы с SQL?
Да, для клиент-серверного режима требуется лицензия на сервер 1С:Предприятия плюс клиентские лицензии на пользователей. Для MS SQL Server дополнительно нужны лицензии самой СУБД; PostgreSQL в этом смысле бесплатен.
Что делать, если после перехода база тормозит?
Сначала обновите статистику и перестройте индексы в СУБД, проверьте, что режим блокировок — управляемый, и что серверу хватает оперативной памяти. Если проблема остаётся, анализируйте конкретные медленные операции через технологический журнал и план запросов — типовые причины это нехватка индексов под доработанные отчёты и неоптимальные запросы в доработках конфигурации.
Можно ли вернуться обратно в файловый режим?
Да, процедура обратима: из клиент-серверной базы точно так же делается выгрузка в .dt, которая загружается в новую файловую базу. Однако если база выросла за время работы на SQL, файловый режим может оказаться для неё уже слишком тесным.
Перенесутся ли присоединенные файлы и картинки?
Если файлы хранятся внутри информационной базы — да, они переносятся вместе с .dt. Если настроено хранение в томах на диске, сами файлы остаются в томах: нужно перенести каталоги томов на новый сервер и проверить пути в настройках хранения файлов.