Администрирование · 12 мин
Где хранятся дополнительные сведения в 1С
Разбираем, где физически хранятся дополнительные сведения в 1С: регистр сведений «Дополнительные сведения», план видов характеристик, хранение в файловой и клиент-серверной базе.
Дополнительные сведения в типовых конфигурациях 1С (Управление торговлей, ERP, Комплексная автоматизация, Бухгалтерия и других) хранятся не в самих справочниках и документах, а в отдельном служебном механизме — подсистеме «Свойства» из Библиотеки стандартных подсистем (БСП). Поэтому, открыв структуру таблиц базы, вы не найдёте колонку с вашим дополнительным свойством в таблице номенклатуры или контрагентов: значения лежат в универсальном регистре сведений.
Такое устройство позволяет добавлять произвольные характеристики любым объектам без изменения конфигурации и без доработки структуры базы данных. Но оно же создаёт типичные вопросы: как найти значения в SQL, почему доп. сведение «пропало» после обновления, как получить его запросом и чем дополнительные сведения отличаются от дополнительных реквизитов.
Ниже разобрано физическое хранение данных, отличие сведений от реквизитов, способы получить значения через запрос и напрямую из СУБД, а также типичные ошибки при работе с этим механизмом.
Как устроен механизм дополнительных сведений в типовых конфигурациях
Механизм реализован в Библиотеке стандартных подсистем и состоит из трёх ключевых объектов метаданных. Первый — план видов характеристик «ДополнительныеРеквизитыИСведения»: каждый его элемент описывает одно свойство (наименование, тип значения, наборы, в которые оно входит). Второй — регистр сведений «ДополнительныеСведения»: именно здесь физически лежат значения дополнительных сведений. Третий — табличная часть «ДополнительныеРеквизиты» в самих справочниках и документах, но она используется для другого подмеханизма — дополнительных реквизитов.
Запись в регистре сведений содержит измерение «Объект» (ссылка на конкретный элемент справочника или документ), измерение «Свойство» (ссылка на элемент плана видов характеристик) и ресурс «Значение» универсального составного типа. Благодаря этому одна таблица обслуживает все объекты конфигурации: контрагентов, номенклатуру, пользователей, договоры и любые другие сущности, к которым подключены свойства.
Важно понимать: дополнительные сведения не участвуют в проведении документов и не влияют на учётные механизмы. Это описательная информация — примечания, классификаторы, внешние коды, — предназначенная для отображения, отборов в отчётах и печатных формах.
Чем дополнительные сведения отличаются от дополнительных реквизитов
В интерфейсе типовых конфигураций оба вида свойств создаются в одном месте («Администрирование → Общие настройки → Дополнительные реквизиты и сведения»), поэтому их часто путают. Разница принципиальна именно в месте хранения.
Дополнительный реквизит хранится в табличной части «ДополнительныеРеквизиты» конкретного объекта — то есть значение физически лежит в той же таблице СУБД, что и сам элемент справочника, в присоединённой табличной части. Дополнительное сведение хранится централизованно в едином регистре сведений, отдельно от объекта.
Практические следствия: дополнительные реквизиты выводятся прямо на форму объекта в основной группе полей, а дополнительные сведения — на отдельной закладке «Дополнительно» или в панели. Реквизиты удобнее для обязательных к заполнению полей, сведения — для необязательной справочной информации, которую не нужно показывать постоянно.
Сравнение вариантов
Хранится в табличной части объекта. Подходит для обязательных полей на форме. Ограничение: увеличивает таблицу самого объекта.
Хранится в общем регистре сведений «ДополнительныеСведения». Подходит для необязательной информации. Ограничение: не выводится в шапку формы без доработки.
Хранится в основной таблице объекта, работает быстрее всего. Ограничение: снимает конфигурацию с полной поддержки, усложняет обновления.
Где физически находятся данные: файловая и клиент-серверная база
В файловой базе все данные, включая регистр дополнительных сведений, находятся внутри одного файла 1Cv8.1CD. Отдельно «достать» таблицу регистра штатными средствами ОС нельзя — только через конфигуратор, запросы или выгрузку.
В клиент-серверном варианте (MS SQL Server, PostgreSQL) регистр сведений «ДополнительныеСведения» отображается в таблицу с именем вида _InfoRgNNNN, а план видов характеристик — в таблицу вида _ChrcNNN. Конкретный номер таблицы зависит от конфигурации и порядка создания объектов, поэтому искать «наугад» по имени бессмысленно.
Чтобы узнать точное имя таблицы, используйте штатную обработку «Получить структуру хранения базы данных» (публикуется на диске ИТС и в составе инструментов разработчика). Она покажет соответствие: объект метаданных → имя таблицы СУБД → назначение полей. Альтернатива — запрос к служебной таблице _YearOffset/Params не требуется: достаточно сопоставления, которое выдаёт обработка.
Как получить значения дополнительных сведений запросом
Стандартный способ — левое соединение основной таблицы с регистром сведений по объекту и свойству. Типовой шаблон выглядит так: выбираем справочник, присоединяем РегистрСведений.ДополнительныеСведения по условию «Объект = Ссылка» и «Свойство = &Свойство», где параметр — ссылка на нужный элемент плана видов характеристик.
ВЫБРАТЬ
Номенклатура.Ссылка КАК Товар,
ДопСведения.Значение КАК АртикулПоставщика
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСведения КАК ДопСведения
ПО ДопСведения.Объект = Номенклатура.Ссылка
И ДопСведения.Свойство = &СвойствоЕсли свойств несколько, для каждого добавляется отдельное соединение с собственным псевдонимом и отбором по свойству. Соединять регистр без условия на свойство нельзя — получите декартово произведение и дубли строк.
В отчётах на СКД дополнительные сведения обычно доступны без ручного соединения: типовые наборы данных уже включают характеристики, и в конструкторе настроек отчёта можно добавить нужное свойство через «Дополнительные поля». Это самый быстрый способ вывести сведение в отчёт без программирования.
Как найти нужное свойство в плане видов характеристик
Откройте «Администрирование → Общие настройки → Дополнительные реквизиты и сведения → Дополнительные сведения», найдите свойство по наименованию и скопируйте ссылку на него. В коде удобно искать свойство по имени через ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(...), но надёжнее хранить ссылку в константе или параметре, так как наименование могут переименовать.
Как массово заполнить или перенести дополнительные сведения
Для разового заполнения используйте обработку «Групповое изменение реквизитов» (в типовых — «Администрирование → Обслуживание → Корректировка данных»): она умеет работать и с дополнительными сведениями. Отбираете список объектов, выбираете свойство, задаёте значение — обработка корректно создаст записи в регистре.
При миграции данных между базами (например, из УТ 10 в УТ 11) дополнительные сведения переносятся как две связанные порции: сначала элементы плана видов характеристик (описания свойств), затем записи регистра сведений с привязкой по объекту и свойству. Пропуск первого шага — частая причина «пустых» свойств после переноса: значения есть, но описания свойств не найдены.
Почему дополнительное сведение «пропало» и как это проверить
Чаще всего значение не удалено, а просто не выводится. Проверьте последовательно: входит ли свойство в набор дополнительных сведений для данного вида объектов (наборы настраиваются там же, в «Дополнительных реквизитах и сведениях»); есть ли у пользователя права на чтение регистра и плана видов характеристик; не отключён ли показ панели дополнительных сведений на форме.
Если значение пропало после обновления конфигурации, проверьте, не изменился ли набор свойств или не было ли свойство помечено на удаление. Сами записи регистра при обновлении типовые механизмы не очищают — потеря почти всегда связана с настройками отображения или правами.
Как проверить результат
Запрос к регистру «ДополнительныеСведения» по объекту возвращает значение
Запрос пуст — значение не сохранялось или объект/свойство указаны неверно
Свойство присутствует в наборе доп. сведений вида объектов
Свойства нет в наборе — оно не отобразится на форме
Есть права на чтение регистра и плана видов характеристик
Данные видны администратору, но не видны пользователю
Свойство добавлено в настройки СКД и выводится
Поле есть в данных, но не добавлено в структуру отчёта
Когда дополнительных сведений недостаточно
Механизм свойств универсален, но не всегда оптимален. Если значение участвует в расчётах, проведении документов, обменах с высокой нагрузкой или по нему постоянно строятся отборы в крупных отчётах, хранение в общем регистре становится узким местом: соединения с регистром по составному типу «Объект» работают медленнее, чем обращение к реквизиту основной таблицы.
В таких случаях рассмотрите добавление собственного реквизита через расширение конфигурации. Расширение сохраняет совместимость с обновлениями (в отличие от прямой доработки) и даёт полноценный реквизит в основной таблице объекта. Дополнительные сведения оставьте для того, для чего они созданы: необязательной описательной информации, которую пользователи могут добавлять самостоятельно без привлечения разработчика.
Как выбрать действие
Частые вопросы
Где в SQL-базе найти таблицу с дополнительными сведениями?
Ищите таблицу с префиксом _InfoRg, соответствующую регистру сведений «ДополнительныеСведения». Точный номер таблицы определите через обработку «Получить структуру хранения базы данных» — она покажет соответствие метаданных и физических таблиц, включая назначение полей.
Почему в запросе значения дополнительных сведений дублируются?
Почти всегда причина в соединении с регистром без отбора по конкретному свойству. Если у объекта несколько дополнительных сведений, соединение вернёт по строке на каждое. Добавьте в условие соединения «Свойство = &Свойство» или используйте отдельные соединения для каждого свойства.
Можно ли редактировать дополнительные сведения напрямую в SQL?
Технически возможно, но делать этого не стоит: прямая запись обходит права, подписки на события, регистрацию изменений для обменов и может нарушить целостность данных. Для чтения (SELECT) прямой доступ безопасен, для изменений используйте платформу — обработки, запросы, код на встроенном языке.
Чем дополнительное сведение отличается от дополнительного реквизита при хранении?
Сведение хранится централизованно в едином регистре сведений для всех объектов конфигурации, а реквизит — в табличной части «ДополнительныеРеквизиты» самого объекта. Поэтому реквизит виден на форме вместе с основными полями, а сведение — на отдельной панели.
Удалятся ли дополнительные сведения при обновлении конфигурации?
Штатное обновление типовой конфигурации не очищает регистр дополнительных сведений и план видов характеристик. Если после обновления значения «пропали», проверяйте наборы свойств, права доступа и настройки отображения — сами данные, как правило, на месте.
Как вывести дополнительное сведение в печатную форму?
В макете печатной формы добавьте параметр и заполните его в коде модуля менеджера объекта: получите значение запросом к регистру сведений по объекту и свойству. Для управляемых форм с макетами Office Open XML значение подставляется в параметр шаблона тем же способом.
Что важно запомнить
Дополнительные сведения хранятся в регистре сведений «ДополнительныеСведения», их описания — в плане видов характеристик «ДополнительныеРеквизитыИСведения». В SQL-базе это таблицы _InfoRg и _Chrc, точные имена которых показывает структура хранения базы. Читайте данные запросом с отбором по свойству, изменяйте только через платформу, а для нагруженных сценариев рассмотрите собственный реквизит через расширение.