Где 1С хранит данные: файловый режим, MS SQL и PostgreSQL на практике
Содержание
СУБД в 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С — служба
1C:Enterprise 8.3 Server Agent. Здесь выполняется серверный код конфигурации: проведение, запросы, регламентные задания. - СУБД — 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:
- В файловой базе откройте Конфигуратор:
Администрирование → Выгрузить информационную базу. - В консоли кластера создайте новую информационную базу, укажите тип СУБД, сервер СУБД, имя базы и учётную запись. Флажок «Создать базу данных в случае ее отсутствия» создаст базу в СУБД сам.
- Добавьте новую базу в список, откройте её Конфигуратором и выполните
Администрирование → Загрузить информационную базу. - Проверьте, что обмены, регламентные задания и пути к файлам в новой базе указывают туда, куда нужно.
При создании копии рабочей базы для тестов ставьте флажок «Установить блокировку регламентных заданий». Иначе копия начнёт сама отправлять отчётность, обмениваться с сайтом или банком от имени настоящей организации.
Как ускорить базу на 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_size | 50–75% памяти | Подсказка планировщику, сколько данных в кэше ОС |
work_mem | от 32–64 МБ, осторожно | Память на сортировку в одном запросе |
maintenance_work_mem | 512 МБ–1 ГБ | Ускоряет VACUUM и построение индексов |
work_mem выделяется на каждую операцию сортировки каждого запроса. Если поставить 1 ГБ при сотне активных сеансов, сервер уйдёт в своп.
Автоочистку (autovacuum) не отключайте. Для больших баз дополнительно раз в сутки, ночью, запускайте:
vacuumdb -U postgres -h localhost --analyze --dbname=buh
Что проверить со стороны 1С
- 🔍 Технологический журнал и замер производительности покажут, какой именно запрос тормозит.
- 🧹 Таблицы итогов: в Конфигураторе
Администрирование → Управление итогамиможно пересчитать итоги, если после сбоя остатки считаются долго или неверно. - 🔄 Тестирование и исправление (
Администрирование → Тестирование и исправление) — после аварийных отключений и перед переходом на новый релиз.
Тестирование и исправление требует монопольного доступа к базе: перед запуском все пользователи должны выйти. Для клиент-серверной базы установите блокировку сеансов в консоли кластера и предупредите людей заранее.
Резервное копирование для каждого типа СУБД
Выгрузка .dt — не замена полноценной резервной копии для серверной базы. Её удобно делать перед обновлением, но на больших базах она идёт долго, требует выхода всех пользователей и не даёт восстановления на момент времени.
Файловая база
- Попросите всех выйти из базы и убедитесь, что в каталоге нет файла
1Cv8.cfl. - Скопируйте весь каталог базы или хотя бы
1Cv8.1CDв другое место, лучше на другой диск или в облако. - Для регулярных копий в типовых конфигурациях есть обработка
Администрирование → Обслуживание → Резервное копирование и восстановление. Она работает только для файловых баз.
Выгрузку .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С: создать информационную базу в консоли и указать имя уже существующей базы в СУБД.
Копия, которую ни разу не восстанавливали, — это надежда, а не копия. Раз в месяц разворачивайте последний бэкап в тестовую базу и открывайте её в 1С.
Типичные ошибки при выборе и настройке СУБД
- ❌ Файловая база в общей папке на чужом компьютере, который выключают на ночь или перезагружают при обновлении Windows. Обрыв во время записи — прямая дорога к повреждению
1Cv8.1CD. - ❌ SQL Server и сервер 1С на одной машине с 8 ГБ памяти без ограничения
max server memory. Рабочим процессам 1С не хватает памяти, база «замирает». - ❌ Полная модель восстановления без бэкапа журнала. Через несколько месяцев диск забит файлом
.ldf, база останавливается. - ❌ Обычный PostgreSQL вместо сборки для 1С. Базу не удаётся создать или она работает с ошибками.
- ❌ Тестовая копия без блокировки регламентных заданий. Копия отправляет данные во внешние сервисы от имени рабочей базы.
- ❌ Резервные копии на том же диске, что и база. Отказ диска уничтожает и данные, и копии.
Частые вопросы
Можно ли перевести файловую базу на SQL без потери данных?
.dt, создайте серверную базу в кластере и загрузите файл. Данные, конфигурация и пользователи переносятся полностью.Сколько весит база 1С и когда файловый режим уже не справляется?
Можно ли открыть таблицы базы 1С напрямую в SQL Management Studio?
_Document123, _AccumRg456), а прямое изменение данных в обход платформы ломает целостность базы. Менять данные только через 1С.