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

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

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

1. Простые справочники: когда достаточно минимализма

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

  • 📏 Единицы измерения (шт., кг, м²) — здесь не нужны группы или подкатегории.
  • 🏷️ Виды цен (розничная, оптовая, закупочная) — список фиксированный и небольшой.
  • 🔄 Статусы документов (черновик, проведен, отменен) — логика работы не требует вложенности.

Основное преимущество простых справочников — быстродействие и простота администрирования. Их легко наполнять данными вручную или через обработки загрузки. Однако если в будущем потребуется добавить иерархию (например, разделить единицы измерения по категориям: "вес", "объем", "длина"), придется переделывать структуру, что может повлечь потерю данных или ошибки в существующих документах.

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

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

📊 Какой тип справочников вы используете чаще всего?
Простые (линейные)
Иерархические
Подчиненные
С предопределенными элементами

2. Иерархические справочники: структура и группы

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


📦 Одежда

├── 👕 Верхняя одежда

│ ├── Куртки

│ └── Пальто

└── 👖 Нижняя одежда

├── Джинсы

└── Шорты

В 1С:Предприятие 8 иерархические справочники поддерживают два режима работы:

  • 🌳 Иерархия групп и элементов — группы могут содержать как другие группы, так и элементы (например, в номенклатуре).
  • 🔗 Иерархия только элементов — элементы могут быть подчинены другим элементам (например, справочник Подразделения, где одно подразделение входит в состав другого).

Главное отличие от простых справочников — возможность фильтрации и отборов по группам. Например, в отчетах можно вывести товары только из группы "Электроника", не перебирая весь справочник. Однако иерархия требует больше ресурсов для обработки, особенно если глубина вложенности превышает 5–7 уровней.

Тип справочника Пример использования Преимущества Недостатки
Простой Единицы измерения, виды цен Высокая скорость работы, простота Невозможность группировки
Иерархический (группы + элементы) Номенклатура, контрагенты Удобная классификация, фильтрация Замедление при глубокой вложенности
Иерархический (только элементы) Подразделения, регионы Гибкая структура подчинения Сложность переноса данных
⚠️ Внимание: При проектировании иерархического справочника избегайте создания "плоских" структур с сотнями элементов в одной группе. Это усложнит навигацию пользователям и может привести к ошибкам при массовых операциях (например, при переносе группы в другую ветку).
💡

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

3. Подчиненные справочники: связь с владельцем

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

  • 📋 Контактные лица (подчинены справочнику Контрагенты).
  • 📍 Адреса доставки (подчинены справочнику Клиенты).
  • 📞 Телефоны сотрудников (подчинены справочнику Физические лица).

Главная особенность подчиненных справочников — автоматическое удаление элементов при удалении владельца. Например, если удалить контрагента, все его контактные лица и адреса будут удалены вместе с ним. Это удобно для поддержания целостности данных, но может стать проблемой, если требуется сохранить историю.

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

⚠️ Внимание: Подчиненные справочники нельзя использовать для хранения данных, которые должны существовать независимо от владельца. Например, если адреса доставки нужны для анализа даже после удаления клиента, лучше сделать их отдельным справочником с ссылкой на клиента.
Как перенести данные из подчиненного справочника в независимый?

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

4. Справочники с предопределенными элементами

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

  • 💰 Основная валюта (рубль, доллар, евро) в справочнике Валюты.
  • 📄 Типы цен (розничная, оптовая) в справочнике Виды цен.
  • 🏢 Основное подразделение в справочнике Подразделения.

Предопределенные элементы создаются в конфигураторе (в режиме "1С:Предприятие" их можно только редактировать). Их главное преимущество — гарантия наличия критически важных данных. Например, если в справочнике Валюты не будет предопределенного рубля, система не сможет корректно работать с денежными суммами.

Однако есть и недостатки:

  1. При обновлении конфигурации предопределенные элементы могут затираться новыми версиями, если их идентификаторы совпадают.
  2. Их нельзя удалить даже через Полные права, что иногда мешает при очистке тестовых баз.

Чтобы избежать проблем, разработчики часто используют уникальные идентификаторы (GUID) для предопределенных элементов. Это позволяет безопасно обновлять конфигурацию, не боясь потерять данные.

Убедиться, что идентификаторы элементов уникальны|

Создать резервную копию базы|

Проверить наличие дублей в справочнике|

Зафиксировать изменения в журнале обновлений-->

5. Виртуальные таблицы справочников: работа с данными

Виртуальные таблицы — это специальный механизм 1С:Предприятие, который позволяет получать данные из справочников в виде таблиц, пригодных для отчетов и обработок. Они не хранят данные физически, а формируются "на лету" по запросу. Виртуальные таблицы справочников бывают нескольких типов:

  • 📊 СрезПоследних — возвращает актуальные данные на указанную дату.
  • 🔄 Изменения — показывает историю изменений элементов.
  • 🗑️ ПолнаяИерархия — выводит все уровни вложенности для иерархических справочников.

Пример использования виртуальной таблицы в запросе:


ВЫБРАТЬ

НоменклатураСрезПоследних.Ссылка КАК Номенклатура,

НоменклатураСрезПоследних.Наименование,

НоменклатураСрезПоследних.Артикул

ИЗ

Справочник.Номенклатура.СрезПоследних(&ТекущаяДата) КАК НоменклатураСрезПоследних

Виртуальные таблицы удобны для:

  • 📈 Построения отчетов с актуальными данными на определенную дату.
  • 🔍 Анализа истории изменений (кто и когда редактировал элемент).
  • 🌳 Вывода иерархических данных в плоском виде (например, для экспорта в Excel).
⚠️ Внимание: Виртуальные таблицы типа Изменения могут значительно нагружать базу, если справочник содержит миллионы записей. Для таких случаев лучше использовать механизм Регистр сведений для хранения истории.
💡

Виртуальные таблицы СрезПоследних и СрезПервых возвращают данные на конкретную дату, что критично для отчетов с ретроспективой (например, "Остатки товаров на 01.01.2023").

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

Даже опытные разработчики и пользователи иногда допускают ошибки при работе со справочниками. Вот самые распространенные из них и способы их избежать:

  1. Использование простого справочника вместо иерархического для больших списков. Это приводит к затруднениям при поиске и фильтрации. Решение: Заранее продумывайте структуру данных.
  2. Создание подчиненных справочников без необходимости. Если данные должны существовать независимо, лучше использовать отдельный справочник с ссылкой. Решение: Анализируйте требования к целостности данных.
  3. Игнорирование предопределенных элементов в типовых конфигурациях. Это может привести к ошибкам при обновлении. Решение: Всегда проверяйте идентификаторы предопределенных элементов.
  4. Чрезмерная вложенность в иерархических справочниках (более 10 уровней). Это усложняет поддержку и замедляет работу. Решение: Ограничивайте глубину до 5–7 уровней.

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

  • 🔍 Настройте Проверку на дубли в форме справочника.
  • 📌 Используйте Полнотекстовый поиск для быстрого нахождения элементов.
  • 🔒 Ограничьте права на создание новых элементов для рядовых пользователей.

Для автоматизации проверки дублей можно использовать следующий код в модуле справочника:


Процедура ПриЗаписи(Отказ)

Если Не ЗначениеЗаполнено(Артикул) Тогда

Сообщить("Артикул обязателен для заполнения!");

Отказ = Истина;

КонецЕсли;

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ РАЗРЕШЕННЫЕ Ссылка

|ИЗ Справочник.Номенклатура КАК Номенклатура

|ГДЕ Номенклатура.Артикул = &Артикул И Номенклатура.Ссылка <> &Ссылка";

Запрос.УстановитьПараметр("Артикул", Артикул);

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Результат = Запрос.Выполнить();

Если Результат.Выбрать() Тогда

Сообщить("Номенклатура с таким артикулом уже существует!");

Отказ = Истина;

КонецЕсли;

КонецПроцедуры

7. Как выбрать правильный тип справочника для своей задачи

Выбор типа справочника зависит от трех ключевых факторов:

  1. Структура данных — нужна ли иерархия или достаточно плоского списка?
  2. Связи с другими объектами — должны ли элементы существовать независимо?
  3. Требования к производительности — как часто данные будут читаться/изменяться?

Вот алгоритм выбора:

Нужна ли группировка элементов? → Если да, выбирайте иерархический|

Должны ли элементы существовать только вместе с владельцем? → Если да, выбирайте подчиненный|

Нужны ли предопределенные элементы? → Создайте их в конфигураторе|

Планируется ли большой объем данных? → Оптимизируйте структуру и индексы-->

Примеры правильного выбора:

  • 📦 Номенклатура → иерархический справочник (нужны группы товаров).
  • 👥 Контрагенты → иерархический справочник (можно группировать по регионам или типам).
  • 📞 Контактные лица → подчиненный справочник (привязаны к контрагентам).
  • 💰 Виды цен → простой справочник с предопределенными элементами.

Если сомневаетесь, начните с простого справочника и при необходимости доработайте его. В всегда можно изменить тип справочника (например, сделать его иерархическим), но это может потребовать переноса данных и доработки кода.

⚠️ Внимание: При изменении типа справочника (например, с простого на иерархический) в уже заполненной базе может потребоваться ручное распределение элементов по группам. Автоматическая миграция не всегда возможна!

FAQ: Частые вопросы о справочниках 1С

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

Да, но это требует ручной работы. Нужно:

  1. Создать новый независимый справочник.
  2. Добавить в него реквизит-ссылку на бывшего "владельца".
  3. Написать обработку для переноса данных.
  4. Заменить все ссылки в коде и отчетах.

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

🔹 Как ускорить работу медленного иерархического справочника?

Если справочник тормозит при открытии или поиске:

  • Проверьте глубину вложенности — если она больше 7 уровней, упростите структуру.
  • Настройте индексы для часто используемых реквизитов.
  • Отключите ненужные колонки в списке справочника.
  • Используйте отбор по группам вместо загрузки всего дерева.
🔹 Что будет, если удалить предопределенный элемент?

В режиме 1С:Предприятие предопределенные элементы удалить нельзя — они просто скрываются. Однако в конфигураторе при неосторожных действиях можно:

  • Сломать логику работы типовых механизмов (например, если удалить основную валюту).
  • Получить ошибки при обновлении конфигурации (если элемент будет восстановлен поставщиком).

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

🔹 Как экспортировать справочник в Excel с сохранением иерархии?

Для экспорта иерархического справочника с группами:

  1. Используйте виртуальную таблицу ПолнаяИерархия.
  2. В запросе добавьте поле Уровень для отступов.
  3. Экспортируйте в Excel с форматированием (например, через ЗначениеВФорматеExcel).

Пример кода для экспорта:


Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| НоменклатураПолнаяИерархия.Ссылка КАК Ссылка,

| НоменклатураПолнаяИерархия.Наименование,

| НоменклатураПолнаяИерархия.Уровень КАК Уровень

|ИЗ

| Справочник.Номенклатура.ПолнаяИерархия КАК НоменклатураПолнаяИерархия";

🔹 Можно ли сделать справочник с динамическим списком значений?

Да, для этого используйте:

  • Перечисления — если список фиксированный и небольшой.
  • Справочник с обработкой заполнения — если значения подгружаются из внешнего источника.
  • Реквизит типа "Строка" с проверкой — если значения вводятся произвольно, но нужно контролировать уникальность.

Для динамического списка (например, загружаемого из API) лучше создать справочник с обработкой события ПриАктивизацииСтроки, где будет происходить обновление данных.