Создаём справочник в Конфигураторе 1С 8.3 с нуля

· 9 мин

Содержание

Справочник добавляют в Конфигураторе: ветка Справочники в дереве конфигурации → кнопка Добавить (или контекстное меню → Добавить). Открывается окно редактора объекта и палитра свойств — дальше задаёте имя, состав реквизитов и формы. В пользовательском режиме (1С:Предприятие) новый справочник создать нельзя, только заполнять.

Ниже — весь путь от пустого объекта до рабочего справочника с проверкой заполнения и правами. Примеры даю на платформе 8.3 с интерфейсом «Такси». Терминология и расположение веток одинаковы для всех конфигураций на управляемых формах — Бухгалтерии, ЗУП, УТ.

Добавляем объект и заполняем основные свойства

Откройте конфигурацию на редактирование (режим Конфигуратора, Конфигурация → Открыть конфигурацию). В дереве найдите ветку Справочники, встаньте на неё и нажмите Добавить. Платформа создаст объект Справочник1 и откроет окно редактора на закладке Основные.

Первым делом — два поля в палитре свойств:

  • 📝 Имя — идентификатор для встроенного языка, без пробелов и спецсимволов. Например, Контрагенты. По нему вы обращаетесь к объекту в коде: Справочники.Контрагенты.
  • 🏷️ Синоним — то, что видит пользователь в интерфейсе. Заполняется автоматически из имени, но его можно сделать читаемее: «Контрагенты», «Номенклатура поставщиков».

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

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

Настраиваем код, наименование и иерархию

Закладка Данные задаёт, как справочник хранит записи.

СвойствоНазначениеТипичное значение
Длина кодаРазрядность поля «Код»9–11
Тип кодаСтрока или ЧислоСтрока
Длина наименованияМаксимум символов в поле «Наименование»25–150
Основное представлениеКак объект показывается в полях вводаВ виде наименования

Если код нужен буквенно-цифровой (К-00001), оставляйте тип Строка. Число подойдёт, когда важна чисто числовая нумерация.

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

  • Иерархия групп и элементов — классические папки: группа не несёт собственных данных, внутри лежат элементы. Так устроена «Номенклатура».
  • Иерархия элементов — родителем может быть обычный элемент. Подходит для оргструктуры, статей затрат, где «папка» — это сама запись.

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

Подчинение. Справочник бывает подчинён другому. На закладке Владельцы добавляете справочник-владелец — и тогда каждый элемент привязан к владельцу. Классика: ДоговорыКонтрагентов подчинён Контрагентам. На закладке Нумерация для подчинённого справочника выбирают серию кодов: Во всём справочнике, Внутри подчинения или Внутри подчинения владельцу.

Добавляем реквизиты и выбираем типы данных

Код и наименование — это минимум. Всё остальное хранится в реквизитах. На закладке Данные встаньте на ветку Реквизиты → Добавить.

Для каждого реквизита задайте:

  1. Имя — например, ИНН, ОсновнойМенеджер, ДатаРегистрации.
  2. Тип — ключевое поле. Доступные варианты:
    • примитивные: Строка, Число, Дата, Булево;
    • ссылочные: СправочникСсылка.Контрагенты, ПеречислениеСсылка.ВидыКонтрагентов;
    • составной тип — когда в поле нужно хранить ссылки разных видов (отметьте несколько типов в окне редактирования типа).
  3. Для Строки — длину и флаг Неограниченная длина (строка неограниченной длины хранится отдельно и не индексируется).
  4. Для Числа — длину и точность (количество знаков после запятой).

Реквизит, по которому планируете искать и отбирать, пометьте свойством Индексировать (или Индексировать с доп. упорядочиванием). Без индекса отбор по большому справочнику будет тормозить.

Полезные свойства реквизита:

  • Проверка заполнения → Выдавать ошибку — платформа сама не даст записать элемент с пустым полем. Это декларативный способ, без единой строчки кода.
  • Использование → Для элемента / Для группы / Для элемента и группы — определяет, у кого из иерархии реквизит виден. У группы «Номенклатура» не нужна цена, а у элемента нужна.
  • Значение заполнения — что подставить в новый элемент по умолчанию.
  • Быстрый выбор — выпадающий список вместо отдельной формы выбора, когда значений немного.

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

Организуем табличную часть для подчинённых строк

Когда у одного элемента должен быть список однотипных строк — контактные лица контрагента, телефоны, расчётные счета — используют табличную часть.

На закладке Данные встаньте на ветку Табличные части → Добавить, задайте имя (например, КонтактныеЛица). Внутри табличной части так же добавляются свои реквизиты-колонки:

  • ФИО — тип Строка, длина 100;
  • Должность — Строка, длина 50;
  • Телефон — Строка, длина 20;
  • Основной — Булево.

В коде к строкам обращаетесь через коллекцию:

Для Каждого СтрокаКонтакта Из Объект.КонтактныеЛица Цикл
    Если СтрокаКонтакта.Основной Тогда
        ОсновнойТелефон = СтрокаКонтакта.Телефон;
        Прервать;
    КонецЕсли;
КонецЦикла;

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

Проектируем формы списка и элемента

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

На закладке Формы создайте нужные виды через Добавить → откроется Конструктор форм:

  • 📋 Форма списка — таблица всех элементов.
  • 🗂️ Форма элемента — карточка одной записи.
  • 📁 Форма группы — карточка папки (для иерархического справочника).
  • ✅ Форма выбора — упрощённый список для выбора значения в поле ввода.

Созданную форму можно назначить основной: свойства справочника → Основная форма списка, Основная форма объекта и т. д. Если поле не назначено, платформа подставит автогенерируемую форму.

В редакторе формы слева — дерево элементов и реквизитов, справа — палитра свойств. Перетаскиванием реквизита из правой панели в дерево элементов добавляете поле на форму. События формы (ПриСозданииНаСервере, ПриИзмененииПоля) открываются двойным кликом в свойствах.

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

Пишем модуль объекта и логику проверки

Серверная логика элемента живёт в модуле объекта. Открыть: правый клик на справочнике → Открыть модуль объекта, либо закладка Прочее → Модуль объекта.

Основные события, которые переопределяют:

  • ОбработкаПроверкиЗаполнения — проверки сложнее, чем «поле не пустое».
  • ПередЗаписью — нормализация данных перед сохранением.
  • ПриЗаписи — действия после записи в транзакции.
  • ПередУдалением — контроль, что элемент можно удалять.

Пример: не даём записать контрагента без ИНН и приводим наименование к единому виду.

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
    Если НЕ ЗначениеЗаполнено(ИНН) Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст  = "Укажите ИНН контрагента";
        Сообщение.Поле   = "ИНН";
        Сообщение.Сообщить();
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

Процедура ПередЗаписью(Отказ)
    Наименование = СокрЛП(Наименование);
КонецПроцедуры

Простые проверки «поле обязательно к заполнению» не выносите в модуль — для них есть декларативное свойство реквизита Проверка заполнения = Выдавать ошибку. Код нужен там, где логика зависит от нескольких полей или от данных в базе.

Предопределённые элементы. Если справочнику нужны записи, существующие всегда (например, вид контакта «Телефон»), заведите их в конфигурации: закладка Прочее → Предопределённые → открыть и добавить. Такие элементы создаются при обновлении базы и доступны в коде по имени: Справочники.ВидыКонтактов.Телефон. Удалить их из пользовательского режима нельзя.

Настраиваем права доступа к справочнику

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

Для каждой роли отмечаете флажки:

  • Чтение — видеть данные;
  • Добавление / Изменение / Удаление — менять состав;
  • Просмотр / Редактирование / Интерактивное удаление — действия через интерфейс;
  • Ввод по строке — подбор в поле ввода по набору символов.

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

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

В типовых конфигурациях на БСП права пользователям раздают не ролями напрямую, а профилями групп доступа — в пользовательском режиме, раздел Администрирование → Настройки пользователей и прав. Сама роль остаётся в конфигурации и лишь входит в профиль. Если добавляете справочник в типовую, учтите: чтобы он стал доступен, его право нужно включить в соответствующую роль, а роль — в профиль, которым пользуются сотрудники.

Сохраняем изменения в базе

Пока вы работали в Конфигураторе, вы правили конфигурацию, а не рабочую базу. Чтобы изменения заработали:

  1. Нажмите F7 или Конфигурация → Обновить конфигурацию базы данных.
  2. Платформа покажет окно со списком изменений структуры — новый справочник, его реквизиты, табличные части.
  3. Подтвердите реструктуризацию.

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

После обновления откройте 1С:Предприятие (Сервис → 1С:Предприятие или F5) и проверьте, что справочник появился в нужном разделе и открывается.

Если справочник создаётся в типовой конфигурации (Бухгалтерия, ЗУП, УТ), объект добавляют не в основную конфигурацию, а в расширение — отдельный файл поверх типовой. Так доработка переживёт обновление релиза: при следующем апдейте типовой конфигурации ваш справочник из расширения не затрётся. Создают расширение через Конфигурация → Расширения конфигурации; дальнейшие шаги с реквизитами, формами и правами те же.

Проверка перед вводом в работу
Выполнено: 0 / 8

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

Чем справочник отличается от документа и перечисления?
Справочник хранит условно-постоянные списки (контрагенты, номенклатура, сотрудники) и меняется редко. Документ фиксирует событие на дату и формирует движения по регистрам. Перечисление — жёсткий набор значений, заданный в конфигурации, который пользователь не пополняет.
Можно ли создать справочник прямо в режиме 1С:Предприятие?
Нет. Новый объект метаданных добавляется только в Конфигураторе. В пользовательском режиме доступно лишь заполнение и правка элементов уже существующего справочника.
Как сделать так, чтобы нельзя было завести двух контрагентов с одинаковым ИНН?
Декларативного контроля уникальности по произвольному реквизиту у справочника нет — уникален только код. Проверку по ИНН реализуют в модуле объекта: в событии ОбработкаПроверкиЗаполнения или ПередЗаписью делают запрос к базе и при дубле ставят Отказ = Истина.
Нужно переименовать реквизит, который уже заполнен данными. Данные потеряются?
Нет. Переименование реквизита в Конфигураторе не стирает значения — платформа сохраняет привязку по внутреннему идентификатору. Потеряется только то, на что ссылались по старому имени во встроенном языке: такой код надо поправить.
Справочник не виден в списке разделов у пользователя. Почему?
Либо объект не включён ни в одну подсистему (закладка Подсистемы), либо у роли пользователя нет права Просмотр. Проверьте оба пункта: добавьте справочник в нужную подсистему и выдайте права в роли.