Что происходит внутри информационной базы 1С 8.3

· 10 мин

Содержание

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

Структура одна и та же в обоих случаях, меняются особенности: как работают блокировки, как делать резервную копию, где искать причину тормозов. Если понимать эти слои, проще найти, где именно база теряет скорость или данные. Материал общий для платформы и не зависит от конфигурации: БП, ЗУП и УТ хранят данные одинаково.

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

Файловый вариант

Вся база — один файл 1Cv8.1CD в каталоге информационной базы. Внутри него собственный формат платформы: и данные, и сама конфигурация, и служебные таблицы. Рядом лежат:

  • 📄 файл блокировки 1Cv8.cdn — появляется, пока с базой кто-то работает;
  • 📁 каталог 1Cv8Log — журнал регистрации;
  • 📁 временные файлы сеансов.

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

Клиент-серверный вариант

Здесь участвуют три звена:

  1. Клиент — тонкий клиент, толстый клиент или браузер.
  2. Кластер серверов 1С — процессы ragent (агент, порт 1540), rmngr (менеджер кластера, порт 1541) и rphost (рабочие процессы, диапазон портов задаётся в свойствах рабочего сервера, по умолчанию 1560–1591).
  3. СУБД — хранит таблицы и выполняет SQL-запросы.

Клиент никогда не обращается к СУБД напрямую. Он передаёт код и запросы серверу 1С, а тот переводит запрос на языке 1С в SQL нужного диалекта.

Чем варианты отличаются на практике

ПараметрФайловаяКлиент-серверная
Где данныеодин файл 1Cv8.1CDтаблицы в СУБД
Пользователей комфортнодо 5–10десятки и сотни
Блокировки при записина всю таблицуна уровне записей
Резервная копиякопия файла или .dtсредствами СУБД или .dt
Обслуживаниеchdbfl.exe, тестирование и исправлениерегламенты СУБД
Стоимостьтолько клиентские лицензииплюс лицензия сервера 1С и, при MS SQL, СУБД

PostgreSQL в сборке для 1С бесплатен. Это частый выбор, когда файловая база выросла, а на MS SQL нет бюджета.

Как метаданные превращаются в таблицы СУБД

Если открыть базу в SQL Server Management Studio или pgAdmin, привычных названий «Контрагенты» или «РеализацияТоваровУслуг» там не будет. Таблицы и поля имеют служебные имена с номерами.

Как называются таблицы

Объект метаданныхТаблица в СУБД
Справочник_Reference123
Документ_Document456
Табличная часть документа_Document456_VT789
Регистр сведений_InfoRg100
Регистр накопления_AccumRg200 и таблицы итогов _AccumRgT…
Регистр бухгалтерии_AccRg300 и таблицы итогов
Перечисление_Enum50
Константа_Const10

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

Как узнать, какая таблица чья

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

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

Второй параметр Истина возвращает имена таблиц и полей в терминах СУБД. Без него — в терминах платформы.

Как хранятся ссылки и даты

  • 🔑 Ссылка на объект — 16-байтный уникальный идентификатор (binary(16) в MS SQL). Поэтому ссылки не повторяются между базами и переживают выгрузку-загрузку.
  • 📅 Даты в MS SQL могут храниться со смещением 2000 лет. Этот параметр выбирают при создании базы на сервере. Если вы читаете таблицы внешними средствами и видите 4026 год вместо 2026, дело в смещении.
  • 🧩 Составной тип реквизита превращается в несколько полей: признак типа, номер таблицы и само значение.

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

Не меняйте данные базы 1С прямыми SQL-запросами. Платформа не узнает об изменениях: сломаются итоги регистров, версии объектов и обмены. Чтение внешними средствами допустимо, запись — только через 1С.

Транзакции и блокировки: откуда берутся ожидания

Любая запись в 1С идёт в транзакции. Проведение документа — это одна транзакция: запись шапки, табличных частей, движений по всем регистрам. Если что-то упало, откатывается всё целиком.

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

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

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

Почему 1С «тормозит» из-за блокировок

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

Превышено максимальное время ожидания предоставления блокировки

Взаимоблокировка выглядит иначе — сервер выбирает «жертву» и откатывает её транзакцию:

Конфликт блокировок при выполнении транзакции

Типичные причины:

  • 🐢 долгое проведение — в транзакции выполняются тяжёлые запросы;
  • 📦 массовые операции в рабочее время: перепроведение, закрытие месяца , загрузка обменов;
  • 🧮 все документы пишут в одну и ту же строку итогов.

У регистров накопления и бухгалтерии есть свойство «Разрешить разделение итогов». Оно позволяет параллельным транзакциям писать в разные строки итогов и снимает часть конфликтов на одних и тех же измерениях.

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

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

Документ — это факт события. Отчёты строятся не по документам, а по регистрам: туда документ при проведении записывает движения.

Какие регистры бывают

РегистрЧто хранитПример
Регистр сведенийзначение на дату или без датыцены, курсы валют
Регистр накопления (остатки)приход и расход с остаткомтовары на складах
Регистр накопления (обороты)только оборотыпродажи
Регистр бухгалтериипроводки Дт/Кт по плану счетовхозрасчётный регистр в БП
Регистр расчётаначисления с периодом действиязарплата в ЗУП

Зачем нужны таблицы итогов

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

Отсюда практический вывод. Если отчёт показывает странные остатки, а движения верные, проблема может быть в итогах. Их пересчитывают:

  • в режиме Предприятие — через Все функции → Стандартные → Управление итогами;
  • в Конфигураторе — галочкой «Пересчёт итогов» в режиме тестирования и исправления.

У регистров сведений есть похожий механизм для быстрых запросов к последним значениям — таблицы среза последних. Его включают в свойствах регистра.

Индексы и регламентное обслуживание базы данных

Платформа сама создаёт индексы по ссылке, коду, наименованию, номеру и дате, по измерениям регистров. Для остальных реквизитов индекс включает разработчик свойством «Индексировать».

Когда индекс нужен

  • 🔍 реквизит участвует в условиях отбора запросов и списков;
  • 📋 по нему часто фильтруют динамические списки;
  • 🔗 по реквизиту соединяют таблицы в отчётах.

Лишние индексы замедляют запись: каждое проведение обновляет их все. Индексировать реквизит «Комментарий» почти никогда не нужно.

Регламент для СУБД

Индексы со временем фрагментируются, статистика устаревает. СУБД начинает выбирать плохие планы запросов, и база медленно деградирует без видимых причин.

ЗадачаMS SQL ServerPostgreSQL
Обновление статистикиежедневно, ночьюANALYZE или автовакуум
Дефрагментация индексовреорганизация еженедельноREINDEX по необходимости
Очистка мёртвых строкне требуетсяVACUUM
Очистка процедурного кешапосле обновления статистикине требуется

Для файловой базы аналог — периодическое тестирование и исправление со сжатием таблиц.

Регламентное обслуживание базы 1С
Выполнено: 0 / 6

Резервное копирование базы 1С: три способа и их ограничения

Выгрузка в .dt

Конфигуратор → Администрирование → Выгрузить информационную базу. Файл .dt содержит конфигурацию и все данные в формате, не зависящем от СУБД. Через него переносят базу с файлового варианта на сервер и обратно.

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

Копия файла 1Cv8.1CD

Для файловой базы — самый быстрый способ. Но копировать файл можно только когда в базе никто не работает . Копия «на ходу» может оказаться неконсистентной.

Средства СУБД

Для серверной базы основной способ. Полная копия раз в сутки плюс копии журнала транзакций каждые 15–60 минут позволяют восстановиться почти на любую минуту. В MS SQL для этого нужна модель восстановления Full.

СпособСкоростьВосстановление на моментПользователи во время копии
.dtмедленнотолько на момент выгрузкилучше без них
Копия .1CDбыстрона момент копиитолько без них
Бэкап СУБДбыстрона любую минуту (Full)работают

Копия, которую ни разу не восстанавливали, — не копия. Раз в месяц разворачивайте её в тестовую базу и открывайте.

Распределённая база и обмены данными между филиалами

Когда у компании несколько офисов без надёжной связи, базу делят на узлы. Механизм строится на планах обмена: в них платформа регистрирует, какие объекты изменились и в какой узел их нужно отправить.

Распределённая информационная база (РИБ)

  • 🏢 Все узлы работают на одной конфигурации.
  • 👑 Есть главный узел, конфигурацию меняют только в нём. Изменения уходят в подчинённые узлы вместе с данными.
  • 🔄 Можно настроить фильтры: филиал получает только свои склады и организации.

Обмен между разными конфигурациями

Например, УТ и БП. Здесь используется универсальный формат EnterpriseData или правила конвертации. Объекты сопоставляются по реквизитам, а не по ссылкам, поэтому возникают дубли, если сопоставление настроено плохо.

Частая проблема обменов — разросшиеся таблицы регистрации изменений. Если узел давно не выгружался, по нему копятся миллионы записей, и каждое проведение тормозит. Неиспользуемые узлы удаляют из плана обмена.

Диагностика: чем смотреть, что происходит в базе

ИнструментЧто показываетКогда применять
Журнал регистрациикто, когда и что изменил, ошибкиразбор инцидентов, аудит
Технологический журнал (logcfg.xml)запросы, блокировки, взаимоблокировки, длительностьтормоза и конфликты на сервере
Консоль кластерасеансы, соединения, нагрузка рабочих процессовзависшие сеансы, перегрузка
Замер производительности в Конфигураторевремя выполнения каждой строки кодамедленная операция у одного пользователя
Тестирование и исправлениеошибки структуры и ссылочной целостностипосле сбоя, перед обновлением
chdbfl.exeпроверка физической целостности .1CDфайловая база не открывается

Тестирование и исправление

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

Режим требует монопольного доступа: все сеансы пользователей нужно завершить заранее. Запускайте его после рабочего дня и только после свежей резервной копии — исправление удаляет или создаёт объекты, и результат не всегда тот, что ожидаете.

chdbfl.exe

Утилита лежит в каталоге bin установленной платформы. Проверяет файл 1Cv8.1CD на уровне страниц без запуска Конфигуратора. Помогает, когда база после сбоя питания не открывается вовсе.

Технологический журнал

Настраивается файлом logcfg.xml в каталоге conf платформы. Включайте его только на время расследования и с отбором событий: полный журнал за час работы может занять десятки гигабайт.

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

Можно ли подключиться к базе 1С из Excel или Power BI напрямую через SQL?
Читать можно, но имена таблиц служебные, а ссылки двоичные. Удобнее выгружать данные через OData-интерфейс или HTTP-сервис самой 1С.
Какой максимальный размер у файловой базы 1С?
Жёсткого предела, который мешал бы обычной работе, в современных версиях нет. Ограничивает другое: при объёме в несколько десятков гигабайт и большом числе пользователей файловая база заметно тормозит.
Почему после перехода с файловой базы на сервер база стала больше?
СУБД хранит данные с запасом на страницах, держит журнал транзакций и индексы отдельно. Рост объёма в разы — нормальная картина.
Можно ли перенести базу с MS SQL на PostgreSQL?
Да, через выгрузку в .dt и загрузку в новую базу на сервере с PostgreSQL. Структуру таблиц платформа создаст заново.
Где хранятся настройки пользователей?
В служебных таблицах той же информационной базы. Поэтому при переносе базы через .dt настройки отчётов и форм переезжают вместе с данными.