Добавление реквизита объекту конфигурации 1С 8.3 через Конфигуратор

· 9 мин

Содержание

Новый реквизит добавляют в Конфигураторе 1С 8.3: открыть конфигурацию, в дереве найти нужный объект (справочник, документ), развернуть ветку Реквизиты, правой кнопкой Добавить и задать имя и тип. Чтобы поле появилось в базе, после этого нужно обновить конфигурацию базы данных клавишей F7 в монопольном режиме.

Разберём порядок на справочнике и документе: как выбрать тип, настроить длину и точность, сделать составной тип и вывести поле на форму. Отдельно — как добавить реквизит в типовую конфигурацию (БП 3.0, ЗУП 3.1, УТ 11) через расширение, не снимая её с поддержки.

Что такое реквизит и где он хранится

Реквизит — это дополнительное поле (колонка) объекта конфигурации. У справочника «Контрагенты» реквизиты — это ИНН, телефон, основной менеджер; у документа «Реализация» — склад, вид операции, ответственный. На уровне СУБД каждый реквизит превращается в колонку таблицы объекта.

Реквизиты бывают двух видов:

  • 🔹 Реквизиты объекта (шапки) — одно значение на элемент справочника или документа. Например, один склад на весь документ.
  • 🔹 Реквизиты табличной части — значения в строках таблицы. Например, номенклатура, количество и цена в строках реализации.

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

Что подготовить перед добавлением

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

Сделайте резервную копию информационной базы. Выгрузка в .dt (Администрирование → Выгрузить информационную базу) или архив файла 1Cv8.1CD — на случай, если обновление структуры пойдёт не так.

Что ещё учесть заранее:

  • Для типовой конфигурации на поддержке прямое редактирование по умолчанию закрыто. Либо включают возможность изменения (снятие с поддержки), либо — что правильнее — добавляют реквизит через расширение (см. раздел ниже).
  • Обновление структуры базы требует монопольного доступа: в этот момент в базе не должно быть активных сеансов пользователей. Само редактирование конфигурации монополии не требует — она нужна только на шаге F7.
  • Запускать Конфигуратор лучше под пользователем с правом администрирования.
Перед добавлением реквизита
Выполнено: 0 / 4

Как добавить реквизит справочнику: пошагово

Базовый сценарий — новое поле в справочнике. Порядок одинаков для всех конфигураций на платформе 8.3 с интерфейсом «Такси».

  1. В Конфигураторе откройте дерево конфигурации: Конфигурация → Открыть конфигурацию.
  2. Разверните ветку Справочники, найдите нужный справочник, раскройте его и выделите папку Реквизиты.
  3. Правой кнопкой по Реквизиты → Добавить (или клавиша Ins). Появится новый реквизит и окно его свойств (палитра свойств, по умолчанию справа; если закрыта — F4).
  4. Заполните свойства:
    • Имя — латиницей или кириллицей, без пробелов, например ОсновнойМенеджер. Это идентификатор для кода.
    • Синоним — подставится автоматически из имени, это заголовок поля для пользователя. Поправьте при необходимости.
    • Тип — главное свойство (см. следующий раздел).
  5. При необходимости задайте Индексировать — Индексировать, если по полю будут искать или отбирать; иначе оставьте Не индексировать.
  6. Сохраните конфигурацию (Ctrl+S).
  7. Обновите конфигурацию базы данных клавишей F7 (Конфигурация → Обновить конфигурацию базы данных). В окне принятия изменений подтвердите реструктуризацию.

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

Как выбрать тип и длину

Тип определяет, что хранится в поле. Основные варианты:

ТипЧто настроитьПример
СтрокаДлина, фикс./перем.Комментарий, номер телефона
ЧислоДлина и точность (знаков после запятой)Процент скидки
ДатаСостав: дата, время или дата+времяДата договора
Булево—Признак «Основной»
СправочникСсылка.<Имя>—Ссылка на «Организации»

Несколько тонкостей по типам:

  • Для строки с переменной длиной 0 означает неограниченную длину — такое поле не индексируется и медленнее в отборах. Ставьте реальную длину (например, 150 для адреса).
  • У числа длина — это всего знаков, включая дробную часть. Для суммы с копейками подойдёт длина 15, точность 2.
  • Ссылочный тип (СправочникСсылка.Контрагенты, ДокументСсылка.*, ПеречислениеСсылка.*) превращает поле в выбор из другого объекта — именно так связывают объекты между собой.

Два свойства реквизита, про которые часто забывают, но которые экономят время потом:

  • Проверка заполнения. Значение Выдавать ошибку делает поле обязательным: платформа не даст записать объект с пустым реквизитом и сама подсветит его красным. Удобно для полей, без которых документ бессмыслен.
  • Индексировать. Для поля, по которому будут искать или отбирать списки, ставят Индексировать. Если по полю ещё и сортируют вместе с другим реквизитом, подойдёт Индексировать с доп. упорядочиванием. Лишние индексы, наоборот, замедляют запись, поэтому индексируют только то, что реально участвует в отборах.

Реквизит документа и табличной части

У документа всё то же самое, но веток две:

  • Реквизит шапки добавляют в Документы → <Документ> → Реквизиты — одно значение на документ (вид операции, склад, комментарий).
  • Реквизит строки таблицы добавляют в Документы → <Документ> → Табличные части → <ТабЧасть> → Реквизиты — своё значение в каждой строке.

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

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

Составной тип: когда в одном поле несколько видов значений

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

  1. В окне выбора типа установите флажок Составной тип данных.
  2. Отметьте галочками все нужные типы: СправочникСсылка.Контрагенты, СправочникСсылка.Сотрудники и т. д.

Что важно знать про составные типы:

  • 🔹 В коде перед обращением к такому полю проверяйте фактический тип через ТипЗнч(Объект.Плательщик) — методы у разных типов разные.
  • 🔹 Составное поле занимает в базе больше места и хуже индексируется, чем простое ссылочное. Не делайте составным «на всякий случай» — только когда это действительно разные сущности.
  • 🔹 Пустое значение составного типа — это Неопределено, а не пустая ссылка конкретного справочника. Это частый источник ошибок в условиях.

Как вывести реквизит на форму

Добавить реквизит мало — пользователь его ещё не видит. Здесь два случая.

Форма генерируется автоматически. Если у объекта не создано ни одной формы вручную, платформа строит форму сама и новое поле появится в ней без дополнительных действий — достаточно обновить базу (F7).

Форма создана в конфигурации. Тогда поле на неё надо добавить руками:

  1. Откройте нужную форму объекта (<Объект> → Формы → ФормаЭлемента или ФормаДокумента).
  2. В редакторе формы на вкладке Реквизиты раскройте основной реквизит Объект — в списке появится ваш новый реквизит.
  3. Перетащите его мышью из дерева реквизитов в дерево Элементы (левая верхняя панель). Платформа создаст поле ввода.
  4. Разместите поле в нужном месте, при необходимости поправьте заголовок и ширину в свойствах элемента.

Если форм несколько (форма элемента, форма для выбора, мобильная), поле добавляют на каждую, где оно нужно. Автогенерируемые формы правок не требуют.

Добавление реквизита в типовую конфигурацию через расширение

Напрямую менять типовую БП 3.0, ЗУП 3.1 или УТ 11 — плохая идея: при каждом обновлении придётся вручную сверять изменения. Правильный путь — расширение конфигурации (механизм появился в платформе 8.3.6, файлы .cfe). Реквизит добавляется в расширение, типовая остаётся на поддержке нетронутой.

  1. Конфигурация → Расширения конфигурации → кнопка Добавить → задайте имя и префикс расширения.
  2. Откройте конфигурацию расширения. В дереве Справочники правой кнопкой → Добавить в расширение — выберите нужный типовой объект (он станет заимствованным).
  3. У заимствованного объекта в ветке Реквизиты добавьте свой реквизит — ровно как описано выше.
  4. Сохраните расширение и обновите конфигурацию базы данных (F7).

Загрузка файла .cfe (Расширения → Загрузить из файла) и обновление конфигурации базы данных — два разных шага. После загрузки расширения структура базы меняется только на F7 в монопольном режиме, пока в базе нет активных сеансов.

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

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

КонфигурацияГде включить расширения
БП 3.0Конфигурация → Расширения конфигурации (в Конфигураторе)
ЗУП 3.1там же
УТ 11там же

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

Типичные ошибки при добавлении реквизита

Диагностика: выберите симптом

Ещё два момента, на которых часто спотыкаются:

  • Длина строки 0. Неограниченная строка не индексируется и тормозит отборы. Для полей, по которым ищут, задавайте конкретную длину.
  • Реквизит вместо регистра. Если нужно хранить историю значения (например, менялась ли категория клиента по датам), простой реквизит хранит только текущее значение. Для истории заводят периодический регистр сведений, а не множат реквизиты.

Как заполнять реквизит автоматически и хранить изменения

«Расчётного реквизита», который сам пересчитывается, в справочниках и документах нет — значение всегда где-то записывается. Автозаполнение делают в обработчиках событий модуля объекта:

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

Логику пишут в модуле объекта (<Объект> → Открыть модуль объекта), а для типовой — в модуле заимствованного объекта расширения, чтобы не снимать конфигурацию с поддержки.

Для командной разработки и отслеживания правок конфигурацию подключают к хранилищу конфигурации (Конфигурация → Хранилище конфигурации): объекты захватываются на редактирование, изменения помещаются с комментарием, видна история версий. Это и есть контроль версий метаданных: кто и когда добавил реквизит, всегда можно посмотреть и при необходимости откатить.

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