Где физически лежат данные 1С:Предприятия и как они устроены внутри
Содержание
Данные 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С: что копировать в каждом режиме
Способ резервного копирования напрямую вытекает из того, как хранятся данные.
Файловая база
- Попросите всех выйти из базы и завершите фоновые задания.
- Скопируйте папку базы целиком или заархивируйте
1Cv8.1CD. - Раз в неделю дополнительно делайте выгрузку
.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С:Предприятие стандартной функцией «Управление итогами»:Функции для технического специалиста → Стандартные → Управление итогами. - 🗑️ Рост базы. Самые частые «пожиратели» места — журнал регистрации в базе, версии объектов и вложения. Ограничьте срок хранения версий объектов и вынесите файлы в тома.
Частые вопросы
Можно ли открыть файл 1Cv8.1CD без 1С и прочитать данные?
.dt и загрузку в другую базу.Почему файловая база весит больше, чем её выгрузка .dt?
.dt сжат и не содержит индексов и пустых страниц. Разница в 5–10 раз — норма. Уменьшить сам файл помогает сжатие таблиц в тестировании и исправлении.Можно ли хранить файловую базу в облачной папке, которая синхронизируется?
Где хранятся пользовательские настройки форм и отчётов?
.dt настройки переезжают вместе с данными, а очистка кэша на компьютере их не сбрасывает.