На чём хранит данные 1С:Предприятие 8.3 и какую СУБД выбрать
Содержание
1С:Предприятие 8.3 работает с базой данных в одном из двух режимов. Файловый — все данные лежат в одном файле 1Cv8.1CD, СУБД встроена в платформу. Клиент-серверный — данные хранятся во внешней СУБД: Microsoft SQL Server, PostgreSQL, IBM Db2 или Oracle Database, а между пользователями и СУБД стоит сервер 1С.
Чаще всего на практике встречаются два варианта: файловая база у небольших фирм и связка «сервер 1С + MS SQL или PostgreSQL» у всех, кто вырос из 5–10 одновременных пользователей. Конфигурация (БП, ЗУП, УТ) при этом одна и та же: прикладной код не зависит от того, где физически лежат таблицы.
Файловая база 1С: что внутри и когда её хватает
Файловая база — это каталог, в котором лежит файл 1Cv8.1CD. В нём хранятся и данные, и конфигурация, и служебные таблицы. Рядом платформа создаёт файлы блокировок и временные файлы, а журнал регистрации пишет в подкаталог 1Cv8Log.
Отдельной СУБД ставить не нужно. Достаточно установить платформу и указать путь к каталогу при добавлении базы в список.
Сильные стороны файлового режима:
- 🟢 ноль затрат на сервер и лицензии СУБД;
- 🟢 база переносится простым копированием каталога;
- 🟢 развернуть новую базу из шаблона — пара минут;
- 🟢 удобно для разработки, тестовых копий, учёта одного ИП.
Слабые стороны:
- 🔴 блокировки грубые: пока один пользователь проводит документ, другие ждут — при 8–10 активных пользователях это уже заметно;
- 🔴 работа по сети через общую папку медленная и чувствительна к обрывам — обрыв во время записи может повредить файл;
- 🔴 крупные базы (десятки гигабайт) открываются и обрабатываются долго;
- 🔴 нет штатных средств СУБД: журнала транзакций, восстановления на момент времени, тонкой настройки.
Файловую базу можно опубликовать на веб-сервере и работать через тонкий клиент или браузер. Это снимает проблему «общей папки», но не отменяет ограничений самого файлового движка.
Ориентир по выбору простой. До 3–5 одновременных пользователей и база до 5–10 ГБ — файлового режима обычно хватает. Если пользователей больше, идут регламентные обмены и тяжёлые закрытия месяца — пора думать о клиент-серверном варианте.
Как устроен клиент-серверный вариант 1С
В клиент-серверной схеме три звена:
- Клиент — тонкий, толстый или веб-клиент на рабочем месте.
- Кластер серверов
1С — служба «Агент сервера 1С:Предприятия» (
ragent), менеджер кластера (rmngr) и рабочие процессы (rphost), которые выполняют код конфигурации. - СУБД — хранит таблицы, индексы, выполняет запросы.
Клиент сначала обращается к агенту сервера (по умолчанию порт 1540), затем к менеджеру кластера (1541) и дальше работает с рабочими процессами. Их порты берутся из диапазона, который задаётся в свойствах рабочего сервера (по умолчанию 1560–1591). Если между клиентами и сервером стоит брандмауэр, открывать нужно все три группы.
Сервер 1С и СУБД можно поставить на одну машину или разнести. Для 10–30 пользователей обычно хватает одного сервера: при этом сетевые задержки между сервером 1С и СУБД минимальны.
Клиент-серверный вариант требует лицензии на сервер 1С (ПРОФ или КОРП) помимо клиентских лицензий. Без неё сервер базу не запустит. Плюс лицензия на саму СУБД, если выбран MS SQL Server или Oracle.
Главный выигрыш — блокировки. В клиент-серверном режиме современные конфигурации используют управляемые блокировки на уровне записей. Два бухгалтера проводят документы по разным контрагентам и не мешают друг другу.
Сравнение СУБД для 1С: MS SQL Server, PostgreSQL, Db2, Oracle
Платформа 8.3 поддерживает четыре внешние СУБД. Конкретные поддерживаемые версии зависят от релиза платформы, их перечень публикуется в системных требованиях к каждому релизу.
| СУБД | ОС сервера | Стоимость | Когда выбирают |
|---|---|---|---|
| Microsoft SQL Server | Windows (новые версии — и Linux) | Платная; Express бесплатна, но с ограничением размера базы 10 ГБ | Исторически самый распространённый вариант, много специалистов |
| PostgreSQL (сборки для 1С, Postgres Pro) | Linux, Windows | Бесплатно; коммерческая Postgres Pro — платно | Импортозамещение, экономия на лицензиях, серверы на Linux |
| IBM Db2 | Linux, Windows | Платная | Редко, в крупных компаниях с уже развёрнутой Db2 |
| Oracle Database | Linux, Windows | Платная, дорогая | Редко, там, где Oracle — корпоративный стандарт |
Для 1С используют не любой PostgreSQL «из репозитория», а сборки с патчами под 1С. Их распространяет сама фирма 1С (на портале обновлений для владельцев лицензий) и Postgres Professional. Ванильный PostgreSQL без патчей с 1С работать не будет или будет работать с ошибками.
Как выбрать на практике:
- 🧮 Уже есть Windows-инфраструктура и лицензии MS SQL — оставайтесь на MS SQL, переход ради перехода не окупится.
- 🐧 Новый сервер, бюджет ограничен или требование отечественного ПО — PostgreSQL с патчами для 1С на Linux.
- 🏢 Db2 или Oracle — только если эта СУБД уже стоит в компании и есть администратор под неё.
MS SQL Express подходит для пробного запуска и маленьких баз, но лимит 10 ГБ на базу настигает типовую БП за 2–4 года активной работы. Закладывайте сразу полноценную редакцию или PostgreSQL.
По скорости на типовых операциях MS SQL и правильно настроенный PostgreSQL близки. Разница чаще зависит от дисков, памяти и настройки СУБД, чем от бренда. Ненастроенный PostgreSQL с параметрами по умолчанию заметно медленнее — это частая причина жалоб после миграции.
Перенос базы 1С из файлового режима в SQL
Универсальный способ — через файл выгрузки .dt. Он не зависит от СУБД: так же переносят базу и обратно, из SQL в файл.
Шаг 1. Выгрузите файловую базу
- Попросите пользователей выйти из базы.
- Откройте базу в Конфигураторе.
- Выберите
Администрирование → Выгрузить информационную базуи сохраните файл.dt.
Отдельно сохраните копию каталога с 1Cv8.1CD — это откат, если что-то пойдёт не так.
Шаг 2. Создайте базу на сервере 1С
В окне запуска 1С нажмите Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации и выберите вариант «На сервере 1С:Предприятия». Заполните поля:
| Поле | Что указать |
|---|---|
| Кластер серверов 1С:Предприятия | имя или адрес сервера 1С |
| Имя информационной базы в кластере | короткое латинское имя, например buh_main |
| Тип СУБД | MS SQL Server, PostgreSQL и т.д. |
| Сервер баз данных | адрес сервера СУБД |
| Имя базы данных | как назвать базу в СУБД |
| Пользователь и пароль сервера БД | учётная запись СУБД с правом создавать базы |
Поставьте галочку «Создать базу данных в случае её отсутствия». Флаг «Установить блокировку регламентных заданий» включите, если это копия рабочей базы: иначе копия начнёт выполнять обмены и загрузки от имени рабочей.
Шаг 3. Загрузите данные
- Откройте новую пустую базу в Конфигураторе.
- Выберите
Администрирование → Загрузить информационную базуи укажите файл.dt. - Подтвердите замену данных и дождитесь окончания загрузки.
Для базы на 5–10 ГБ загрузка занимает от получаса до нескольких часов — зависит от дисков и СУБД.
Шаг 4. Проверьте и переключите пользователей
- ✅ откройте базу в режиме предприятия, сверьте ОСВ и остатки с файловой копией;
- ✅ проверьте, что пользователи и права перенеслись (они входят в
.dt); - ✅ удалите из списка баз на рабочих местах старую файловую базу или переименуйте её в «Архив», чтобы никто не продолжил работу в ней.
После переключения не открывайте старую файловую базу для работы. Если двое бухгалтеров неделю вели учёт в разных базах, слить данные обратно без ручного труда не получится.
Обслуживание и скорость: на что смотреть в каждом режиме
Каждый режим требует своего регламента. Файловая база «сама в себе», в клиент-серверной обслуживать нужно и сервер 1С, и СУБД.
Файловая база
- 🔧 Раз в месяц–квартал —
Администрирование → Тестирование и исправлениев Конфигураторе. Режим требует монопольного доступа. - 🔧 Для запуска без Конфигуратора есть утилита
chdbfl.exeв каталогеbinплатформы — проверка физической целостности файла. - 🔧 Держите базу на локальном SSD, а не на сетевом хранилище с нестабильным соединением.
- 🔧 Исключите каталог базы из проверки антивирусом «на лету» — сканирование
1Cv8.1CDпри каждой записи тормозит работу.
MS SQL Server
- 📈 Регулярно обновляйте статистику и перестраивайте индексы — через план обслуживания SQL Server, ночью.
- 📈 Ограничьте максимальную память SQL Server (
max server memory), если на той же машине работает сервер 1С: иначе SQL заберёт почти всё ОЗУ. - 📈 Следите за размером журнала транзакций: в модели восстановления Full без резервного копирования журнала он растёт бесконечно.
- 📈 Вынесите
tempdbна быстрый диск.
PostgreSQL
- 🐘 Настройте
shared_buffers,effective_cache_size,work_memпод объём памяти — с настройками по умолчанию СУБД рассчитана на очень скромное железо. - 🐘 Проверьте, что работает
autovacuum, и периодически запускайтеVACUUM ANALYZEдля крупных таблиц. - 🐘 Ставьте ту сборку и версию PostgreSQL, которая указана как поддерживаемая для вашего релиза платформы.
Со стороны сервера 1С
- 🖥️ Сеансы, блокировки и рабочие процессы смотрят в консоли кластера или утилитой
rac. Список сеансов выводитrac session list, параметры остальных команд — вrac help. - 🖥️ Технологический журнал включают файлом
logcfg.xml— он нужен при разборе медленных запросов и взаимоблокировок.
Завершение сеанса в консоли кластера или перезапуск службы сервера 1С обрывает работу пользователей — несохранённые документы пропадут. Делайте это после предупреждения или во внерабочее время.
Резервные копии базы 1С: файл, .dt и средства СУБД
Способ копирования зависит от режима. Ниже — что реально работает и чем каждый вариант опасен.
| Способ | Режим | Плюсы | Ограничения |
|---|---|---|---|
Копия каталога с 1Cv8.1CD | Файловый | Быстро, восстановление — простое копирование назад | Копировать только при закрытой базе, иначе файл может оказаться несогласованным |
Выгрузка .dt | Любой | Не зависит от СУБД, удобно для переноса | Медленно на больших базах; загрузка требует монопольного доступа и заменяет все данные |
| Полный бэкап MS SQL | Клиент-серверный | Делается без остановки работы, можно по расписанию | Нужен план обслуживания и место под копии |
| Бэкап журнала MS SQL (модель Full) | Клиент-серверный | Восстановление на любой момент времени | Нужна цепочка копий без разрывов |
pg_dump / физический бэкап PostgreSQL | Клиент-серверный | Без остановки работы, штатные средства | Нужен настроенный скрипт и проверка восстановления |
Для MS SQL полный бэкап выглядит так:
BACKUP DATABASE [buh_main]
TO DISK = N'D:\Backup\buh_main_full.bak'
WITH COMPRESSION, CHECKSUM, INIT;
Для PostgreSQL — выгрузка одной базы в сжатый формат:
pg_dump -U postgres -h localhost -F c -f D:\Backup\buh_main.backup buh_main
Восстанавливают такую копию утилитой pg_restore в пустую базу.
Чтобы бэкап действительно спас, соблюдайте три правила:
- Храните копии не на том же диске, где база. Отказ диска уносит и базу, и копии.
- Держите несколько поколений — например, 7 ежедневных и 4 еженедельных. Ошибку в данных часто замечают через неделю.
- Раз в квартал проверяйте восстановление на тестовом сервере. Копия, которую ни разу не разворачивали, — это надежда, а не бэкап.
Восстановленную из бэкапа СУБД базу нужно заново зарегистрировать в кластере 1С, если её восстанавливали под другим именем. Создайте базу в кластере с указанием существующей базы данных и снимите флаг «Создать базу данных в случае её отсутствия».
Частые вопросы о базах данных 1С
Можно ли узнать, в каком режиме работает моя база?
File="C:\..." — файловая база, Srvr="..."; Ref="..." — клиент-серверная. В самой программе то же видно в окне «О программе».Нужно ли переписывать конфигурацию при переходе на SQL?
Можно ли работать с таблицами 1С напрямую через SQL?
_Document123, _Fld456). Запись в обход платформы ломает целостность и лишает поддержки. Для интеграций используйте HTTP-сервисы, OData или COM-соединение.Сколько пользователей выдерживает файловая база?
Можно ли вернуть базу из SQL обратно в файл?
.dt из серверной базы и загрузка в новую пустую файловую. Так делают, например, чтобы отдать копию аудитору или разработчику.