База данных 1С:Предприятие — это не просто хранилище информации, а сложная система, от которой зависит скорость работы, стабильность и масштабируемость всех бизнес-процессов компании. Понимать её устройство критически важно как для администраторов, так и для разработчиков, которые хотят оптимизировать производительность или устранить ошибки. В отличие от классических реляционных СУБД (например, MySQL или PostgreSQL), база имеет уникальную архитектуру, сочетающую в себе объекты метаданных, виртуальные таблицы и физическое хранение данных в файловом или серверном формате.

В этой статье мы детально разберём:

  • 🔹 Физическую структуру базы (файловый и клиент-серверный варианты)
  • 🔹 Логическую модель: как данные организованы в таблицах и индексах
  • 🔹 Механизмы транзакций и блокировок, влияющие на многопользовательскую работу
  • 🔹 Особенности хранения справочников, документов и регистров

Вы узнаете, почему некоторые операции в выполняются медленно, как устроена репликация данных между узлами кластера, и какие инструменты помогают анализировать структуру базы без глубоких знаний SQL.

📊 С какой версией 1С вы работаете чаще всего?
8.3 (обычное приложение)
8.3 (управляемое приложение)
8.2
7.7
Другая

1. Физическая структура базы данных 1С: файловый vs клиент-серверный вариант

База может храниться в двух основных форматах: файловом (для небольших компаний) и клиент-серверном (для распределённых систем). Выбор формата определяет не только производительность, но и возможности масштабирования, резервного копирования, а также устойчивость к сбоям.

В файловом варианте все данные хранятся в одном файле с расширением .1CD (для платформы 8.3). Этот файл включает в себя:

  • 📂 Метаданные (структуру конфигурации: справочники, документы, отчёты)
  • 📊 Данные пользователей (записи в справочниках, документы, регистры)
  • 🔑 Индексы и служебную информацию для ускорения поиска

Файловый вариант прост в настройке и не требует отдельного сервера, но имеет ограничения: максимальный размер базы — до 128 ГБ (в зависимости от версии платформы), а при одновременной работе более 10–15 пользователей возникают задержки из-за блокировок файла.

В клиент-серверном варианте данные хранятся в SQL-сервере (Microsoft SQL Server, PostgreSQL, IBM DB2 или Oracle). Здесь выступает как приложение, которое управляет данными через SQL-запросы, но сама структура таблиц остаётся специфичной для платформы. Преимущества:

  • 🚀 Высокая производительность при работе сотен пользователей
  • 🛡️ Отказоустойчивость (репликация, кластеризация, резервное копирование на уровне СУБД)
  • 📈 Масштабируемость (можно распределять нагрузку между несколькими серверами)
⚠️ Внимание: При переходе с файлового на клиент-серверный вариант требуется полная выгрузка и загрузка данных через Конфигуратор → Администрирование → Выгрузить информационную базу. Не все объекты (например, внешние отчёты) переносятся автоматически — их придётся донастраивать вручную.
Параметр Файловый вариант Клиент-серверный вариант
Максимальный размер базы До 128 ГБ Ограничен только СУБД (терабайты)
Количество пользователей До 15–20 Сотни/тысячи
Требуемое ПО Только платформа 1С Платформа 1С + SQL-сервер
Резервное копирование Копирование файла .1CD Инструменты СУБД (BACKUP DATABASE)

2. Логическая структура: таблицы, индексы и объекты метаданных

Вне зависимости от физического формата, логическая структура базы строится на трёх ключевых компонентах:

  1. Объекты метаданных (справочники, документы, регистры и т. д.) — определяют что хранится в базе.
  2. Таблицы базы данныхкак хранится информация на уровне СУБД.
  3. Индексы и связи — обеспечивают быстрый доступ к данным.

Каждый объект конфигурации (например, справочник Номенклатура или документ РеализацияТоваровУслуг) преобразуется платформой в набор таблиц. Например, справочник Контрагенты в клиент-серверном варианте будет представлен как:

  • 📋 Основная таблица _Reference{ГУИД} — хранит реквизиты (наименование, ИНН, адрес)
  • 🔗 Таблица связей _Reference{ГУИД}_VT{ГУИД} — для подчинённых справочников (например, контакты контрагента)
  • 🔍 Индексная таблица — ускоряет поиск по полям (например, по ИНН)

Особенность в том, что она не использует классическую реляционную модель. Вместо нормализованных таблиц с внешними ключами платформа оперирует виртуальными таблицами, которые формируются динамически при выполнении запросов. Например, запрос к регистру накопления ТоварыНаСкладах не обращается напрямую к физическим таблицам, а проходит через механизм виртуальных таблиц, который оптимизирует доступ к данным.

SELECT * FROM INFORMATION_SCHEMA.TABLES

WHERE TABLE_NAME LIKE '_Reference%' OR TABLE_NAME LIKE '_Document%'

Это поможет понять, как платформа хранит объекты конфигурации на низком уровне.-->

3. Механизмы транзакций и блокировок: почему 1С иногда "тормозит"

Одна из самых болезненных тем для пользователей замедление работы при одновременном редактировании данных. Это связано с механизмом транзакций и блокировок, который гарантирует целостность информации, но может создавать "пробки".

В используется пессимистичная модель блокировок: когда пользователь начинает редактировать документ или элемент справочника, объект блокируется для других пользователей до завершения транзакции (сохранения или отмены изменений). Это предотвращает конфликты, но приводит к:

  • Ожиданию при попытке открыть заблокированный объект
  • 🔄 Тайм-аутам (если транзакция длится слишком долго)
  • 💥 Ошибкам типа "Объект заблокирован другим пользователем"

В клиент-серверном варианте блокировки реализуются на уровне SQL-сервера, а в файловом — на уровне файла базы данных. Причём в файловом варианте блокируется весь файл целиком, что и вызывает тормоза при параллельной работе.

⚠️ Внимание: Длительные транзакции (например, при проведении документов с большим количеством движений по регистрам) могут блокировать работу других пользователей на несколько минут. Чтобы уменьшить риски, используйте:
  • 🔧 Фоновые задания для массовых операций
  • 📊 Разбивку больших документов на части (например, через механизм Разделение документов)
  • Оптимизацию запросов (избегайте выборок типа ВЫБРАТЬ ПЕРВЫЕ 1000000)
💡

Чем дольше транзакция, тем выше риск блокировок. Оптимальное время выполнения операции — не более 1–2 секунд. Если документ проводится дольше, его стоит разбить или перенести в фоновое задание.

4. Регистры: как 1С хранит данные для отчётов и аналитики

Регистры — это основа аналитики в . Они позволяют быстро получать сводные данные по остаткам, оборотам, расчётам и другим показателям без перебора всех документов. В платформе существует четыре типа регистров:

  1. Регистры накопления — для учёта остатков и оборотов (например, товары на складах).
  2. Регистры бухгалтерии — для бухгалтерских проводок.
  3. Регистры расчёта — для начислений (зарплата, налоги).
  4. Регистры сведений — для хранения справочной информации (курсы валют, цены номенклатуры).

Каждый регистр физически хранится в виде нескольких таблиц:

  • 📈 Таблица итогов — содержит предварительно рассчитанные остатки/обороты (обновляется при проведении документов).
  • 📑 Таблица движений — хранит все изменения (например, приход/расход товара).
  • 🔍 Индексные таблицы — ускоряют доступ по измерениям (склад, номенклатура, период).

Главное преимущество регистров — быстрота получения данных. Например, запрос остатков товара на складе выполняется за доли секунды, потому что платформа берёт данные из таблицы итогов, а не суммирует все приходные и расходные документы.

Что происходит при перепроведении документов?

При перепроведении полностью пересчитывает движения по регистрам за затронутый период. Это может занять часы, если в базе миллионы документов. Чтобы избежать простоя, используйте механизм помеченных на удаление объектов или частичное перепроведение через Регламентные задания.

5. Индексы и оптимизация запросов: как ускорить работу базы

Медленные запросы — одна из самых распространённых проблем в . Чаще всего они связаны с отсутствием индексов или неэффективной структурой запроса. Платформа автоматически создаёт индексы для основных полей (например, Ссылка или Дата), но для сложных отчётов этого бывает недостаточно.

Основные правила оптимизации:

  • 🔍 Индексируйте поля, по которым часто ищут данные (например, ИНН в справочнике Контрагенты).
  • 🚫 Избегайте ПОДОБНО (LIKE) с символом % в начале строки — это приводит к полному сканированию таблицы.
  • 📊 Используйте виртуальные таблицы вместо прямого обращения к регистрам (например, РегистрНакопления.ТоварыНаСкладах.Остатки).
  • 🔄 Разбивайте сложные запросы на несколько простых с использованием временных таблиц.

Пример неоптимизированного запроса, который тормозит базу:

ВЫБРАТЬ

Номенклатура.Наименование,

СУММА(ТоварыНаСкладахОбороты.Количество) КАК Оборот

ИЗ

Документ.РеализацияТоваровУслуг КАК Реализация

ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Обороты КАК ТоварыНаСкладахОбороты

ПО Реализация.Ссылка = ТоварыНаСкладахОбороты.Регистратор

ГДЕ

Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода

И Номенклатура.Наименование ПОДОБНО "%тест%"

Проблемы здесь:

  • 🔴 Поиск по ПОДОБНО "%тест%" не использует индексы.
  • 🔴 Соединение по Регистратор может быть ресурсоёмким, если документов много.

Оптимизированный вариант:

ВЫБРАТЬ

Номенклатура.Наименование,

СУММА(ТоварыНаСкладахОбороты.Количество) КАК Оборот

ИЗ

РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода, &КонецПериода,) КАК ТоварыНаСкладахОбороты

ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура

ПО ТоварыНаСкладахОбороты.Номенклатура = Номенклатура.Ссылка

ГДЕ

Номенклатура.Наименование СОДЕРЖИТ "тест"

⚠️ Внимание: В клиент-серверном варианте может автоматически создавать недостающие индексы, но это не всегда оптимально. Проверяйте план выполнения запросов через Объяснить запрос в Конфигураторе или анализируйте статистику SQL-сервера.

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

Потеря данных в может парализовать работу компании на дни. Поэтому резервное копирование — обязательная процедура, но подходы отличаются в зависимости от формата базы.

Для файлового варианта достаточно:

  1. Остановить всех пользователей (через Администрирование → Пользователи).
  2. Скопировать файл .1CD и каталог с внешними файлами (если есть).
  3. Сохранить копию в облако или на внешний носитель.

Для клиент-серверного варианта процесс сложнее:

  • 🔄 Использовать инструменты СУБД (например, SQL Server Backup или pg_dump для PostgreSQL).
  • 📁 Резервировать не только базу данных, но и конфигурацию (файл .cf).
  • ⏱️ Настраивать регулярные автоматические бэкапы (например, раз в час для критичных систем).

Сверить дату создания бэкапа с актуальной версией базы|Проверить целостность файла (например, через chdbfl.exe для файлового варианта)|Убедиться, что версия платформы совпадает с версией бэкапа|Протестировать восстановление на тестовом стенде-->

Восстановление из резервной копии:

  • 📂 Для файлового варианта: заменить файл .1CD и перезапустить .
  • 🖥️ Для клиент-серверного: восстановить базу через SQL-сервер, затем обновить ссылку на информационную базу в Конфигураторе.
⚠️ Внимание: При восстановлении базы из бэкапа все изменения после даты копирования будут утеряны. Если нужно вернуть только часть данных (например, случайно удалённый документ), используйте механизм пообъектного восстановления через Все функции → Стандартные → Восстановление данных.

7. Распределённые базы и обмен данными: работа с филиалами

Если у компании несколько филиалов или удалённых складов, возникает задача синхронизации данных между базами. поддерживает несколько механизмов распределённой работы:

  • 🔄 Распределённая информационная база (РИБ) — классический способ обмена данными между головным офисом и филиалами.
  • 📡 Обмен через XML/JSON — универсальный формат для интеграции с другими системами.
  • ☁️ Облачные сервисы (например, 1С:Fresh или 1С:EDT) — для работы через интернет.

В РИБ данные делятся на:

  • 📌 Общие (справочники, планы счетов) — синхронизируются во все узлы.
  • 📍 Локальные (документы филиала) — остаются только в своём узле.

Пример настройки обмена в РИБ:

  1. В Конфигураторе открыть Администрирование → Распределённые информационные базы.
  2. Добавить новый узел, указав его Идентификатор и Адрес (например, \\Server\1C\Filial1).
  3. Настроить правила обмена (какие объекты синхронизировать).
  4. Запустить начальную выгрузку данных через Обмен данными → Выгрузить изменения.
⚠️ Внимание: При настройке РИБ убедитесь, что идентификаторы объектов (ГУИДы) не конфликтуют между узлами. Если в двух базах есть справочник с одинаковым ГУИДом, при обмене данные перезапишутся. Для избежания проблем используйте уникальные префиксы при создании новых объектов.

8. Анализ и диагностика базы: инструменты для администраторов

Для поддержки базы в рабочем состоянии администраторам нужны инструменты диагностики. Вот ключевые из них:

Инструмент Назначение Как запустить
chdbfl.exe Проверка целостности файловой базы Командная строка: chdbfl.exe /F "C:\Base\1Cv8.1CD" /L
Тестирование и исправление Поиск и устранение ошибок в базе Конфигуратор → Администрирование → Тестирование и исправление
Журнал регистрации Мониторинг действий пользователей и ошибок Конфигуратор → Администрирование → Журнал регистрации
SQL Profiler Анализ медленных запросов (для клиент-серверного варианта) Встроен в Microsoft SQL Server Management Studio

Пример использования chdbfl.exe для восстановления повреждённой базы:

chdbfl.exe /F "C:\Base\damaged.1CD" /R /L "C:\Base\log.txt"

Ключи:

  • /F — путь к файлу базы.
  • /R — режим восстановления.
  • /L — файл лога для записи ошибок.

Если база сильно повреждена, может потребоваться:

  1. Восстановить из резервной копии.
  2. Выгрузить данные в XML/DT и загрузить в новую базу.
  3. Обратиться в службу поддержки для глубокой диагностики.
💡

Регулярная проверка базы через Тестирование и исправление (хотя бы раз в месяц) помогает предотвратить накопление ошибок, которые потом придётся устранять вручную.

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

🔹 Почему база 1С растёт очень быстро, хотя данных мало?

Это связано с:

  • 🗑️ Накоплением временных данных (например, неочищенные регистры сведений).
  • 📝 Версионированием объектов (при каждом изменении создаётся новая версия).
  • 🔄 Логами транзакций (в клиент-серверном варианте).

Решение: выполните Тестирование и исправление с опцией Реструктуризация таблиц и настройте регламентное задание для очистки устаревших данных.

🔹 Можно ли открыть файл .1CD без 1С?

Нет, формат .1CD проприетарный и не документирован. Однако можно:

  • 🔧 Использовать утилиты вроде 1Cv8.DT для выгрузки данных в читаемый формат.
  • 📊 Подключиться к базе через ODBC (только для клиент-серверного варианта).
🔹 Как перенести базу с файлового на клиент-серверный вариант?

Порядок действий:

  1. Создать новую базу на SQL-сервере через Конфигуратор.
  2. Выгрузить данные из файловой базы в DT-файл (Администрирование → Выгрузить информационную базу).
  3. Загрузить DT-файл в новую базу.
  4. Перенастроить подключения пользователей.

⚠️ Важно: После переноса проверьте права доступа и регламентные задания — они не всегда переносятся автоматически.

🔹 Почему после обновления конфигурации база работает медленнее?

Причины:

  • 🔄 Перестроение индексов (требуется время после обновления).
  • 📈 Новые объекты конфигурации, для которых не настроены индексы.
  • 🔧 Изменения в алгоритмах (например, добавлены сложные запросы в отчёты).

Решение: выполните Тестирование и исправление с опцией Пересчёт итогов и проанализируйте медленные запросы через SQL Profiler.

🔹 Как узнать, кто блокирует базу?

Способы:

  • 🖥️ В Конфигураторе: Администрирование → Активные пользователи.
  • 📊 В SQL Server Management Studio: запрос sp_who2 (для клиент-серверного варианта).
  • 📋 В журнале регистрации: фильтр по событию Блокировка.

Если блокировка длится слишком долго, можно принудительно отключить пользователя через Администрирование → Активные пользователи → Завершить работу.