Добавление реквизита объекту конфигурации 1С 8.3 через Конфигуратор
Содержание
Новый реквизит добавляют в Конфигураторе 1С 8.3: открыть конфигурацию, в дереве найти нужный объект (справочник, документ), развернуть ветку Реквизиты, правой кнопкой Добавить и задать имя и тип. Чтобы поле появилось в базе, после этого нужно обновить конфигурацию
базы данных клавишей F7 в монопольном режиме.
Разберём порядок на справочнике и документе: как выбрать тип, настроить длину и точность, сделать составной тип и вывести поле на форму. Отдельно — как добавить реквизит в типовую конфигурацию (БП 3.0, ЗУП 3.1, УТ 11) через расширение, не снимая её с поддержки.
Что такое реквизит и где он хранится
Реквизит — это дополнительное поле (колонка) объекта конфигурации. У справочника «Контрагенты» реквизиты — это ИНН, телефон, основной менеджер; у документа «Реализация» — склад, вид операции, ответственный. На уровне СУБД каждый реквизит превращается в колонку таблицы объекта.
Реквизиты бывают двух видов:
- 🔹 Реквизиты объекта (шапки) — одно значение на элемент справочника или документа. Например, один склад на весь документ.
- 🔹 Реквизиты табличной части — значения в строках таблицы. Например, номенклатура, количество и цена в строках реализации.
Их не путают с общими реквизитами (отдельная ветка Общие → Общие реквизиты) — те добавляются сразу многим объектам, например для разделения данных по организациям. В этой статье речь про обычный реквизит одного объекта.
Что подготовить перед добавлением
Изменение структуры метаданных — операция для разработчика или администратора, а не для рядового пользователя. Прежде чем лезть в Конфигуратор:
Сделайте резервную копию информационной базы. Выгрузка в .dt (Администрирование → Выгрузить информационную базу) или архив файла 1Cv8.1CD — на случай, если обновление структуры пойдёт не так.
Что ещё учесть заранее:
- Для типовой конфигурации на поддержке прямое редактирование по умолчанию закрыто. Либо включают возможность изменения (снятие с поддержки), либо — что правильнее — добавляют реквизит через расширение (см. раздел ниже).
- Обновление структуры базы требует монопольного доступа: в этот момент в базе не должно быть активных сеансов пользователей. Само редактирование конфигурации монополии не требует — она нужна только на шаге
F7. - Запускать Конфигуратор лучше под пользователем с правом администрирования.
Как добавить реквизит справочнику: пошагово
Базовый сценарий — новое поле в справочнике. Порядок одинаков для всех конфигураций на платформе 8.3 с интерфейсом «Такси».
- В Конфигураторе откройте дерево конфигурации:
Конфигурация → Открыть конфигурацию. - Разверните ветку
Справочники, найдите нужный справочник, раскройте его и выделите папкуРеквизиты. - Правой кнопкой по
Реквизиты→Добавить(или клавишаIns). Появится новый реквизит и окно его свойств (палитра свойств, по умолчанию справа; если закрыта —F4). - Заполните свойства:
- Имя — латиницей или кириллицей, без пробелов, например
ОсновнойМенеджер. Это идентификатор для кода. - Синоним — подставится автоматически из имени, это заголовок поля для пользователя. Поправьте при необходимости.
- Тип — главное свойство (см. следующий раздел).
- Имя — латиницей или кириллицей, без пробелов, например
- При необходимости задайте Индексировать —
Индексировать, если по полю будут искать или отбирать; иначе оставьтеНе индексировать. - Сохраните конфигурацию (
Ctrl+S). - Обновите конфигурацию базы данных клавишей
F7(Конфигурация → Обновить конфигурацию базы данных). В окне принятия изменений подтвердите реструктуризацию.
Шаг 7 и есть момент, когда поле реально появляется в таблице базы. Пока вы его не сделали, реквизит существует только в редактируемой конфигурации, а не в рабочей базе.
Как выбрать тип и длину
Тип определяет, что хранится в поле. Основные варианты:
| Тип | Что настроить | Пример |
|---|---|---|
| Строка | Длина, фикс./перем. | Комментарий, номер телефона |
| Число | Длина и точность (знаков после запятой) | Процент скидки |
| Дата | Состав: дата, время или дата+время | Дата договора |
| Булево | — | Признак «Основной» |
| СправочникСсылка.<Имя> | — | Ссылка на «Организации» |
Несколько тонкостей по типам:
- Для строки с переменной длиной
0означает неограниченную длину — такое поле не индексируется и медленнее в отборах. Ставьте реальную длину (например, 150 для адреса). - У числа длина — это всего знаков, включая дробную часть. Для суммы с копейками подойдёт длина 15, точность 2.
- Ссылочный тип (
СправочникСсылка.Контрагенты,ДокументСсылка.*,ПеречислениеСсылка.*) превращает поле в выбор из другого объекта — именно так связывают объекты между собой.
Два свойства реквизита, про которые часто забывают, но которые экономят время потом:
- Проверка заполнения. Значение
Выдавать ошибкуделает поле обязательным: платформа не даст записать объект с пустым реквизитом и сама подсветит его красным. Удобно для полей, без которых документ бессмыслен. - Индексировать. Для поля, по которому будут искать или отбирать списки, ставят
Индексировать. Если по полю ещё и сортируют вместе с другим реквизитом, подойдётИндексировать с доп. упорядочиванием. Лишние индексы, наоборот, замедляют запись, поэтому индексируют только то, что реально участвует в отборах.
Реквизит документа и табличной части
У документа всё то же самое, но веток две:
- Реквизит шапки добавляют в
Документы → <Документ> → Реквизиты— одно значение на документ (вид операции, склад, комментарий). - Реквизит строки таблицы добавляют в
Документы → <Документ> → Табличные части → <ТабЧасть> → Реквизиты— своё значение в каждой строке.
У документа чаще, чем у справочника, значение реквизита участвует в проводках и движениях по регистрам. Если новое поле должно попадать в проводки, одним добавлением реквизита не обойтись — дорабатывают модуль проведения (процедуру формирования движений). Само поле лишь хранит данные.
Для справочника с иерархией помните: у реквизита есть свойство Использование — Для элемента, Для группы или Для элемента и группы. Если поле нужно только карточкам, а не папкам, выставьте Для элемента, иначе колонка будет пустой у групп.
Составной тип: когда в одном поле несколько видов значений
Иногда в поле нужно хранить значения разных типов — например, «Плательщик» может быть и контрагентом, и сотрудником. Для этого в свойстве Тип выбирают составной тип:
- В окне выбора типа установите флажок
Составной тип данных. - Отметьте галочками все нужные типы:
СправочникСсылка.Контрагенты,СправочникСсылка.Сотрудникии т. д.
Что важно знать про составные типы:
- 🔹 В коде перед обращением к такому полю проверяйте фактический тип через
ТипЗнч(Объект.Плательщик)— методы у разных типов разные. - 🔹 Составное поле занимает в базе больше места и хуже индексируется, чем простое ссылочное. Не делайте составным «на всякий случай» — только когда это действительно разные сущности.
- 🔹 Пустое значение составного типа — это
Неопределено, а не пустая ссылка конкретного справочника. Это частый источник ошибок в условиях.
Как вывести реквизит на форму
Добавить реквизит мало — пользователь его ещё не видит. Здесь два случая.
Форма генерируется автоматически. Если у объекта не создано ни одной формы вручную, платформа строит форму сама и новое поле появится в ней без дополнительных действий — достаточно обновить базу
(F7).
Форма создана в конфигурации. Тогда поле на неё надо добавить руками:
- Откройте нужную форму объекта (
<Объект> → Формы → ФормаЭлементаилиФормаДокумента). - В редакторе формы на вкладке
Реквизитыраскройте основной реквизитОбъект— в списке появится ваш новый реквизит. - Перетащите его мышью из дерева реквизитов в дерево
Элементы(левая верхняя панель). Платформа создаст поле ввода. - Разместите поле в нужном месте, при необходимости поправьте заголовок и ширину в свойствах элемента.
Если форм несколько (форма элемента, форма для выбора, мобильная), поле добавляют на каждую, где оно нужно. Автогенерируемые формы правок не требуют.
Добавление реквизита в типовую конфигурацию через расширение
Напрямую менять типовую БП 3.0, ЗУП 3.1 или УТ 11 — плохая идея: при каждом обновлении придётся вручную сверять изменения. Правильный путь — расширение конфигурации
(механизм появился в платформе 8.3.6, файлы .cfe). Реквизит добавляется в расширение, типовая остаётся на поддержке нетронутой.
Конфигурация → Расширения конфигурации→ кнопкаДобавить→ задайте имя и префикс расширения.- Откройте конфигурацию расширения. В дереве
Справочникиправой кнопкой →Добавить в расширение— выберите нужный типовой объект (он станет заимствованным). - У заимствованного объекта в ветке
Реквизитыдобавьте свой реквизит — ровно как описано выше. - Сохраните расширение и обновите конфигурацию базы данных (
F7).
Загрузка файла .cfe (Расширения → Загрузить из файла) и обновление конфигурации базы данных — два разных шага. После загрузки расширения структура базы меняется только на F7 в монопольном режиме, пока в базе нет активных сеансов.
Собственные реквизиты из расширения не конфликтуют с обновлениями типовой конфигурации, поэтому обновлять её можно как обычно. Префикс расширения добавляется к именам новых объектов автоматически — это защищает от совпадения имён с будущими реквизитами самой типовой.
Пути к механизму расширений по конфигурациям совпадают, потому что это функция платформы, а не прикладного решения:
| Конфигурация | Где включить расширения |
|---|---|
| БП 3.0 | Конфигурация → Расширения конфигурации (в Конфигураторе) |
| ЗУП 3.1 | там же |
| УТ 11 | там же |
Пользователь с правами администратора может подключить готовое расширение и в режиме 1С:Предприятие: НСИ и администрирование → Печатные формы, отчёты и обработки → Расширения. Но добавить через этот путь можно только само расширение целиком, а не отдельный реквизит — его всё равно заводят в Конфигураторе.
Типичные ошибки при добавлении реквизита
F7 и примите реструктуризацию. До этого шага поле есть только в конфигурации.F7.Неопределено или другого вида, чем ждёте. Проверяйте ТипЗнч() и обрабатывайте пустое значение.Ещё два момента, на которых часто спотыкаются:
- Длина строки 0. Неограниченная строка не индексируется и тормозит отборы. Для полей, по которым ищут, задавайте конкретную длину.
- Реквизит вместо регистра. Если нужно хранить историю значения (например, менялась ли категория клиента по датам), простой реквизит хранит только текущее значение. Для истории заводят периодический регистр сведений, а не множат реквизиты.
Как заполнять реквизит автоматически и хранить изменения
«Расчётного реквизита», который сам пересчитывается, в справочниках и документах нет — значение всегда где-то записывается. Автозаполнение делают в обработчиках событий модуля объекта:
ОбработкаЗаполнения— для значений по умолчанию при создании нового элемента или документа.ПередЗаписью/ПриЗаписи— чтобы вычислить и записать поле на основе других реквизитов перед сохранением.
Логику пишут в модуле объекта (<Объект> → Открыть модуль объекта), а для типовой — в модуле заимствованного объекта расширения, чтобы не снимать конфигурацию с поддержки.
Для командной разработки и отслеживания правок конфигурацию подключают к хранилищу конфигурации (Конфигурация → Хранилище конфигурации): объекты захватываются на редактирование, изменения помещаются с комментарием, видна история версий. Это и есть контроль версий метаданных: кто и когда добавил реквизит, всегда можно посмотреть и при необходимости откатить.
Нужен ли монопольный режим, чтобы добавить реквизит?
F7), когда меняется структура таблиц.