← Назад к вопросам
В чем разница между хранением информации в регистре сведений и в табличной части?
2.0 Middle🔥 221 комментариев
#Регистры#СУБД и хранение
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Регистр сведений vs Табличная часть
Это два способа хранения дополнительной информации, каждый с собственными преимуществами и недостатками. Выбор правильного подхода критичен для производительности.
Регистр сведений
Регистр сведений — отдельная таблица в БД для хранения свойств объектов:
- Независимая таблица в базе данных
- Может содержать информацию о многих объектах
- Поддерживает многомерность (иерархические ключи)
- Позволяет быстрый поиск и фильтрацию по ключам
- Данные существуют независимо от документа
- Легко запрашивать информацию за период
- Оптимален для исторических и периодических данных
- Используется для остатков, движений, сведений
Табличная часть
Табличная часть — встроенная таблица внутри документа:
- Часть структуры документа
- Хранится в одной записи документа
- Загружается вместе с документом целиком
- Данные жестко привязаны к документу
- Удаление документа = удаление всех строк
- Быстрый доступ к строкам документа
- Небольшой размер (до 1-2 МБ в документе)
- Используется для подробностей, спецификаций
Практические различия
| Параметр | Регистр сведений | Табличная часть |
|---|---|---|
| Хранилище | Отдельная таблица БД | Таблица документа |
| Независимость | Независимо от объекта | Зависит от документа |
| Размер данных | Большой объём | Ограничено (МБ) |
| Скорость загрузки | Быстро нужные строки | Вся таблица целиком |
| Запросы | По всем объектам | Только текущего док. |
| История | Сохраняется | Переписывается |
| Примеры | Остатки, цены | Товары в накладной |
Примеры использования
// Регистр сведений - информация о ценах товаров
РегистрСведений.ЦеныТоваров.УстановитьНовый();
РегистрСведений.ЦеныТоваров.Товар = ТекущийТовар;
РегистрСведений.ЦеныТоваров.Дата = ТекущаяДата();
РегистрСведений.ЦеныТоваров.Цена = НоваяЦена;
РегистрСведений.ЦеныТоваров.Записать();
// Табличная часть - товары в накладной
Документ = Новый ДокументОбъект.ПриходнаяНакладная();
Строка = Документ.Товары.Добавить();
Строка.Товар = Справочник.Товары.ПолучитьСсылку(УИД);
Строка.Количество = 10;
Когда использовать каждый
Регистр сведений лучше для:
- Информации, необходимой из разных мест (цены, курсы валют)
- Истории изменений (хронология зарплаты, льготы)
- Остатков и накопленных движений
- Больших объёмов данных
- Частых запросов по разным критериям
Табличная часть лучше для:
- Деталей документа (товары в накладной)
- Строк, существующих только в контексте документа
- Небольших объёмов данных (до нескольких сотен строк)
- Данных, которые не нужны в других документах
- Когда нужна атомарность (всё вместе или ничего)
Производительность
Регистры сведений обычно быстрее при работе с большим количеством данных, так как индексируются по ключам. Табличные части эффективнее для документов с небольшим числом строк, так как загружаются целиком из памяти.