К статье
Практический материал

Разработка и Конфигурация · 12 мин

Где хранятся дополнительные реквизиты в 1С 8

Разбираем, где физически хранятся дополнительные реквизиты и сведения в 1С 8: таблицы, планы видов характеристик, запросы и способы найти значения.

Дополнительные реквизиты и дополнительные сведения в 1С 8 не лежат в основной таблице справочника или документа. Платформа хранит их отдельно: в табличной части объекта, в регистре сведений и в специальном плане видов характеристик «ДополнительныеРеквизитыИСведения». Именно поэтому простой запрос к таблице справочника «Номенклатура» не покажет значения дополнительных реквизитов — их нужно доставать соединениями.

Механизм реализован в библиотеке стандартных подсистем (БСП) и работает одинаково в большинстве типовых конфигураций: «Управление торговлей», «ERP», «Комплексная автоматизация», «Бухгалтерия предприятия», «Зарплата и управление персоналом». Понимание структуры хранения нужно при написании запросов, выгрузках в сторонние системы, поиске «потерянных» значений и чистке базы.

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

Три уровня хранения: описание, значения реквизитов, значения сведений

Механизм дополнительных реквизитов устроен трёхслойно. Первый уровень — план видов характеристик «ДополнительныеРеквизитыИСведения». В нём каждому созданному реквизиту или сведению соответствует элемент: там хранятся заголовок, тип значения, признак «это сведение или реквизит», наборы, в которые входит свойство. Физически это отдельная таблица в базе данных.

Второй уровень — табличная часть «ДополнительныеРеквизиты» у самих объектов (справочников, документов). Каждая строка содержит ссылку на элемент плана видов характеристик (поле «Свойство») и значение (поле «Значение»). Ключевой момент: табличная часть принадлежит объекту, поэтому значения реквизитов физически лежат в таблице табличной части конкретного вида объектов, а не в общей таблице.

Третий уровень — регистр сведений «ДополнительныеСведения». В нём два измерения по сути: «Объект» (ссылка на любой объект, к которому привязано сведение) и «Свойство» (ссылка на план видов характеристик), плюс ресурс «Значение». Это единая таблица для всех видов объектов сразу, что отличает сведения от реквизитов.

Чем дополнительный реквизит отличается от дополнительного сведения

Разница принципиальна для понимания хранения. Дополнительный реквизит становится частью объекта: он виден на форме, участвует в обмене данными вместе с объектом, копируется при копировании элемента и удаляется вместе с ним. Значения хранятся в табличной части объекта, и при записи объекта они сохраняются одной транзакцией.

Дополнительное сведение живёт отдельно от объекта. Оно не отображается на форме по умолчанию (только через команду «Дополнительные сведения»), не копируется вместе с объектом и хранится в общем регистре сведений. Свойства со снятым флагом видимости часто используют для служебных данных: идентификаторов внешних систем, технических меток.

При создании свойства в разделе «Администрирование → Общие настройки → Дополнительные реквизиты и сведения» выбор между реквизитом и сведением определяется тем, в какой список вы добавляете свойство. Изменить тип после создания стандартными средствами нельзя — потребуется создать новое свойство и перенести значения обработкой.

Реквизит или сведение

Дополнительный реквизит

Хранится в табличной части объекта, виден на форме, копируется вместе с объектом. Подходит для данных, которые редактирует пользователь.

Дополнительное сведение

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

Где физически находятся таблицы в базе данных

На уровне СУБД имена таблиц формируются платформой и отличаются от имён метаданных. Для файловой базы точное соответствие можно посмотреть через «Конфигуратор → Администрирование → Параметры информационной базы» либо получить структуру хранения функцией ПолучитьСтруктуруХраненияБазыДанных(). Для клиент-серверной базы (MS SQL, PostgreSQL) имена таблиц выглядят как _Reference123, _Reference123_VT456, _InfoRg789 и т.п.

Типовые соответствия таковы: план видов характеристик «ДополнительныеРеквизитыИСведения» — отдельная таблица вида _Chrc…; табличная часть «ДополнительныеРеквизиты» справочника — таблица с суффиксом _VT…, привязанная к таблице справочника; регистр сведений «ДополнительныеСведения» — таблица вида _InfoRg…. Поля внутри также имеют технические имена (_Fld…), поэтому прямые SQL-запросы без карты соответствия писать сложно и рискованно.

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

Как получить значения запросом на встроенном языке

Для реквизитов справочника запрос обращается к табличной части через точку. Пример для номенклатуры: выбираем ссылку, свойство и значение из таблицы «Справочник.Номенклатура.ДополнительныеРеквизиты». Чтобы вместо ссылки на свойство получить его название, соединяем с планом видов характеристик по полю «Свойство».

Для сведений запрос идёт к регистру: «РегистрСведений.ДополнительныеСведения» с полями «Объект», «Свойство», «Значение». Отбор по конкретному свойству удобно делать по ссылке на элемент плана видов характеристик, найденному по имени или по заголовку.

bsl
ВЫБРАТЬ
	ДопРеквизиты.Ссылка КАК Объект,
	ДопРеквизиты.Свойство.Заголовок КАК Свойство,
	ДопРеквизиты.Значение КАК Значение
ИЗ
	Справочник.Номенклатура.ДополнительныеРеквизиты КАК ДопРеквизиты
ГДЕ
	ДопРеквизиты.Ссылка = &Ссылка

Для сведений аналогичный запрос выглядит так: ВЫБРАТЬ Объект, Свойство, Значение ИЗ РегистрСведений.ДополнительныеСведения ГДЕ Объект = &Ссылка. Если нужно вывести значения в отчёт на СКД, в типовых конфигурациях реквизиты и сведения обычно уже доступны в настройках отчёта как поля — платформа и БСП добавляют их автоматически.

Значения дополнительных свойств типа «дополнительное значение»

Если тип свойства — «Дополнительное значение» (свой список значений), то в поле «Значение» хранится ссылка на справочник «ЗначенияСвойствОбъектов» (или «ЗначенияСвойствОбъектовИерархия» в некоторых конфигурациях). Сами текстовые представления значений лежат именно там, поэтому для выгрузки в текстовом виде нужно дополнительное соединение с этим справочником.

Как найти, где хранится конкретное свойство

Практическая задача: свойство создано, но непонятно, реквизит это или сведение и к каким объектам привязано. Порядок проверки: открыть «Администрирование → Общие настройки → Дополнительные реквизиты и сведения», найти свойство в списке. Если оно в разделе «Дополнительные реквизиты» — значения в табличных частях; если в «Дополнительных сведениях» — в регистре сведений.

Привязка к наборам объектов определяется через справочник «НаборыДополнительныхРеквизитовИСведений»: каждый вид объектов (например, «Номенклатура», «Контрагенты», «Партнеры») имеет свой набор, а табличные части набора перечисляют входящие свойства. Если свойство не входит в набор вида объекта, на форме этого объекта оно не появится, хотя физически храниться может.

Как найти значения свойства в базе
  1. 1
    Откройте свойство в разделе «Дополнительные реквизиты и сведения» и определите: реквизит это или сведение.
  2. 2
    Для реквизита постройте запрос к табличной части объекта: Справочник.<Вид>.ДополнительныеРеквизиты.
  3. 3
    Для сведения постройте запрос к РегистрСведений.ДополнительныеСведения с отбором по свойству.
  4. 4
    Соедините с ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения, чтобы получить заголовок свойства.
  5. 5
    Проверьте результат на одном заведомо заполненном объекте через форму элемента.

Типичные ошибки при работе с хранением

Самая частая ошибка — искать значения реквизитов в регистре сведений или наоборот. Симптом: запрос возвращает пустой результат, хотя на форме значения видны. Причина почти всегда в том, что данные лежат в другом месте: реквизит — в табличной части, сведение — в регистре.

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

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

Типичные ошибки
01
Искать реквизиты в регистре сведений и наоборот — запрос возвращает пустоту, хотя данные есть.
02
Соединять таблицы по заголовку свойства — при дублях заголовков значения склеиваются неверно.
03
Писать значения напрямую в таблицы СУБД — обмены и версионирование не регистрируют изменение.
04
Забывать про справочник ЗначенияСвойствОбъектов — вместо текста выгружаются ссылки.
05
Считать, что удалённое свойство удаляет значения — строки табличных частей и регистра могут остаться мусором.

Что происходит при удалении свойства и чистке базы

При пометке на удаление элемента плана видов характеристик значения в табличных частях и регистре сведений физически не стираются мгновенно — они становятся «осиротевшими» записями с битой ссылкой. Удаление помеченных объектов через штатную обработку вычищает такие записи, но до этого момента запросы с соединением по свойству будут показывать NULL или битые ссылки.

Для чистки базы от неиспользуемых свойств безопасный порядок такой: сначала запросом определить, есть ли непустые значения по свойству; затем выгрузить их в файл как резервную копию; после этого очищать значения типовой обработкой группового изменения реквизитов и только потом удалять само свойство. Так вы сохраняете возможность отката.

Контрольные точки

Как проверить результат

Запрос к табличной части объекта
Норма

Возвращает строки со свойством и значением для заполненных объектов

Тревожный признак

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

Запрос к регистру ДополнительныеСведения
Норма

Записи с отбором по свойству и объекту находятся

Тревожный признак

Битые ссылки в поле Свойство — свойство было удалено без чистки значений

Отчёт на СКД с полем доп. реквизита
Норма

Значения выводятся и совпадают с карточкой объекта

Тревожный признак

Поле недоступно — свойство не входит в набор вида объектов

FAQ: частые вопросы о хранении дополнительных реквизитов

Можно ли увидеть дополнительные реквизиты в таблице справочника напрямую?

Нет, в основной таблице справочника или документа их нет. Реквизиты лежат в отдельной таблице табличной части «ДополнительныеРеквизиты», связанной с объектом по ссылке. В запросе это выражается обращением через точку: Справочник.Номенклатура.ДополнительныеРеквизиты.

Почему в запросе значение свойства выводится как непонятная ссылка?

Тип значения свойства — «Дополнительное значение», и в поле хранится ссылка на справочник «ЗначенияСвойствОбъектов». Добавьте соединение с этим справочником и выведите поле «Наименование», чтобы получить текстовое представление.

Переносятся ли дополнительные сведения при обмене между базами?

Только если правила обмена явно предусматривают перенос регистра сведений «ДополнительныеСведения» и плана видов характеристик. В типовых правилах это обычно учтено, но при самописной конвертации регистр часто забывают — проверяйте количество записей после миграции.

Можно ли превратить дополнительный реквизит в обычный реквизит объекта?

Штатной кнопки нет. Нужно добавить обычный реквизит в конфигураторе, затем обработкой перенести значения из табличной части «ДополнительныеРеквизиты» в новый реквизит, проверить результат и только после этого удалять дополнительное свойство.

Где искать значения, если конфигурация самописная и БСП не используется?

Механизм мог быть реализован иначе: через собственный регистр сведений или подчинённый справочник. Откройте в конфигураторе поиск по метаданным слов «Дополнительные» и «Свойства» — найдёте используемые объекты. Логика хранения (отдельное свойство + значение) обычно сохраняется.

Влияет ли большое количество дополнительных реквизитов на производительность?

Каждый реквизит — строка в табличной части, поэтому объекты с десятками свойств записываются и читаются дольше, а запросы с соединениями тяжелеют. Если свойств много и они нужны в отборах, рассмотрите перенос критичных в обычные реквизиты объекта.

Итог

Что важно запомнить

Дополнительные реквизиты хранятся в табличной части объекта, сведения — в регистре сведений «ДополнительныеСведения», а описания свойств — в плане видов характеристик. Для выборки всегда соединяйте значения со свойствами по ссылке, а изменения выполняйте только штатными средствами платформы.