Где 1С хранит данные: файловый режим, MS SQL и PostgreSQL на практике

· 10 мин

Содержание

СУБД в 1С — это система управления базами данных, в которой физически лежат все справочники, документы и регистры информационной базы. У 1С:Предприятия 8.3 два варианта: встроенный файловый движок (вся база — один файл 1Cv8.1CD) и клиент-серверный режим, где данные хранит внешняя СУБД — Microsoft SQL Server, PostgreSQL, IBM Db2 или Oracle Database.

Выбор режима не меняет конфигурацию: одна и та же «Бухгалтерия» работает и в файле, и на SQL-сервере. Меняются скорость при многих пользователях, способ резервного копирования, требования к лицензиям и к железу. Тема общая для платформы, а не для конкретной конфигурации.

Файловая база 1С: как она устроена

В файловом режиме отдельной СУБД нет. Её роль выполняет сама платформа: каждый клиент 1С открывает файл базы и читает его напрямую. Сервера 1С тоже нет.

Что лежит в каталоге файловой базы:

  • 📄 1Cv8.1CD — сама база: данные, конфигурация, история изменений;
  • 📄 1Cv8.cfl — служебный файл блокировок, существует, пока в базе есть сеансы;
  • 📁 1Cv8Log — журнал регистрации;
  • 📁 иногда 1Cv8FTxt — индекс полнотекстового поиска.

Строка подключения в списке баз выглядит так: File="D:\Bases\Buh";.

Плюсы файлового режима:

  • ✅ ставится за пять минут, достаточно платформы и папки;
  • ✅ не нужна лицензия на сервер 1С и на СУБД;
  • ✅ копию можно сделать простым копированием файла, когда в базе никого нет;
  • ✅ легко перенести на другой компьютер или ноутбук.

Минусы:

  • ⚠️ при работе нескольких человек по сети каждый клиент тянет данные через общую папку, и скорость падает;
  • ⚠️ блокировки грубее, чем в SQL: при проведении тяжёлого документа другие пользователи ждут;
  • ⚠️ обрыв сети или сбой питания во время записи может повредить файл;
  • ⚠️ тяжёлые отчёты и закрытие месяца на большой базе идут заметно дольше.

Жёсткого лимита на число пользователей у файлового режима нет. На практике он комфортен для одного–пяти человек и терпим примерно до десяти при хорошей сети. Дальше начинаются ожидания на блокировках.

Если к файловой базе подключаются по сети, держите её на компьютере с SSD и добавьте папку базы в исключения антивируса. Антивирус, проверяющий 1Cv8.1CD на каждое обращение, — частая причина «тормозов» на ровном месте.

Файловая база через веб-сервер

Промежуточный вариант — опубликовать файловую базу на веб-сервере (IIS или Apache) и подключаться к ней через браузер или тонкий клиент по HTTP. Файл тогда читает только процесс веб-сервера, а не каждый пользователь по сети. Это снижает риск порчи файла при обрывах, но СУБД остаётся той же, файловой, и предел по нагрузке почти не меняется.

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

В клиент-серверном варианте появляются два отдельных слоя:

  1. Кластер серверов 1С — служба 1C:Enterprise 8.3 Server Agent. Здесь выполняется серверный код конфигурации: проведение, запросы, регламентные задания.
  2. СУБД — MS SQL Server, PostgreSQL или другая поддерживаемая система. Она только хранит данные и выполняет SQL-запросы, которые ей передаёт сервер 1С.

Клиент 1С никогда не обращается к СУБД напрямую. Цепочка такая: клиент подключается к агенту сервера (порт 1540), агент направляет его к менеджеру кластера (порт 1541), дальше работа идёт с рабочими процессами. Диапазон их портов задаётся в свойствах рабочего сервера, по умолчанию 1560–1591.

Строка подключения: Srvr="srv1c";Ref="buh";. Здесь srv1c — имя сервера 1С, buh — имя информационной базы в кластере. Имя базы в СУБД может быть другим, оно указывается при создании.

Что даёт этот режим:

  • 🚀 блокировки на уровне записей, а не крупных кусков таблиц;
  • 🚀 тяжёлые расчёты выполняются на сервере, клиенту уходят только результаты;
  • 🛡️ надёжность хранения: журнал транзакций СУБД, восстановление на момент времени;
  • 👥 спокойная работа десятков и сотен пользователей.

Чем платите: нужна лицензия на сервер 1С, отдельная машина или виртуалка с запасом памяти, лицензия на MS SQL (если выбран он) и администратор, который понимает и 1С, и СУБД.

Какие СУБД поддерживает 1С:Предприятие 8.3

СУБДСтоимостьГде чаще ставятОсобенности
Microsoft SQL ServerПлатная, есть бесплатная редакция Express с ограничениямиWindows-серверы, давно работающие компанииСамая привычная связка для 1С, много готовых инструкций
PostgreSQLБесплатнаяНовые внедрения, Linux, импортозамещениеНужна сборка с патчами для 1С (дистрибутив от 1С или Postgres Pro)
IBM Db2ПлатнаяРедко, крупные компании с инфраструктурой IBMУзкий круг специалистов
Oracle DatabaseПлатнаяРедко, в основном исторические внедренияДорого, сложно сопровождать

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

Редакция SQL Server Express ограничивает размер одной базы (10 ГБ) и объём используемой памяти. Для пары небольших баз этого хватает, для «Бухгалтерии» с несколькими годами данных — уже нет.

На практике выбор почти всегда между MS SQL и PostgreSQL. Если сервер на Windows и лицензии SQL уже куплены — оставайтесь на MS SQL. Если внедрение новое или сервер на Linux — PostgreSQL снимает вопрос лицензирования СУБД.

Какой режим базы вам подходит?

Файл или SQL: сравнение по шагам работы

Что сравниваемФайловая базаКлиент-серверная база
Где хранятся данныеОдин файл 1Cv8.1CDТаблицы в базе СУБД
Что нужно установитьТолько клиент 1ССервер 1С, СУБД, клиенты
ЛицензииКлиентскиеКлиентские + сервер 1С + СУБД (кроме PostgreSQL)
Комфортное число пользователей1–10Десятки и сотни
БлокировкиКрупные, пользователи ждут друг другаУправляемые, на уровне записей
Резервная копияКопия файла или выгрузка .dtСредствами СУБД, по расписанию
Восстановление на момент времениНетДа, при полной модели восстановления
Проверка целостностиТестирование и исправление, chdbfl.exeТестирование и исправление + проверки СУБД
Кто сопровождаетСам пользователь или бухгалтерАдминистратор

Перенос между режимами делается через выгрузку и загрузку .dt:

  1. В файловой базе откройте Конфигуратор: Администрирование → Выгрузить информационную базу.
  2. В консоли кластера создайте новую информационную базу, укажите тип СУБД, сервер СУБД, имя базы и учётную запись. Флажок «Создать базу данных в случае ее отсутствия» создаст базу в СУБД сам.
  3. Добавьте новую базу в список, откройте её Конфигуратором и выполните Администрирование → Загрузить информационную базу.
  4. Проверьте, что обмены, регламентные задания и пути к файлам в новой базе указывают туда, куда нужно.

При создании копии рабочей базы для тестов ставьте флажок «Установить блокировку регламентных заданий». Иначе копия начнёт сама отправлять отчётность, обмениваться с сайтом или банком от имени настоящей организации.

Как ускорить базу на SQL-сервере

Большая часть проблем со скоростью на сервере решается не железом, а обслуживанием СУБД. Без него статистика устаревает, индексы фрагментируются, и запросы, которые шли секунду, начинают идти минуту.

Настройки MS SQL Server

  • 🧠 Максимальная память сервера (max server memory). Без ограничения SQL забирает почти всю память, и серверу 1С и Windows не хватает. Оставьте системе и рабочим процессам 1С несколько гигабайт.
  • 💽 tempdb — на быстрый SSD, лучше отдельный. 1С активно пользуется временными таблицами.
  • 📦 Модель восстановления. Full даёт восстановление на любой момент, но требует регулярного бэкапа журнала. Без него файл журнала растёт, пока не займёт весь диск. Если бэкапы журнала не настроены, ставьте Simple.

План обслуживания на ночь, когда пользователей нет:

-- обновить статистику по всей базе
USE [buh];
EXEC sp_updatestats;

-- после обновления статистики сбросить кэш планов,
-- чтобы запросы перестроились с новыми данными
DBCC FREEPROCCACHE;

Перестроение индексов (Rebuild Index) запускайте реже, раз в неделю, через мастер планов обслуживания в SQL Server Management Studio. Операция тяжёлая и на больших таблицах может идти часами.

Настройки PostgreSQL

Основные параметры в postgresql.conf, с которых начинают:

ПараметрОриентирЗачем
shared_buffersоколо 25% памяти сервера СУБДКэш данных самого PostgreSQL
effective_cache_size50–75% памятиПодсказка планировщику, сколько данных в кэше ОС
work_memот 32–64 МБ, осторожноПамять на сортировку в одном запросе
maintenance_work_mem512 МБ–1 ГБУскоряет VACUUM и построение индексов

work_mem выделяется на каждую операцию сортировки каждого запроса. Если поставить 1 ГБ при сотне активных сеансов, сервер уйдёт в своп.

Автоочистку (autovacuum) не отключайте. Для больших баз дополнительно раз в сутки, ночью, запускайте:

vacuumdb -U postgres -h localhost --analyze --dbname=buh

Что проверить со стороны 1С

  • 🔍 Технологический журнал и замер производительности покажут, какой именно запрос тормозит.
  • 🧹 Таблицы итогов: в Конфигураторе Администрирование → Управление итогами можно пересчитать итоги, если после сбоя остатки считаются долго или неверно.
  • 🔄 Тестирование и исправление (Администрирование → Тестирование и исправление) — после аварийных отключений и перед переходом на новый релиз.

Тестирование и исправление требует монопольного доступа к базе: перед запуском все пользователи должны выйти. Для клиент-серверной базы установите блокировку сеансов в консоли кластера и предупредите людей заранее.

Резервное копирование для каждого типа СУБД

Выгрузка .dt — не замена полноценной резервной копии для серверной базы. Её удобно делать перед обновлением, но на больших базах она идёт долго, требует выхода всех пользователей и не даёт восстановления на момент времени.

Файловая база

  1. Попросите всех выйти из базы и убедитесь, что в каталоге нет файла 1Cv8.cfl.
  2. Скопируйте весь каталог базы или хотя бы 1Cv8.1CD в другое место, лучше на другой диск или в облако.
  3. Для регулярных копий в типовых конфигурациях есть обработка Администрирование → Обслуживание → Резервное копирование и восстановление. Она работает только для файловых баз.

Выгрузку .dt можно запускать по расписанию из командной строки:

"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DumpIB "E:\Backup\buh.dt"

Номер версии в пути замените на свой: посмотрите, какие папки есть в C:\Program Files\1cv8\.

MS SQL Server

Полная копия:

BACKUP DATABASE [buh]
TO DISK = N'E:\Backup\buh_full.bak'
WITH INIT, CHECKSUM;

Параметр COMPRESSION заметно уменьшает файл копии, но в редакции Express он недоступен. Восстановление идёт через RESTORE DATABASE или мастер в Management Studio, причём восстановить можно в новую базу рядом, не трогая рабочую.

PostgreSQL

# копия в сжатом формате
pg_dump -U postgres -h localhost -Fc -f /backup/buh.dump buh

# восстановление в заранее созданную пустую базу buh_test
pg_restore -U postgres -h localhost -d buh_test /backup/buh.dump

После восстановления серверной базы её нужно зарегистрировать в кластере 1С: создать информационную базу в консоли и указать имя уже существующей базы в СУБД.

Резервное копирование настроено правильно, если
Выполнено: 0 / 5

Копия, которую ни разу не восстанавливали, — это надежда, а не копия. Раз в месяц разворачивайте последний бэкап в тестовую базу и открывайте её в 1С.

Типичные ошибки при выборе и настройке СУБД

  • ❌ Файловая база в общей папке на чужом компьютере, который выключают на ночь или перезагружают при обновлении Windows. Обрыв во время записи — прямая дорога к повреждению 1Cv8.1CD.
  • ❌ SQL Server и сервер 1С на одной машине с 8 ГБ памяти без ограничения max server memory. Рабочим процессам 1С не хватает памяти, база «замирает».
  • ❌ Полная модель восстановления без бэкапа журнала. Через несколько месяцев диск забит файлом .ldf, база останавливается.
  • ❌ Обычный PostgreSQL вместо сборки для 1С. Базу не удаётся создать или она работает с ошибками.
  • ❌ Тестовая копия без блокировки регламентных заданий. Копия отправляет данные во внешние сервисы от имени рабочей базы.
  • ❌ Резервные копии на том же диске, что и база. Отказ диска уничтожает и данные, и копии.

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

Можно ли перевести файловую базу на SQL без потери данных?
Да. Выгрузите базу в .dt, создайте серверную базу в кластере и загрузите файл. Данные, конфигурация и пользователи переносятся полностью.
Сколько весит база 1С и когда файловый режим уже не справляется?
Размер зависит от числа документов: небольшая «Бухгалтерия» занимает 1–3 ГБ, база торговой компании за несколько лет — десятки гигабайт. Ориентир для перехода — не размер, а ожидания пользователей на блокировках и долгое закрытие месяца.
Можно ли открыть таблицы базы 1С напрямую в SQL Management Studio?
Открыть можно, но имена таблиц служебные (_Document123, _AccumRg456), а прямое изменение данных в обход платформы ломает целостность базы. Менять данные только через 1С.
Нужен ли отдельный сервер под СУБД?
Для 10–30 пользователей сервер 1С и СУБД обычно живут на одной машине с достаточной памятью. Разносить их имеет смысл при большой нагрузке или если СУБД обслуживает и другие системы.
Поможет ли SSD файловой базе?
Да, заметно: файловая база много читает и пишет мелкими порциями. Но проблему блокировок при многих пользователях SSD не решает.