Где физически лежат данные 1С:Предприятия и как они устроены внутри

· 10 мин

Содержание

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

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

Файловый и клиент-серверный режим хранения данных 1С: сравнение

Платформа одна, конфигурация одна, а «движок» под ней разный. Перевести базу из одного режима в другой можно выгрузкой и загрузкой .dt, код конфигурации при этом не меняется.

ПараметрФайловый режимКлиент-серверный (SQL)
Где данныеФайл 1Cv8.1CD в папке базыБаза данных на сервере СУБД
Кто работает с даннымиКаждый клиент сам читает и пишет файлРабочие процессы сервера 1С
Гранулярность блокировок СУБДТаблица целикомЗаписи и диапазоны индекса
Резервная копияКопия папки или .dtСредства СУБД (BACKUP, pg_dump)
МасштабОриентировочно до 5–10 активных пользователейДесятки и сотни пользователей
ЛицензииТолько клиентскиеКлиентские + лицензия сервера 1С

Тип базы виден в окне запуска: выделите базу — внизу окна появится строка подключения. File="D:\Bases\Buh" означает файловую базу, Srvr="srv1c";Ref="buh" — серверную.

Как устроена файловая база 1Cv8.1CD изнутри

Файловая база — это собственная мини-СУБД платформы. Все таблицы, индексы, конфигурация и служебные данные упакованы в один контейнер 1Cv8.1CD.

Внутри файл разбит на страницы фиксированного размера. Каждая таблица занимает свой набор страниц: отдельно записи, отдельно индексы, отдельно поля неограниченной длины. Когда записи удаляют, освобождённые страницы не возвращаются операционной системе — файл не уменьшается сам.

Что ещё лежит в папке базы

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

Копировать или переносить папку можно только когда в базе никто не работает — иначе в копию попадёт файл в промежуточном состоянии.

Форматы файла

С платформы 8.3.8 появился новый формат 1Cv8.1CD. В нём можно выбрать размер страницы и сняты ограничения старого формата на размер отдельных таблиц. Базы, созданные в старых версиях, продолжают работать в прежнем формате, пока их не сконвертировать. Команда конвертации есть в меню Администрирование конфигуратора; второй способ — выгрузить базу в .dt и загрузить в новую пустую.

Файловая база чувствительна к сети. Если файл лежит на сетевой папке и связь рвётся во время записи, страницы 1Cv8.1CD могут повредиться. Для работы по сети с 3–5 пользователями надёжнее терминальный доступ или переход на сервер 1С.

Хранение данных 1С в SQL: что видит СУБД

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

Сервер 1С не держит данные у себя. Если остановить СУБД, остановится и работа с базой, хотя кластер 1С будет запущен.

Особенности по СУБД

  • 🗄️ MS SQL Server. Строки хранятся в nvarchar, числа в numeric, ссылки в binary(16). При создании базы задают смещение дат (0 или 2000): со смещением 2000 к году в таблицах прибавляется 2000, поэтому 01.01.2025 в SQL выглядит как 4025 год.
  • 🐘 PostgreSQL. Нужна сборка с патчами для 1С. Для строк она добавляет типы mvarchar и mchar — они сравнивают текст без учёта регистра, как ожидает платформа.
  • 🏢 IBM Db2 и Oracle. Поддерживаются, но в малом и среднем бизнесе встречаются редко.

Помимо таблиц объектов в базе есть служебные: Config (конфигурация базы данных), ConfigSave (конфигурация, сохранённая в конфигураторе, но ещё не применённая), Params (параметры базы), Files, DBSchema (описание соответствия объектов и таблиц).

Именно поэтому «Обновить конфигурацию базы данных» — отдельный шаг: изменения сначала лежат в ConfigSave, а при обновлении переносятся в Config и перестраивают структуру таблиц.

Как объекты конфигурации превращаются в таблицы и поля

Платформа не использует русские имена объектов в базе. Каждой сущности присваивается служебное имя с номером.

Объект конфигурацииТаблица в базе
Справочник_Reference45
Табличная часть справочника_Reference45_VT120
Документ_Document123
Регистр накопления (движения)_AccumRg200
Итоги регистра накопления_AccumRgT215
Регистр сведений_InfoRg300
Регистр бухгалтерии_AccRg400
Перечисление_Enum50
Константа_Const10

Реквизиты становятся полями _Fld1234. Стандартные реквизиты имеют постоянные имена: _IDRRef (ссылка), _Marked (пометка удаления), _Posted (проведён), _Date_Time, _Number, _Code, _Description, _Version (версия записи для контроля изменений).

Ссылки и составные типы

Ссылка — это 16-байтный GUID в поле binary(16). Порядок байтов в базе отличается от текстового вида GUID, который вы видите в навигационной ссылке, поэтому простой поиск по строке не сработает.

Реквизит составного типа раскладывается на несколько полей:

  • _Fld1234_TYPE — какой тип сейчас записан;
  • _Fld1234_N, _Fld1234_S, _Fld1234_T, _Fld1234_L — число, строка, дата, булево;
  • _Fld1234_RTRef — номер таблицы, на которую ссылается значение;
  • _Fld1234_RRRef — сама ссылка.

Как узнать имя таблицы

Номера в каждой базе свои: _Document123 в одной базе и в её копии после загрузки .dt может стать другим объектом. Соответствие выдаёт функция ПолучитьСтруктуруХраненияБазыДанных(). Её можно выполнить во внешней обработке на сервере:

&НаСервере
Процедура ПоказатьСтруктуруНаСервере()
	Структура = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
	Для Каждого Строка Из Структура Цикл
		Сообщить(Строка.Метаданные + " -> " + Строка.ИмяТаблицыХранения);
	КонецЦикла;
КонецПроцедуры

Второй параметр Истина возвращает имена в терминах СУБД — такие, какие вы увидите в SQL Server Management Studio или pgAdmin. В колонке Поля каждой строки — вложенная таблица с соответствием реквизитов и полей _Fld.

Читать таблицы напрямую для анализа можно, изменять — нет. Запись SQL-запросом в обход платформы не проверяет ссылочную целостность, не обновляет итоги регистров и не попадает в журнал регистрации. Кроме того, лицензионные условия 1С ограничивают прямой доступ к данным базы.

Где хранятся файлы, картинки и ХранилищеЗначения

Большие двоичные данные (BLOB) — сканы, вложения писем, картинки товаров, печатные формы — хранятся иначе, чем обычные реквизиты.

  • 📦 Реквизит типа ХранилищеЗначения. Значение сериализуется и пишется в поле неограниченной длины: в MS SQL это varbinary(max) или image, в PostgreSQL — bytea. В файловой базе такие поля лежат на отдельных страницах внутри того же 1Cv8.1CD.
  • 🗂️ Присоединённые файлы типовых конфигураций. Их можно хранить в базе или в томах на диске. Переключатель находится в разделе Администрирование типовой конфигурации, в настройках работы с файлами.
  • 🖼️ Картинки из конфигурации (общие картинки, макеты) хранятся в составе конфигурации, то есть в таблицах Config и ConfigSave.

Хранение в базе или в томах

ВариантПлюсыМинусы
В информационной базеФайлы попадают в любую резервную копию базыБаза растёт, .dt выгружается дольше
В томах на дискеБаза компактная, бэкап СУБД быстрееТома нужно копировать отдельно и синхронно с базой

Если файлы лежат в томах, а резервная копия делается только средствами СУБД — при восстановлении все вложения пропадут.

При записи в ХранилищеЗначения данные можно сжать. Это заметно уменьшает базу, если там лежат текстовые файлы или XML:

Объект.Вложение = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));

Блокировки и транзакции в файловом и серверном режиме

Каждое проведение документа идёт в транзакции: записываются документ, движения по регистрам и итоги. Либо всё целиком, либо ничего. Поэтому сбой посреди проведения не оставляет «полдокумента».

Различается то, что именно блокируется:

  • 📄 Файловый режим. На время записи блокируется таблица целиком. Пока один пользователь проводит реализацию, другой ждёт, даже если работает с другим складом. Это главная причина, по которой файловая база «тормозит» на 6–8 одновременных пользователях.
  • 🖥️ Клиент-серверный режим. Блокируются отдельные записи. Двое могут одновременно проводить документы по разным складам.

Автоматический и управляемый режим

Режим задаётся свойством конфигурации «Режим управления блокировкой данных»:

  • Автоматический — блокировки ставит сама СУБД, с высоким уровнем изоляции. Захватываются лишние диапазоны, чаще возникают взаимоблокировки.
  • Управляемый — блокировки ставит менеджер блокировок 1С по правилам, описанным в коде конфигурации. СУБД при этом работает с менее строгой изоляцией. Все современные типовые конфигурации работают в этом режиме.

Если запись ждёт чужую блокировку дольше заданного времени, пользователь видит Конфликт блокировок при выполнении транзакции: Превышено максимальное время ожидания предоставления блокировки. Время ожидания настраивается в конфигураторе: Администрирование → Параметры информационной базы.

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

Резервная копия данных 1С: что копировать в каждом режиме

Способ резервного копирования напрямую вытекает из того, как хранятся данные.

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

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

Выгрузку можно поставить в планировщик Windows командой:

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

Путь к 1cv8.exe подставьте свой — номер в папке совпадает с установленной версией платформы.

Серверная база

Копия папки здесь не работает: данные внутри СУБД. Используйте её штатные средства.

  • MS SQL Server — план обслуживания с полной копией (BACKUP DATABASE) раз в сутки и копиями журнала транзакций каждые 15–60 минут. Журнал копируется только при модели восстановления FULL; при SIMPLE восстановить базу можно лишь на момент полной копии.
  • PostgreSQL — pg_dump в формате custom по расписанию; для восстановления на точку во времени — архивирование WAL.
pg_dump -U postgres -F c -f "E:\Backup\buh.backup" buh

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

Копию полезно проверять: раз в месяц разверните её в тестовую базу и откройте пару отчётов. Битый бэкап обычно обнаруживают ровно в тот день, когда он нужен.

Обслуживание хранилища: сжатие, индексы, итоги

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

  • 🔧 Тестирование и исправление. Конфигуратор → Администрирование → Тестирование и исправление. Флажки «Реиндексация таблиц», «Проверка логической целостности», «Пересчёт итогов», «Сжатие таблиц информационной базы». Сжатие возвращает освобождённые страницы — файл 1Cv8.1CD уменьшается.
  • 🧰 Утилита chdbfl.exe. Лежит в папке bin платформы. Проверяет физическую целостность файла 1Cv8.1CD, когда конфигуратор не открывает базу.

Обе операции требуют монопольного доступа. Перед исправлением сделайте копию папки базы — режим «удалить битые ссылки» необратим.

Серверная база

  • 📊 Статистика и индексы. В MS SQL — план обслуживания с обновлением статистики ежедневно и перестроением или реорганизацией индексов раз в неделю. В PostgreSQL — работающий autovacuum и периодический VACUUM ANALYZE для крупных таблиц.
  • 🧮 Итоги регистров. Отчёты по остаткам читают таблицы итогов _AccumRgT. Если итоги рассчитаны только до давней даты, платформа досчитывает остатки по движениям, и отчёты замедляются. Период рассчитанных итогов и пересчёт настраиваются в режиме 1С:Предприятие стандартной функцией «Управление итогами»: Функции для технического специалиста → Стандартные → Управление итогами.
  • 🗑️ Рост базы. Самые частые «пожиратели» места — журнал регистрации в базе, версии объектов и вложения. Ограничьте срок хранения версий объектов и вынесите файлы в тома.
Регламент обслуживания базы 1С
Выполнено: 0 / 6

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

Можно ли открыть файл 1Cv8.1CD без 1С и прочитать данные?
Штатных средств нет: формат внутренний. Сторонние программы для просмотра существуют, но для работы с данными используйте платформу или выгрузку через .dt и загрузку в другую базу.
Почему файловая база весит больше, чем её выгрузка .dt?
.dt сжат и не содержит индексов и пустых страниц. Разница в 5–10 раз — норма. Уменьшить сам файл помогает сжатие таблиц в тестировании и исправлении.
Можно ли хранить файловую базу в облачной папке, которая синхронизируется?
Нет. Синхронизация копирует файл во время записи и может отправить на другой компьютер повреждённую версию. Для облака нужна серверная база или сервис с доступом через терминал.
Где хранятся пользовательские настройки форм и отчётов?
В самой информационной базе, в служебных таблицах. Поэтому после загрузки .dt настройки переезжают вместе с данными, а очистка кэша на компьютере их не сбрасывает.
Меняется ли структура таблиц при обновлении конфигурации?
Да. Если в новом релизе добавлены реквизиты или регистры, при обновлении конфигурации базы данных идёт реструктуризация: таблицы перестраиваются, на крупных базах это занимает от минут до часов.