Свой справочник в расширении конфигурации: от создания до прав и выгрузки .cfe
Содержание
Чтобы добавить справочник в расширение 1С, откройте в Конфигураторе Конфигурация → Расширения конфигурации, создайте или выберите расширение, раскройте его дерево и в ветке «Справочники» нажмите «Добавить». Дальше — реквизиты, формы, роль с правами, подсистема для показа в интерфейсе и Обновить конфигурацию базы данных. Собственные объекты данных в расширениях поддерживаются в платформе с номером не ниже 8.3.11.
Частое заблуждение: «справочник в расширении — это что-то временное, данные в нём хранятся иначе». Нет. Платформа создаёт под такой справочник обычные таблицы в базе, с ним работают запросы, отчёты и обмены. Разница одна, но серьёзная: если удалить расширение , удалятся и данные его справочников.
Подготовка: версия платформы, расширение и префикс
Перед тем как добавлять объект, проверьте три вещи.
- 🧩 Платформа. Справочники, документы и регистры в расширении доступны с 8.3.11. Номер версии смотрите в Конфигураторе:
Справка → О программе. - ⚙️ Режим совместимости расширения. У самого расширения есть свойство «Режим совместимости». Если оно ниже 8.3.11, ветка «Справочники» не даст создать новый объект — поднимите значение в палитре свойств расширения.
- 💾 Копия базы. Расширение с данными меняет структуру базы. Перед первым применением сделайте выгрузку
.dtили резервную копию средствами СУБД.
Когда расширение лучше доработки конфигурации
Расширение выбирают, когда типовую нельзя снимать с поддержки. Обновления релизов ставятся как обычно, а ваш справочник живёт отдельно и не попадает в сравнение-объединение. Если же конфигурация уже сильно переписана и снята с поддержки, новый справочник проще добавить прямо в неё: так данные не зависят от судьбы отдельного файла .cfe.
Создание расширения
- Откройте базу в Конфигураторе. Конфигурацию основной базы открывать не нужно.
- Выберите
Конфигурация → Расширения конфигурации. - Нажмите «Добавить». Задайте:
- Имя — латиницей или кириллицей без пробелов, например
ДопСправочники; - Синоним — то, что увидит пользователь в списке расширений;
- Префикс — короткая метка, например
дс_; - Назначение — для новых объектов данных обычно ставят «Дополнение».
- Имя — латиницей или кириллицей без пробелов, например
- Откройте дерево расширения: в окне расширений выделите строку и выполните
Конфигурация → Открыть конфигурацию.
Префикс — главная защита от конфликтов. Если в следующем релизе типовой появится справочник ВидыДоговоров, а у вас в расширении такой же без префикса, расширение перестанет применяться. С именем дс_ВидыДоговоров такого не будет.
Добавление объекта
В дереве расширения правой кнопкой по ветке «Справочники» → «Добавить». Конфигуратор сразу подставит префикс в имя: допишите после него смысловую часть, например дс_ВидыДоговоров. Синоним без префикса: «Виды договоров».
Новый справочник появляется в дереве как собственный объект расширения. Заимствованные объекты типовой помечены отдельным значком, свои — нет. Это удобно, когда расширение разрастается.
Реквизиты, табличные части и виды справочника
Справочник в расширении настраивается теми же вкладками, что и в основной конфигурации. Ниже — что стоит решить сразу, потому что потом менять дороже.
Основная вкладка «Данные»
| Свойство | Что задаёт | Совет |
|---|---|---|
| Длина кода | Сколько символов в коде | 9 хватает почти всегда |
| Тип кода | Строка или число | Строка удобнее при загрузке из Excel |
| Длина наименования | Максимум символов | 100–150 для «человеческих» названий |
| Автонумерация | Код присваивается сам | Включайте, если код не несёт смысла |
| Контроль уникальности | Запрет дублей кода | Нужен при обменах |
Иерархия и подчинение
На вкладке «Иерархия» решите, нужны ли группы:
- 📁 Иерархия групп и элементов — классика: папки и элементы внутри.
- 🌳 Иерархия элементов — элемент может быть родителем другого элемента.
- 🔢 Ограничение уровней — задаёт глубину дерева.
На вкладке «Владельцы» можно подчинить ваш справочник справочнику типовой конфигурации. Пример: дс_КонтактыПоДоговору с владельцем «Контрагенты». Тогда в карточке контрагента появится доступ к подчинённому списку.
Реквизиты и табличные части
Реквизиты добавляются в одноимённой ветке. Тип можно брать как из расширения, так и из основной конфигурации: СправочникСсылка.Контрагенты, СправочникСсылка.Организации и так далее.
Табличная часть — если у элемента есть повторяющиеся строки. Например, у вида договора — список обязательных документов к нему.
Предопределённые элементы
Если в коде вы будете обращаться к конкретным значениям, задайте их как предопределённые: кнопка «Предопределённые» на вкладке «Прочее». Обращение в коде: Справочники.дс_ВидыДоговоров.Поставка. Это надёжнее поиска по наименованию: пользователь может переименовать элемент, а имя предопределённого останется.
Формы элемента и списка
Без своих форм справочник откроется в автоматически сгенерированных. Для двух-трёх реквизитов этого хватает. Если нужна раскладка по группам, подсказки или свои команды — создайте формы.
- Вкладка «Формы» → «Добавить» рядом с полем «Основная форма объекта».
- В конструкторе выберите тип «Форма элемента справочника» и отметьте, какие реквизиты вывести.
- Повторите для «Формы списка». Если включена иерархия, имеет смысл отдельно задать форму выбора группы.
- Убедитесь, что созданные формы указаны в полях основных форм — иначе платформа продолжит открывать автоматические.
Что обычно дорабатывают в форме элемента
- 🗂 Группы на форме: «Основное», «Дополнительно», табличная часть на отдельной странице.
- 🔒 Доступность полей по условию: например, поле «Срок» доступно только при флаге «Срочный».
- 🔎 Связи параметров выбора: в поле «Договор» показывать только договоры выбранного контрагента.
Связи параметров выбора задаются в свойствах элемента формы без единой строки кода — это первое, что стоит попробовать, прежде чем писать обработчик НачалоВыбора.
Форма списка
В форме списка динамический список строится по основной таблице справочника. Если нужно вывести в колонку поле из связанного объекта (скажем, ИНН владельца), включите для списка «Произвольный запрос» и допишите соединение. Без необходимости этого не делайте: произвольный запрос медленнее на больших справочниках.
Модуль объекта: проверки и логика записи
У собственного справочника расширения модули обычные. Аннотации &Перед, &После, &Вместо нужны только для заимствованных объектов, здесь их нет.
Типичные задачи модуля объекта:
- ✅ проверка заполнения сверх флагов «Проверка заполнения» в реквизитах;
- ✍️ заполнение служебных реквизитов перед записью;
- 🚫 запрет на изменение элемента при определённом условии.
Пример: у справочника есть реквизиты ИНН (строка 12) и ЮрЛицо (булево). Проверяем длину ИНН в зависимости от типа лица.
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
Если Не ЗначениеЗаполнено(ИНН) Тогда
Возврат;
КонецЕсли;
НужнаяДлина = ?(ЮрЛицо, 10, 12);
Если СтрДлина(СокрЛП(ИНН)) <> НужнаяДлина Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон("ИНН должен содержать %1 цифр.", НужнаяДлина);
Сообщение.Поле = "ИНН";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
Наименование = СокрЛП(Наименование);
КонецПроцедуры
Проверка ОбменДанными.Загрузка в начале ПередЗаписью обязательна, если справочник участвует в обменах. Без неё ваша логика будет срабатывать при загрузке данных из другой базы и может отменять запись.
Общие функции, которые нужны и форме, и модулю объекта, выносите в общий модуль расширения с префиксом: дс_ВидыДоговоровСервер. Так их проще найти и они не пересекутся с модулями типовой.
Обращение к справочнику в запросах и коде
Для запросов и кода справочник расширения ничем не отличается от типового. В тексте запроса: ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.дс_ВидыДоговоров. В коде: Справочники.дс_ВидыДоговоров.СоздатьЭлемент(). Если расширение отключено, такой код в основной конфигурации упадёт с ошибкой, поэтому обращения к объектам расширения держите внутри самого расширения.
Права доступа и роли
Самая частая причина фразы «справочник добавил, а пользователи его не видят» — права. Новый объект расширения никому не доступен, пока его не включат в роль.
Вариант 1. Своя роль в расширении
- В ветке «Роли» расширения добавьте роль, например
дс_ЧтениеВидовДоговоров. - Откройте её и найдите справочник в списке объектов.
- Отметьте нужные права: «Чтение», «Просмотр» для пользователей; «Добавление», «Изменение», «Удаление» и интерактивные варианты — для тех, кто ведёт справочник.
- Сделайте вторую роль для редактирования, если права должны различаться.
Вариант 2. Заимствованная роль
Заимствуйте в расширение типовую роль, например ПолныеПрава, и проставьте в ней права на свой справочник. Администратор сразу увидит объект без отдельной настройки. Для рядовых пользователей лучше всё же своя роль — так прозрачнее.
Как выдать роль в базах на БСП
В БП 3.0, ЗУП 3.1, УТ 11 и других конфигурациях на БСП роли напрямую пользователям не назначают. Порядок такой:
Администрирование → Настройки пользователей и прав → Профили групп доступа.- Скопируйте подходящий профиль или откройте свой, отметьте роль из расширения.
- Включите пользователей в группу доступа с этим профилем.
Видимость в интерфейсе
Права дают доступ, но не показывают справочник в меню. Для этого заимствуйте в расширение нужную подсистему (раздел), откройте её свойства и добавьте свой справочник в «Состав». После обновления команда открытия списка появится в соответствующем разделе.
Сохранение, обновление базы и перенос в рабочую базу
Применение в текущей базе
После правок выполните в окне расширения Конфигурация → Обновить конфигурацию базы данных (F7). Для расширения с данными платформа покажет изменения структуры — примите их. Пока обновление не выполнено, в режиме Предприятия работает прежняя версия расширения.
Создание таблиц справочника требует обновления структуры. Делайте это вне рабочего времени: открытые сеансы пользователей нужно будет перезапустить, иначе они продолжат работать со старой версией.
Выгрузка в файл .cfe
Готовое расширение сохраняется отдельным файлом: в окне расширений Конфигурация → Сохранить в файл. Получится ДопСправочники.cfe. Этот файл переносят в рабочую базу.
Загрузка в рабочую базу
Есть два пути, выбирайте по ситуации.
| Способ | Где | Когда удобен |
|---|---|---|
| Через Конфигуратор | Конфигурация → Расширения конфигурации → выбрать расширение → Конфигурация → Загрузить из файла → F7 | Есть доступ к Конфигуратору, нужен контроль изменений структуры |
| Через режим Предприятия (БСП) | Администрирование → Печатные формы, отчеты и обработки → Расширения | Нет Конфигуратора, работаете в облаке или у клиента |
Загрузка .cfe и обновление структуры — два отдельных шага. В режиме Предприятия расширение начинает действовать при следующем запуске программы, поэтому после загрузки пользователей просят перезайти.
При загрузке новой версии поверх старой загружайте её в то же расширение, а не создавайте второе с тем же именем. Иначе получите два расширения со своими таблицами, и данные останутся в старом.
Обновление типовой конфигурации
Перед обновлением релиза БП, ЗУП или УТ полезно проверить, применится ли расширение к новой версии. Собственный справочник с префиксом обычно переживает обновление спокойно. Ломаются чаще заимствованные объекты: роль, подсистема, справочник-владелец. Если их переименовали в новом релизе, расширение отключится — поправьте заимствование и сохраните новую версию .cfe.
Частые ошибки при работе со справочником в расширении
- ❌ Удаление расширения «чтобы переустановить». Вместе с ним удалятся все элементы ваших справочников. Для обновления загружайте новую версию поверх.
- ❌ Имена без префикса. Конфликт с будущим релизом типовой проявится не сразу, а после очередного обновления.
- ❌ Справочник подчинён объекту, который потом заимствовали и изменили. Владелец из типовой — нормально. Но если в нём менялись свойства через заимствование, при обновлении конфигурации следите за применимостью.
- ❌ Бизнес-логика в форме вместо модуля объекта. Проверки в форме не сработают при записи из обработки, обмена или загрузки. Проверки данных — в модуле объекта.
- ❌ Флажок «Безопасный режим» снят «на всякий случай». Без необходимости не снимайте: расширение получит права выполнять внешний код и обращаться к файлам.
Можно ли добавить реквизит в типовой справочник с типом моего справочника из расширения?
СправочникСсылка.дс_.... Данные нового реквизита хранятся вместе с расширением и тоже пропадут при его удалении.