Справочники и Данные · 10 мин
Как выразить данные как справочник в 1С
Как создать справочник в 1С: структура, реквизиты, иерархия, владельцы, табличные части. Практические примеры настройки и типичные ошибки.
Справочник — базовый объект конфигурации 1С для хранения относительно постоянной нормативно-справочной информации: номенклатуры, контрагентов, сотрудников, складов, валют. Любую сущность, которая многократно используется в документах и отчётах, но сама не является событием учёта, следует выразить как справочник, а не как документ или перечисление.
Ключевой признак, по которому стоит выбирать именно справочник: сущность имеет код и наименование, к ней нужно ссылаться из других объектов, а её состав и значения могут меняться пользователем без изменения конфигурации. Если набор значений жёстко фиксирован разработчиком (например, «Юрлицо / Физлицо»), правильнее использовать перечисление.
Ниже разобраны критерии выбора типа объекта, пошаговое создание справочника в конфигураторе, настройка реквизитов, иерархии и подчинения, а также типичные ошибки, которые приводят к проблемам с производительностью и целостностью данных.
Когда сущность нужно выразить как справочник
Прежде чем создавать объект, определите, действительно ли это справочник. Подходящие признаки: данные редко меняются, используются многократно, на них нужны ссылки из документов, регистров и других справочников. Типичные примеры — «Номенклатура», «Контрагенты», «Договоры», «Статьи затрат», «Подразделения».
Не подходит справочник, если сущность фиксирует факт хозяйственной жизни во времени (это документ), если набор значений закрыт и не редактируется пользователем (это перечисление), если нужно хранить историю изменений значений по датам (это периодический регистр сведений с измерением-ссылкой на справочник).
Сравнение вариантов
Нормативно-справочные данные со ссылками, редактируемые пользователем. Ограничение: не хранит историю изменений сам по себе.
Закрытый список значений, заданный разработчиком. Пользователь не может добавить новое значение без доработки конфигурации.
Событие учёта с датой и проведением. Не подходит для хранения постоянных характеристик.
Значения в разрезе измерений и, при необходимости, периода. Дополняет справочник, когда нужна история или многомерность.
Создание справочника в конфигураторе: пошагово
Работа выполняется в режиме конфигуратора и требует прав на изменение конфигурации. Перед изменениями рабочей базы сделайте выгрузку информационной базы (dt) или хотя бы выгрузку конфигурации — откат структуры метаданных без копии невозможен.
- 1Откройте конфигуратор, в дереве конфигурации найдите ветку «Справочники» и вызовите «Добавить».
- 2На закладке «Основные» задайте имя (латиницей, без пробелов, например «СтатьиЗатрат») и синоним — он будет виден пользователям.
- 3На закладке «Данные» настройте длину кода и наименования, добавьте реквизиты и табличные части.
- 4На закладке «Иерархия» включите иерархию, если нужны группы (папки) или иерархия элементов.
- 5На закладке «Владельцы» укажите справочник-владелец, если элементы подчинены другому справочнику.
- 6На закладке «Формы» сгенерируйте форму элемента и форму списка, при необходимости доработайте их.
- 7На закладке «Права» проверьте доступность объекта для нужных ролей.
- 8Обновите конфигурацию базы данных (F7) и проверьте создание элемента в режиме предприятия.
После обновления конфигурации базы данных откройте объект в пользовательском режиме, создайте тестовый элемент, заполните все реквизиты и убедитесь, что ссылка на новый справочник доступна в тех документах, где вы её добавили.
Настройка кода, наименования и реквизитов
Код и наименование — стандартные реквизиты любого справочника. Длину кода и наименования задавайте с запасом, но без излишеств: слишком длинное наименование увеличивает размер индексов. Для номенклатуры обычно достаточно 100–150 символов наименования; код чаще всего оставляют числовым с автонумерацией.
Если код несёт смысловую нагрузку (артикул, шифр), сделайте его строковым и отключите автонумерацию, но помните: уникальность кода контролируется платформой только в пределах справочника (или владельца/иерархии, если настроено соответствующим образом). Серии кодов позволяют разделить нумерацию по владельцам или группам.
Дополнительные реквизиты добавляйте только те, что реально используются в отборах, отчётах и алгоритмах. Каждый реквизит, по которому планируется поиск и отбор, помечайте признаком «Индексировать» — иначе отборы в больших списках будут работать медленно. Для характеристик, которые различаются между элементами и заранее неизвестны, в типовых конфигурациях используются дополнительные реквизиты и сведения — не плодите однотипные поля в конфигураторе.
Иерархия и подчинённые справочники
Иерархия групп и элементов подходит для классификаторов: группы служат папками и участвуют в отборах «включая подчинённые». Иерархия элементов нужна, когда сам элемент является родителем другого элемента (например, структура подразделений). Выбор вида иерархии меняет поведение отборов в запросах — конструкция «В ИЕРАРХИИ» работает по-разному.
Подчинённый справочник (с владельцем) применяется, когда элемент не существует вне родителя: договоры контрагента, единицы измерения номенклатуры, банковские счета организации. Элемент подчинённого справочника нельзя создать без указания владельца, а при записи владельца платформа контролирует ссылки автоматически.
Как выбрать действие
Табличные части и предопределённые элементы
Табличная часть хранит список строк внутри элемента: состав комплекта, контактные лица, график работы. Табличные части удобны для данных, которые читаются и редактируются только вместе с элементом. Если по строкам нужны самостоятельные отборы, ссылки из других объектов или большие объёмы — выносите их в подчинённый справочник или регистр сведений.
Предопределённые элементы создаются в конфигураторе и доступны в коде через менеджер справочника по имени. Их используют для значений, на которые опираются алгоритмы: «ОсновнаяОрганизация», «РозничныйПокупатель». Удалить такой элемент пользователь не может без специальных прав, что защищает логику программы.
Элемент = Справочники.СтатьиЗатрат.СоздатьЭлемент();
Элемент.Наименование = "Транспортные расходы";
Элемент.Родитель = ГруппаПрочие;
Элемент.Записать();
Ссылка = Справочники.СтатьиЗатрат.НайтиПоНаименованию("Транспортные расходы");При поиске элементов в коде предпочитайте НайтиПоКоду или НайтиПоРеквизиту по индексированному реквизиту — поиск по наименованию не гарантирует уникальности и работает медленнее на больших объёмах.
Проверка результата и типичные ошибки
После создания справочника проверьте его в пользовательском режиме: открывается ли список, создаётся ли элемент, отображается ли он в подсистемах (командный интерфейс настраивается на закладке «Командный интерфейс» и через подсистемы). Убедитесь, что роли дают нужные права — иначе пользователи не увидят объект или не смогут его редактировать.
Как проверить результат
Элемент записывается, код присваивается автоматически, форма открывается без ошибок
Ошибка прав доступа или «Поле объекта не обнаружено» — проверьте роли и реквизиты формы
В поле ввода доступен выбор элементов нового справочника
Поле пустое или тип не подхватывается — проверьте тип реквизита документа
Отбор по реквизиту выполняется быстро
Список «подвисает» — реквизит не индексирован
Группы создаются, элементы попадают в нужные папки
Элементы создаются как группы — проверьте вид иерархии и форму выбора
Ограничения и когда нужна помощь разработчика
В типовых конфигурациях на поддержке изменение структуры метаданных снимает конфигурацию с полной поддержки, что усложняет обновления. Если задача решается штатными механизмами — дополнительными реквизитами и сведениями, расширениями конфигурации — используйте их вместо прямой доработки. Расширение позволяет добавить справочник или реквизит, не затрагивая основную конфигурацию.
Сложные сценарии — обмен данными, планы обмена, ввод на основании, собственные модули менеджера — требуют навыков разработки на встроенном языке. Если вы не уверены в последствиях изменения, выполните его сначала на копии базы или привлеките специалиста по 1С.
Что важно запомнить
Справочник выбирают для многократно используемых нормативных данных со ссылками. Создание идёт через конфигуратор: имя, реквизиты, иерархия, владельцы, формы, права. Индексируйте реквизиты отбора, не храните историю в реквизитах, а любые изменения структуры сначала проверяйте на копии базы.
Частые вопросы
Чем справочник отличается от перечисления в 1С?
Перечисление — закрытый список значений, заданный разработчиком в конфигураторе; пользователь не может его пополнить. Справочник наполняется пользователями и может содержать произвольное количество элементов с дополнительными реквизитами. Если список значений участвует в алгоритмах и не должен меняться — выбирайте перечисление.
Как добавить справочник, не снимая конфигурацию с поддержки?
Используйте расширение конфигурации: в конфигураторе «Конфигурация → Расширения конфигурации → Создать». В расширении можно добавлять собственные справочники, реквизиты и формы, а основная конфигурация остаётся на поддержке и обновляется штатно.
Как хранить историю изменения цены или статуса элемента справочника?
Реквизит справочника хранит только текущее значение. Для истории создайте периодический регистр сведений, где измерением будет ссылка на справочник, а ресурсом — значение. Тогда отчёты смогут показать значение на любую дату.
Почему отбор по реквизиту справочника работает медленно?
Чаще всего реквизит не индексирован. Откройте свойства реквизита в конфигураторе и включите признак «Индексировать» (или «Индексировать с дополнительным упорядочиванием», если нужна сортировка). После обновления конфигурации базы данных отборы ускорятся.
Что делать, если в справочнике появились дубли элементов?
Для типовых конфигураций существуют штатные обработки поиска и удаления дублей (обычно в разделе администрирования). Они заменяют ссылки в документах и регистрах на выбранный «правильный» элемент и помечают дубли на удаление. Перед запуском сделайте резервную копию и проверьте результат на копии базы.