База данных 1С:Предприятие — это не просто хранилище цифр и текстов, а сложная система, где каждая таблица, каждый байт информации играет свою роль. Если вы когда-нибудь задумывались, как именно 1С организует данные — от справочников контрагентов до остатков на складах — эта статья поможет разложить всё по полочкам. Здесь нет магических "черных ящиков": мы детально разберем, что физически лежит в базе, как это структурировано и почему некоторые операции занимают секунды, а другие — часы.
Важно понимать: 1С работает поверх СУБД (например, Microsoft SQL Server, PostgreSQL или встроенной файловой базе), но сама по себе не является базой данных. Она лишь управляет данными, хранящимися в таблицах СУБД, по своим правилам. Именно эти правила — модель данных платформы 1С:Предприятие 8 — и определяют, что именно будет записано в базу при каждом вашем действии: от создания нового документа до проведения инвентаризации.
Статья будет полезна и администраторам, которые хотят оптимизировать работу базы, и разработчикам, пишущим запросы к данным, и бухгалтерам, которым важно понимать, где и как хранятся их проводки. Мы не будем углубляться в программный код, но зато разберем реальную структуру на примерах.
Физическая и логическая структура базы 1С
Любая база 1С состоит из двух слоев:
- 📂 Физический слой — это таблицы в СУБД (или файлы, если используется файловый вариант). Здесь данные хранятся в виде строк и столбцов, оптимизированных для быстрого доступа.
- 🧠 Логический слой — это модель данных 1С, которую видит пользователь: справочники, документы, регистры и т.д. Платформа автоматически "переводит" логические объекты в физические таблицы.
Например, когда вы открываете справочник Номенклатура, 1С не показывает вам сырую таблицу из СУБД, а формирует представление на основе метаданных. При этом в базе может быть десяток связанных таблиц: основная таблица справочника, таблицы для реквизитов, таблицы для подчинённых объектов и т.д.
В файловом варианте (1С:Предприятие 8.3 в режиме файловой базы) все данные хранятся в одном файле с расширением .1CD. В клиент-серверном варианте — в таблицах СУБД, names которых начинаются с префикса v8 (например, v8catalog, v8document).
Справочники: основа любой конфигурации
Справочники — это самые распространённые объекты в любой базе 1С. Они хранят постоянную или условно-постоянную информацию: список контрагентов, номенклатуру, сотрудников, подразделения и т.д. Физически каждый справочник представлен как минимум двумя таблицами:
- 📋 Основная таблица (
_Catalog) — содержит уникальные идентификаторы, коды, наименования и ссылки на родительские элементы (если справочник иерархический). - 📝 Таблица реквизитов (
_CatalogR) — хранит дополнительные поля (например, ИНН для контрагентов или вес для номенклатуры).
Если справочник имеет табличные части (например, несколько адресов или контактов для одного контрагента), то для них создаются отдельные таблицы с суффиксом _CatalogT.
Пример: справочник Контрагенты в типовой конфигурации 1С:Бухгалтерия 3.0 может включать:
| Таблица в СУБД | Что хранит | Пример данных |
|---|---|---|
_Catalog_Контрагенты | Основные поля: код, наименование, родитель (для иерархии) | 000001; ООО "Ромашка"; NULL |
_CatalogR_Контрагенты | Реквизиты: ИНН, КПП, юридический адрес | 7701234567; 770101001; "Москва, ул. Ленина, 1" |
_CatalogT_Контрагенты_Контакты | Табличная часть "Контакты": телефон, email, ФИО контактного лица | +7(495)123-45-67; info@romashka.ru; Иванов Иван |
Если справочник сильно разросся (например, более 100 000 записей), рассмотрите возможность архивирования неиспользуемых элементов или переноса исторических данных в отдельную базу. Это ускорит работу системы.
Документы: как 1С хранит бизнес-операции
Документы в 1С фиксируют факты хозяйственной жизни: продажи, поступления, начисление зарплаты, перемещения товаров. В отличие от справочников, документы всегда привязаны ко времени (дате и времени создания) и могут формировать движения по регистрам.
Физически каждый документ представлен:
- 📄 Основной таблицей (
_Document) — хранит заголовок документа (номер, дату, организацию, склад и т.д.). - 📊 Таблицей табличных частей (
_DocumentT) — например, строки товара в документеРеализацияТоваровУслуг. - 🔄 Таблицами движений (
_AccumRg,_AccumRt) — если документ формирует проводки или движения по регистрам.
Особенность документов: они могут быть проведены или не проведены. При проведении 1С генерирует движения по регистрам (о них поговорим ниже), которые фактически и меняют "состояние" базы — например, списывают товар со склада или начисляют зарплату.
Что происходит при удалении документа?
При удалении документа из базы 1С физически не удаляет его из таблиц СУБД, а лишь помечает как удалённый (устанавливает флаг IsMarked = 1 в служебном поле). Это позволяет восстановить документ, если он был удалён ошибочно. Полное удаление (физическое) возможно только через специальные обработки или прямые запросы к СУБД, но это опасно для целостности данных!
Пример: документ ПоступлениеТоваровУслуг в 1С:Управление Торговлей 11 может включать:
-- Основная таблица документа
_Document_ПоступлениеТоваровУслуг
ID: 12345
Номер: "ПТ-000123"
Дата: "2026-10-15 14:30:00"
Организация: "ООО Альфа"
Склад: "Основной склад"
-- Табличная часть "Товары"
_DocumentT_ПоступлениеТоваровУслуг_Товары
ID_Doc: 12345
Номенклатура: "Стул офисный"
Количество: 10
Цена: 2500.00
Сумма: 25000.00
-- Движения по регистру накопления "ТоварыНаСкладах"
_AccumRg_ТоварыНаСкладах
ID_Doc: 12345
Регистратор: "ПоступлениеТоваровУслуг.12345"
Номенклатура: "Стул офисный"
Склад: "Основной склад"
Количество: +10
Регистры: где хранятся остатки, обороты и расчёты
Регистры — это сердце аналитики в 1С. Они хранят данные, которые меняются со временем: остатки товаров, обороты по счетам, расчёты зарплаты. В отличие от справочников и документов, регистры не видны пользователю напрямую, но именно они обеспечивают работу отчётов и аналитических механизмов.
Существует четыре типа регистров:
- 📈 Регистры накопления — хранят остатки и обороты (например, товары на складах, денежные средства на счётах).
- 💰 Регистры бухгалтерии — хранят бухгалтерские проводки (дебет/кредит).
- 📊 Регистры расчёта — используются для сложных расчётов (например, начисление зарплаты, амортизация).
- 🔍 Регистры сведений — хранят "разрезы" данных (например, курсы валют, цены номенклатуры).
Физически регистры представлены таблицами с префиксами:
_AccumRg— регистры накопления (остатки)._AccumRt— регистры накопления (обороты)._AccumBal— регистры бухгалтерии._InfoRg— регистры сведений.
Пример: регистр накопления ТоварыНаСкладах в 1С:Управление Торговлей хранит:
| Поле | Тип данных | Пример значения | Описание |
|---|---|---|---|
Номенклатура | Ссылка | Стул офисный (00000123) | Какой товар хранится |
Склад | Ссылка | Основной склад (00000001) | Где хранится товар |
Количество | Число | 15.000 | Сколько единиц товара |
Регистратор | Ссылка | ПоступлениеТоваровУслуг.12345 | Какой документ изменил остаток |
Регистры бухгалтерии (_AccumBal) хранят проводки в виде записей с дебетом, кредитом и суммой. Именно они формируют Главную книгу и другие бухгалтерские отчёты.
Константы, перечисления и другие объекты
Помимо справочников, документов и регистров, в базе 1С хранятся и другие объекты:
Константы — это глобальные настройки конфигурации, которые редко меняются. Примеры: название организации, основной банковский счёт, ответственный за бухгалтерию. Физически хранятся в таблице _Const.
Перечисления — фиксированные списки значений (например, виды оплат: "Наличные", "Безналичный расчёт", "Карта"). Хранятся в таблице _Enum.
Планы видов характеристик (ПВХ) — используются для гибкой аналитики (например, дополнительные свойства номенклатуры: цвет, размер, материал). Данные хранятся в таблицах с префиксом _ChartOf.
Планы счетов — структура бухгалтерских счетов (например, 50 "Касса", 51 "Расчётный счёт"). Хранятся в таблице _ChartOfAccounts.
Эти объекты занимают мало места в базе, но критически важны для её работы. Например, если случайно изменить константу ОсновнаяОрганизация, это может привести к ошибкам в документах и отчётах.
1. Откройте список констант в режиме "Конфигуратор" (Общие → Константы).
2. Сравните текущие значения с эталонными (например, из резервной копии).
3. Проверьте права доступа пользователей к изменению констант.
4. Запустите тестирование и исправление базы (Администрирование → Тестирование и исправление).
-->
Служебные таблицы: что 1С хранит "за кадром"
Помимо пользовательских данных, 1С создаёт множество служебных таблиц, которые обеспечивают работу системы. Их не видно в конфигураторе, но они критически важны. Вот некоторые из них:
- 🔑
v8users— список пользователей базы и их права. - 📅
v8seq— последовательности (для автонумерации документов). - 🔄
v8log— журнал регистрации (если включён). - 🗑️
v8deleted— информация об удалённых объектах. - 🔧
v8params— параметры сеансов и настроек.
Например, таблица v8seq хранит текущие значения для автонумерации документов. Если её повредить, 1С может начать присваивать документам одинаковые номера, что приведёт к ошибкам.
Служебные таблицы обычно не требуют ручного вмешательства, но их стоит учитывать при:
- 🔍 Диагностике ошибок (например, если пользователи жалуются на "зависание" базы).
- 📦 Переносе данных между базами.
- 🛠️ Оптимизации производительности (некоторые таблицы, например
v8log, могут сильно разрастаться).
Если база стала работать медленно, проверьте размер таблицы v8log. При большом объёме (более 1 ГБ) её можно очистить через конфигуратор или прямым запросом к СУБД (но только после создания резервной копии!).
Как данные связываются между собой: ссылки и идентификаторы
Все объекты в 1С связаны между собой через уникальные идентификаторы (UID). Это невидимые для пользователя коды, которые гарантируют, что, например, документ РеализацияТоваровУслуг ссылается на правильного контрагента из справочника, даже если его наименование изменилось.
Физически ссылки хранятся в виде:
- 🔢 Числовых идентификаторов (например,
12345) — в файловом варианте базы. - 🆔 GUID (глобально уникальные идентификаторы, например
{A1B2C3D4-5678-90EF-1234-567890ABCDEF}) — в клиент-серверном варианте.
Пример связи документа и справочника:
-- В таблице документа хранится ссылка на контрагента
_Document_РеализацияТоваровУслуг
Контрагент: 00000123 -- это ID записи в справочнике
-- В справочнике хранится фактическая информация
_Catalog_Контрагенты
ID: 00000123
Наименование: "ООО Весна"
ИНН: "7702123456"
Такая система позволяет:
- ✅ Изменять наименования объектов без потери связей.
- ✅ Переносить данные между базами, сохраняя целостность.
- ✅ Восстанавливать связи после сбоев (если идентификаторы не повреждены).
Что такое "битые ссылки"?
Битые ссылки возникают, когда объект (например, документ) ссылается на несуществующий идентификатор в справочнике. Это может произойти при:
- Некорректном удалении элементов справочника.
- Ошибках при переносе данных между базами.
- Повреждении базы данных.
Для поиска битых ссылок используйте обработку "Поиск и замещение ссылок" или прямые SQL-запросы (для опытных пользователей).
Оптимизация хранения: индексы, партиционирование и архивирование
Со временем база 1С может разрастаться до сотен гигабайт, что замедляет её работу. Чтобы этого избежать, используют следующие методы:
Индексы — ускоряют поиск данных. 1С создаёт их автоматически для ключевых полей (например, по дате документа или коду номенклатуры), но иногда требуется ручная настройка, особенно для сложных отчётов.
Партиционирование — разделение больших таблиц на части (например, по годам). Актуально для регистров с миллионами записей. В SQL Server это делается через PARTITION BY, в PostgreSQL — через табличные пространства.
Архивирование — перенос старых данных (например, документов старше 3 лет) в отдельную базу. Это уменьшает размер рабочей базы и ускоряет её работу. Для этого используют:
- 📦 Типовые обработки (например, "Выгрузка данных в архив" в 1С:Бухгалтерии).
- 🔧 Специализированные решения (например, 1С:Архив или StoreHouse).
- 🛠️ Ручное партиционирование через SQL-запросы (для опытных администраторов).
Пример запроса для архивирования документов старше 2020 года:
-- Пример для SQL Server (упрощённо)
INSERT INTO АрхивнаяБаза.dbo._Document_РеализацияТоваровУслуг
SELECT * FROM РабочаяБаза.dbo._Document_РеализацияТоваровУслуг
WHERE Дата < '2020-01-01'
-- После переноса данные удаляются из рабочей базы
DELETE FROM РабочаяБаза.dbo._Document_РеализацияТоваровУслуг
WHERE Дата < '2020-01-01'
Перед архивированием всегда проверяйте, не используются ли старые данные в текущих отчётах. Например, если вы архивируете документы 2018 года, но в 2026 году требуется отчёт за 5 лет, данные должны остаться доступными.
⚠️ Внимание: При архивировании через прямые SQL-запросы есть риск нарушить целостность данных. Всегда делайте резервную копию базы перед такими операциями и тестируйте результат на копии!
⚠️ Внимание: Некоторые операции оптимизации (например, перестроение индексов) требуют эксклюзивного доступа к базе. Планируйте их на время минимальной нагрузки (например, ночью).
FAQ: Частые вопросы о хранении данных в 1С
Можно ли открыть базу 1С без самой программы (например, через SQL)?
Технически да, но это крайне не рекомендуется. Данные в базе хранятся в зашифрованном и сжатом виде (особенно в файловом варианте). Даже в клиент-серверном варианте таблицы имеют сложную структуру с множеством служебных полей. Для безопасного доступа используйте:
- Встроенные отчёты и обработки 1С.
- Специализированные инструменты (например, 1С:Предприятие в режиме отладки).
- Официальные расширения для работы с SQL (если у вас есть права и знания).
Прямое редактирование таблиц может привести к необратимому повреждению данных!
Почему база 1С занимает так много места, если в ней мало документов?
Объём базы зависит не только от количества документов, но и от:
- 📊 Регистров — они хранят историю изменений (например, каждый приход/расход товара фиксируется отдельной записью).
- 📎 Вложенных файлов — если в базе хранятся сканы документов, фотографии товаров и т.д.
- 🗑️ Журналов регистрации — если включён подробный лог действий пользователей.
- 🔄 Версионирования — 1С может хранить несколько версий одного объекта (например, при изменении справочника).
Чтобы уменьшить размер базы:
- Очистите журнал регистрации (
Администрирование → Журнал регистрации → Настройка → Очистить). - Удалите неиспользуемые вложенные файлы (через обработку "Поиск и удаление дублей файлов").
- Выполните тестирование и исправление базы с опцией "Реиндексация таблиц".
Как перенести данные из одной базы 1С в другую?
Существует несколько способов:
- Выгрузка/загрузка через XML — универсальный метод, работает для любых конфигураций. Используйте обработки "Выгрузка данных" и "Загрузка данных" (
Файл → Открыть...). - Обмен через распределённые базы — если базы имеют одинаковую конфигурацию, можно настроить синхронизацию.
- Прямой перенос через SQL — только для опытных пользователей! Требует знания структуры таблиц и может нарушить целостность данных.
- Специализированные обработки — например, "Универсальный обмен данными" или "Конвертация данных".
Самый безопасный способ — использовать типовой обмен через XML. При этом:
- Сначала переносятся справочники (контрагенты, номенклатура и т.д.).
- Затем — документы в хронологическом порядке.
- В конце — регистры (если они не обновляются автоматически при проведении документов).
Можно ли восстановить удалённый документ?
Да, если:
- 🗑️ Документ был удалён через интерфейс 1С (а не физически из базы). В этом случае он помечается как удалённый, но остаётся в таблицах. Его можно восстановить через журнал документов (
Все действия → Установка пометки удаления). - 🔄 Есть резервная копия базы. Тогда документ можно восстановить, откатив базу до состояния на дату до удаления.
- 🛠️ Вы используете механизм версионирования (если он включён в конфигурации).
Если документ был удалён физически (например, через прямой SQL-запрос), восстановить его можно только из резервной копии.
Как защитить данные в базе 1С от потери?
Минимальный набор мер:
- Регулярное резервное копирование — ежедневно, с проверкой целостности бэкапов. Используйте встроенные средства (
Администрирование → Выгрузить информационную базу) или сторонние инструменты (например, SQL Backup для клиент-серверного варианта). - Журнал регистрации — включите его (
Администрирование → Журнал регистрации → Настройка) и настройте архивирование логов. - Разграничение прав — давайте пользователям только те права, которые им необходимы (например, бухгалтер не должен иметь права на изменение конфигурации).
- Тестирование и исправление — регулярно запускайте эту процедуру (
Администрирование → Тестирование и исправление) для проверки целостности данных. - Защита от вирусов — особенно важно для файлового варианта базы (файлы
.1CDмогут быть повреждены вирусами-шифровальщиками).
Для клиент-серверных баз также рекомендуется:
- Настроить репликацию на резервный сервер.
- Использовать RAID-массивы для защиты от сбоя дисков.
- Настроить автоматическое восстановление после сбоев (например, через SQL Server Agent).