На чём хранит данные 1С:Предприятие 8.3 и какую СУБД выбрать

· 10 мин

Содержание

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. Клиент — тонкий, толстый или веб-клиент на рабочем месте.
  2. Кластер серверов 1С — служба «Агент сервера 1С:Предприятия» (ragent), менеджер кластера (rmngr) и рабочие процессы (rphost), которые выполняют код конфигурации.
  3. СУБД — хранит таблицы, индексы, выполняет запросы.

Клиент сначала обращается к агенту сервера (по умолчанию порт 1540), затем к менеджеру кластера (1541) и дальше работает с рабочими процессами. Их порты берутся из диапазона, который задаётся в свойствах рабочего сервера (по умолчанию 1560–1591). Если между клиентами и сервером стоит брандмауэр, открывать нужно все три группы.

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

Клиент-серверный вариант требует лицензии на сервер 1С (ПРОФ или КОРП) помимо клиентских лицензий. Без неё сервер базу не запустит. Плюс лицензия на саму СУБД, если выбран MS SQL Server или Oracle.

Главный выигрыш — блокировки. В клиент-серверном режиме современные конфигурации используют управляемые блокировки на уровне записей. Два бухгалтера проводят документы по разным контрагентам и не мешают друг другу.

Сравнение СУБД для 1С: MS SQL Server, PostgreSQL, Db2, Oracle

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

СУБДОС сервераСтоимостьКогда выбирают
Microsoft SQL ServerWindows (новые версии — и Linux)Платная; Express бесплатна, но с ограничением размера базы 10 ГБИсторически самый распространённый вариант, много специалистов
PostgreSQL (сборки для 1С, Postgres Pro)Linux, WindowsБесплатно; коммерческая Postgres Pro — платноИмпортозамещение, экономия на лицензиях, серверы на Linux
IBM Db2Linux, WindowsПлатнаяРедко, в крупных компаниях с уже развёрнутой Db2
Oracle DatabaseLinux, 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. Выгрузите файловую базу

  1. Попросите пользователей выйти из базы.
  2. Откройте базу в Конфигураторе.
  3. Выберите Администрирование → Выгрузить информационную базу и сохраните файл .dt.

Отдельно сохраните копию каталога с 1Cv8.1CD — это откат, если что-то пойдёт не так.

Шаг 2. Создайте базу на сервере 1С

В окне запуска 1С нажмите Добавить → Создание новой информационной базы → Создание информационной базы без конфигурации и выберите вариант «На сервере 1С:Предприятия». Заполните поля:

ПолеЧто указать
Кластер серверов 1С:Предприятияимя или адрес сервера 1С
Имя информационной базы в кластерекороткое латинское имя, например buh_main
Тип СУБДMS SQL Server, PostgreSQL и т.д.
Сервер баз данныхадрес сервера СУБД
Имя базы данныхкак назвать базу в СУБД
Пользователь и пароль сервера БДучётная запись СУБД с правом создавать базы

Поставьте галочку «Создать базу данных в случае её отсутствия». Флаг «Установить блокировку регламентных заданий» включите, если это копия рабочей базы: иначе копия начнёт выполнять обмены и загрузки от имени рабочей.

Шаг 3. Загрузите данные

  1. Откройте новую пустую базу в Конфигураторе.
  2. Выберите Администрирование → Загрузить информационную базу и укажите файл .dt.
  3. Подтвердите замену данных и дождитесь окончания загрузки.

Для базы на 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 в пустую базу.

Чтобы бэкап действительно спас, соблюдайте три правила:

  1. Храните копии не на том же диске, где база. Отказ диска уносит и базу, и копии.
  2. Держите несколько поколений — например, 7 ежедневных и 4 еженедельных. Ошибку в данных часто замечают через неделю.
  3. Раз в квартал проверяйте восстановление на тестовом сервере. Копия, которую ни разу не разворачивали, — это надежда, а не бэкап.

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

Частые вопросы о базах данных 1С

Можно ли узнать, в каком режиме работает моя база?
Да. В окне запуска выделите базу: внизу будет строка с путём. File="C:\..." — файловая база, Srvr="..."; Ref="..." — клиент-серверная. В самой программе то же видно в окне «О программе».
Нужно ли переписывать конфигурацию при переходе на SQL?
Нет. Типовые конфигурации работают одинаково в любом режиме. Доработки тоже переносятся без изменений, если в них нет прямой работы с файлами базы или внешних запросов в СУБД.
Можно ли работать с таблицами 1С напрямую через SQL?
Читать технически можно, но имена таблиц и полей служебные (_Document123, _Fld456). Запись в обход платформы ломает целостность и лишает поддержки. Для интеграций используйте HTTP-сервисы, OData или COM-соединение.
Сколько пользователей выдерживает файловая база?
Жёсткого лимита нет, ограничивают блокировки и сеть. Комфортно — до 3–5 одновременно работающих. При 10 и больше начинаются ожидания при проведении документов.
Можно ли вернуть базу из SQL обратно в файл?
Да, тем же путём: выгрузка .dt из серверной базы и загрузка в новую пустую файловую. Так делают, например, чтобы отдать копию аудитору или разработчику.