Добавляем новый реквизит в справочник или документ 1С 8.3

· 9 мин

Содержание

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

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

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

Каким способом добавить поле и в какой объект

Сначала определитесь, куда именно нужен реквизит и кто будет с ним работать.

Конфигуратор или дополнительный реквизит?

Реквизит всегда принадлежит конкретному объекту метаданных. Чаще всего поле добавляют в:

  • 📁 Справочник — постоянная характеристика элемента: ИНН контрагента , артикул номенклатуры, категория.
  • 📄 Документ — параметр конкретной операции: номер договора, срок оплаты, признак предоплаты.
  • 📊 Регистр сведений или накопления — здесь поля называются измерениями и ресурсами, а не реквизитами, и логика у них другая.

Определите объект до того, как открывать дерево конфигурации: от этого зависит, в какую ветку добавлять поле.

Открываем дерево конфигурации в Конфигураторе

Запустите базу в режиме Конфигуратор (выбор режима — в окне запуска 1С при старте). Затем откройте окно структуры: меню Конфигурация → Открыть конфигурацию.

Появится дерево — иерархический список всех объектов базы: «Справочники», «Документы», «Регистры сведений» и так далее. Разверните нужную ветку и найдите свой объект, например Справочники → Контрагенты.

Внутри каждого объекта есть подчинённая ветка «Реквизиты». Именно в неё добавляются обычные поля. Рядом вы увидите «Табличные части», «Формы», «Макеты» — их пока не трогаем.

Если дерево кажется огромным, нажмите над ним кнопку поиска и введите имя объекта — список отфильтруется.

Создаём реквизит: пошагово

Порядок действий одинаков для справочника и для документа.

  1. Нажмите правой кнопкой по ветке «Реквизиты» нужного объекта и выберите «Добавить». Появится новый реквизит и откроется палитра свойств.
  2. В свойстве «Имя» задайте идентификатор латиницей или кириллицей без пробелов — например СрокДействия. По этому имени к полю обращаются в коде и запросах.
  3. «Синоним» заполнится автоматически из имени — это подпись, которую видит пользователь на форме. Поправьте её на читаемую: «Срок действия».
  4. Задайте «Тип» данных (разберём в следующем разделе) и, если нужно, длину.
  5. При необходимости включите «Проверку заполнения» — тогда 1С не даст записать объект с пустым полем.
  6. Сохраните конфигурацию кнопкой на панели или Ctrl+S.

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

Имя реквизита нельзя начинать с цифры и нельзя дублировать внутри одного объекта. Если имя подсвечивается красным — проверьте эти два правила.

Ещё несколько свойств в палитре, которые пригодятся на практике:

  • «Проверка заполнения» — значение «Выдавать ошибку» запрещает записать объект с пустым полем. Удобно для обязательных реквизитов вроде ИНН.
  • «Использование» (для реквизитов, видимых в выборе) и «Быстрый выбор» — управляют тем, как поле ведёт себя в формах списка и подбора.
  • «Полнотекстовый поиск» — включайте, если по содержимому поля должен работать поиск в режиме предприятия. По умолчанию он уже разрешён.
  • «Индексировать» — отдельная большая тема, разбираем её ниже.

Имя и синоним лучше задать осмысленно сразу: переименовать реквизит позже можно, но если на него уже ссылается код, запросы и формы, придётся править все места использования вручную.

Тип данных, длина и другие свойства

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

ТипЧто хранитКогда выбирать
СтрокаТекстНазвания, комментарии, коды
ЧислоЦифровое значениеСуммы, количества, проценты
ДатаДата и/или времяСроки, даты событий
БулевоДа/НетПризнаки, флажки
СправочникСсылка.<Имя>Ссылку на элемент справочникаКонтрагент, склад, подразделение
ПеречислениеСсылка.<Имя>Фиксированный вариант из спискаСтатус, вид операции

Для строки важна длина. Поставьте реальный максимум (например, 50 для короткого кода): запас «на всякий случай» в 500 символов увеличивает размер таблицы. Рядом есть свойство «Допустимая длина» — «Переменная» хранит ровно столько, сколько введено, и в большинстве случаев подходит.

Для числа задайте длину (сколько всего знаков) и точность (сколько из них после запятой). Для суммы в рублях с копейками это длина 15 и точность 2.

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

Отдельно про перечисления. Если у поля заранее известный короткий набор вариантов (скажем, «Новый», «В работе», «Закрыт»), не держите их строкой — создайте перечисление и укажите тип ПеречислениеСсылка.<Имя>. Тогда пользователь выбирает значение из списка, а не вводит текст руками, и в данных не будет разнобоя вроде «закрыт» и «Закрыто».

Ссылочные типы (СправочникСсылка.*, ДокументСсылка.*) — самое частое поле в учёте. Через них связывают объекты между собой: в документ кладут ссылку на справочник, а не копируют его данные.

Реквизиты в табличной части

Табличная часть — это таблица внутри объекта: строки товаров в накладной, список сотрудников в приказе. У неё свои столбцы, и каждый столбец — отдельный реквизит.

Чтобы добавить столбец:

  1. В дереве разверните объект и найдите ветку «Табличные части».
  2. Раскройте нужную таблицу — у неё внутри тоже есть ветка «Реквизиты».
  3. Добавьте реквизит так же, как для объекта: правая кнопка → «Добавить», затем имя, синоним и тип.

Разница только в расположении в дереве. Если таблицы ещё нет, сначала добавьте саму табличную часть (правая кнопка по «Табличные части» → «Добавить»), а потом наполните её столбцами.

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

Обновление конфигурации базы данных

Это тот шаг, который чаще всего забывают — и потом удивляются, почему нового поля нигде нет.

Сохранение конфигурации (Ctrl+S) меняет только проект. Структуру реальной базы перестраивает отдельная команда: Конфигурация → Обновить конфигурацию базы данных или клавиша F7. 1С покажет список изменений и предложит принять их — на этом шаге создаётся физический столбец в таблице СУБД.

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

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

Перед обновлением рабочей базы
Выполнено: 0 / 4

Вывод на форму и обращение из кода

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

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

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

Здесь важно не путать два понятия. Реквизит объекта хранится в базе — это то поле, что мы создали в дереве метаданных. Реквизит формы — это данные, с которыми работает конкретная форма; основной объект лежит в реквизите формы с типом «ДанныеФормыСтруктура». Поэтому на форме к новому полю обращаются через корневой реквизит: Объект.СрокДействия. Если перетащить поле мышью, 1С выстроит этот путь сама.

В коде к реквизиту обращаются через точку. Чтение значения:

Элемент = Справочники.Контрагенты.НайтиПоКоду("000000123");
ЗначениеПоля = Элемент.СрокДействия;

Запись выполняется через объект — ссылку сначала получают методом ПолучитьОбъект():

ОбъектКонтрагент = Элемент.ПолучитьОбъект();
ОбъектКонтрагент.СрокДействия = '20260101';
ОбъектКонтрагент.Записать();

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

Индексирование нового поля

Свойство «Индексировать» в палитре определяет, построит ли 1С по полю индекс. Варианты: «Не индексировать», «Индексировать», «Индексировать с дополнительным упорядочиванием».

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

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

После смены свойства «Индексировать» тоже требуется обновление конфигурации базы данных — индекс строится именно на этом шаге.

Дополнительные реквизиты без Конфигуратора

Если трогать конфигурацию нельзя, а поле нужно для ручного заполнения, в типовых конфигурациях на базе БСП есть механизм дополнительных реквизитов. Он работает в режиме «1С:Предприятие».

В «1С:Бухгалтерии 8» путь такой: Администрирование → Общие настройки → Дополнительные реквизиты и сведения. Сначала включите одноимённый флажок, затем выберите набор (например, элементы справочника «Номенклатура») и добавьте в него новое поле — с типом, списком значений и подсказкой.

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

Промежуточный вариант — расширение конфигурации (доступно с платформы 8.3.6). В нём создаётся полноценный реквизит метаданных, но хранится он отдельным файлом .cfe, а основная конфигурация остаётся на поддержке и спокойно обновляется. Расширение подключают в режиме предприятия через Администрирование → Печатные формы, отчёты и обработки → Расширения, после чего выполняют обновление конфигурации базы данных — так же, как при правке основной конфигурации. Это компромисс между гибкостью Конфигуратора и сохранением типовой на поддержке.

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