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

Справочники и Данные · 10 мин

Как выразить данные как справочник в 1С

Как создать справочник в 1С: структура, реквизиты, иерархия, владельцы, табличные части. Практические примеры настройки и типичные ошибки.

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

Ключевой признак, по которому стоит выбирать именно справочник: сущность имеет код и наименование, к ней нужно ссылаться из других объектов, а её состав и значения могут меняться пользователем без изменения конфигурации. Если набор значений жёстко фиксирован разработчиком (например, «Юрлицо / Физлицо»), правильнее использовать перечисление.

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

Когда сущность нужно выразить как справочник

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

Не подходит справочник, если сущность фиксирует факт хозяйственной жизни во времени (это документ), если набор значений закрыт и не редактируется пользователем (это перечисление), если нужно хранить историю изменений значений по датам (это периодический регистр сведений с измерением-ссылкой на справочник).

Сравнение вариантов

Справочник

Нормативно-справочные данные со ссылками, редактируемые пользователем. Ограничение: не хранит историю изменений сам по себе.

Перечисление

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

Документ

Событие учёта с датой и проведением. Не подходит для хранения постоянных характеристик.

Регистр сведений

Значения в разрезе измерений и, при необходимости, периода. Дополняет справочник, когда нужна история или многомерность.

Создание справочника в конфигураторе: пошагово

Работа выполняется в режиме конфигуратора и требует прав на изменение конфигурации. Перед изменениями рабочей базы сделайте выгрузку информационной базы (dt) или хотя бы выгрузку конфигурации — откат структуры метаданных без копии невозможен.

Порядок действий
  1. 1
    Откройте конфигуратор, в дереве конфигурации найдите ветку «Справочники» и вызовите «Добавить».
  2. 2
    На закладке «Основные» задайте имя (латиницей, без пробелов, например «СтатьиЗатрат») и синоним — он будет виден пользователям.
  3. 3
    На закладке «Данные» настройте длину кода и наименования, добавьте реквизиты и табличные части.
  4. 4
    На закладке «Иерархия» включите иерархию, если нужны группы (папки) или иерархия элементов.
  5. 5
    На закладке «Владельцы» укажите справочник-владелец, если элементы подчинены другому справочнику.
  6. 6
    На закладке «Формы» сгенерируйте форму элемента и форму списка, при необходимости доработайте их.
  7. 7
    На закладке «Права» проверьте доступность объекта для нужных ролей.
  8. 8
    Обновите конфигурацию базы данных (F7) и проверьте создание элемента в режиме предприятия.

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

Настройка кода, наименования и реквизитов

Код и наименование — стандартные реквизиты любого справочника. Длину кода и наименования задавайте с запасом, но без излишеств: слишком длинное наименование увеличивает размер индексов. Для номенклатуры обычно достаточно 100–150 символов наименования; код чаще всего оставляют числовым с автонумерацией.

Если код несёт смысловую нагрузку (артикул, шифр), сделайте его строковым и отключите автонумерацию, но помните: уникальность кода контролируется платформой только в пределах справочника (или владельца/иерархии, если настроено соответствующим образом). Серии кодов позволяют разделить нумерацию по владельцам или группам.

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

Иерархия и подчинённые справочники

Иерархия групп и элементов подходит для классификаторов: группы служат папками и участвуют в отборах «включая подчинённые». Иерархия элементов нужна, когда сам элемент является родителем другого элемента (например, структура подразделений). Выбор вида иерархии меняет поведение отборов в запросах — конструкция «В ИЕРАРХИИ» работает по-разному.

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

Маршрут решения

Как выбрать действие

Нужны папки для группировки и отборы «с учётом подчинённых»Включите иерархию вида «Группы и элементы».
Элементы ссылаются друг на друга как родитель-потомокВключите иерархию вида «Элементы».
Элемент бессмысленен без родительского объекта (договор без контрагента)Сделайте справочник подчинённым, указав владельца.
Нужна история значения характеристики по датамНе добавляйте реквизит — создайте периодический регистр сведений с измерением-ссылкой.

Табличные части и предопределённые элементы

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

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

bsl
Элемент = Справочники.СтатьиЗатрат.СоздатьЭлемент();
Элемент.Наименование = "Транспортные расходы";
Элемент.Родитель = ГруппаПрочие;
Элемент.Записать();

Ссылка = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Транспортные расходы");

При поиске элементов в коде предпочитайте НайтиПоКоду или НайтиПоРеквизиту по индексированному реквизиту — поиск по наименованию не гарантирует уникальности и работает медленнее на больших объёмах.

Проверка результата и типичные ошибки

После создания справочника проверьте его в пользовательском режиме: открывается ли список, создаётся ли элемент, отображается ли он в подсистемах (командный интерфейс настраивается на закладке «Командный интерфейс» и через подсистемы). Убедитесь, что роли дают нужные права — иначе пользователи не увидят объект или не смогут его редактировать.

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

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

Создание элемента в режиме предприятия
Норма

Элемент записывается, код присваивается автоматически, форма открывается без ошибок

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

Ошибка прав доступа или «Поле объекта не обнаружено» — проверьте роли и реквизиты формы

Ссылка из документа
Норма

В поле ввода доступен выбор элементов нового справочника

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

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

Отборы в списке
Норма

Отбор по реквизиту выполняется быстро

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

Список «подвисает» — реквизит не индексирован

Иерархия
Норма

Группы создаются, элементы попадают в нужные папки

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

Элементы создаются как группы — проверьте вид иерархии и форму выбора

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

Ограничения и когда нужна помощь разработчика

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

Сложные сценарии — обмен данными, планы обмена, ввод на основании, собственные модули менеджера — требуют навыков разработки на встроенном языке. Если вы не уверены в последствиях изменения, выполните его сначала на копии базы или привлеките специалиста по 1С.

Итог

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

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

Частые вопросы

Чем справочник отличается от перечисления в 1С?

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

Как добавить справочник, не снимая конфигурацию с поддержки?

Используйте расширение конфигурации: в конфигураторе «Конфигурация → Расширения конфигурации → Создать». В расширении можно добавлять собственные справочники, реквизиты и формы, а основная конфигурация остаётся на поддержке и обновляется штатно.

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

Реквизит справочника хранит только текущее значение. Для истории создайте периодический регистр сведений, где измерением будет ссылка на справочник, а ресурсом — значение. Тогда отчёты смогут показать значение на любую дату.

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

Чаще всего реквизит не индексирован. Откройте свойства реквизита в конфигураторе и включите признак «Индексировать» (или «Индексировать с дополнительным упорядочиванием», если нужна сортировка). После обновления конфигурации базы данных отборы ускорятся.

Что делать, если в справочнике появились дубли элементов?

Для типовых конфигураций существуют штатные обработки поиска и удаления дублей (обычно в разделе администрирования). Они заменяют ссылки в документах и регистрах на выбранный «правильный» элемент и помечают дубли на удаление. Перед запуском сделайте резервную копию и проверьте результат на копии базы.