Реквизиты в 1С 8.3: создаём новое поле в справочнике и документе без потери данных

· 10 мин

Содержание

Добавить реквизит в 1С можно двумя путями. В типовых конфигурациях (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) включите флажок «Дополнительные реквизиты и сведения» в общих настройках администрирования и создайте поле прямо в пользовательском режиме. Если нужен «настоящий» реквизит — с индексом, проверкой в коде, участием в проведении, — его создают в конфигураторе, а в типовой базе лучше в расширении, чтобы не снимать конфигурацию с поддержки.

Главное правило выбора: поле только для учёта, отборов и отчётов — дополнительный реквизит; поле для проведения и расчётов — реквизит в расширении или конфигураторе.

Что должно делать новое поле?

Что такое реквизит объекта и чем он отличается от сведения

Реквизит — это поле объекта конфигурации: справочника, документа, плана видов характеристик, бизнес-процесса. В базе данных каждому реквизиту соответствует колонка таблицы объекта. ИНН у контрагента, склад в документе, дата приёма у сотрудника — всё это реквизиты.

У каждого объекта есть два вида реквизитов:

  • 📌 Стандартные — создаются платформой автоматически: Ссылка, Код, Наименование, ПометкаУдаления у справочника; Номер, Дата, Проведен у документа. Удалить их нельзя, можно только настроить (длину кода, тип номера).
  • ✏️ Собственные — те, что добавляет разработчик или администратор.

Отдельно стоят реквизиты табличной части. Это поле строки таблицы, например «Номенклатура», «Количество», «Цена» в товарах документа. Если значение одно на весь документ — делайте реквизит шапки. Если своё в каждой строке — реквизит табличной части.

В типовых конфигурациях на БСП есть ещё два близких понятия:

ЧтоГде хранитсяКогда нужно
Дополнительный реквизитВ табличной части ДополнительныеРеквизиты самого объектаПоле — часть объекта, меняется вместе с ним, требует права на изменение объекта
Дополнительное сведениеВ отдельном регистре сведений ДополнительныеСведенияЗначение можно менять, не открывая объект на запись: например, отметка на проведённом документе закрытого периода

Типы реквизитов: что выбрать под задачу

Тип задаёт, какие значения поле примет. Ошибка в типе потом дорого стоит: смена типа с данными в базе часто обнуляет значения.

ТипПримерНа что смотреть
СтрокаНомер договора, комментарийДлина. 0 — неограниченная строка: её нельзя индексировать и напрямую сравнивать в запросе
ЧислоНорма расхода, процент скидкиДлина и точность. 15,2 — 13 знаков до запятой и 2 после. Флажок «Неотрицательное»
ДатаСрок поставкиСостав даты: «Дата», «Время» или «Дата и время»
Булево«Ключевой клиент»Только Да/Нет, без третьего состояния
СсылочныйМенеджер, склад, вид операцииСправочникСсылка.Пользователи, ДокументСсылка.ЗаказКлиента, ПеречислениеСсылка.*
СоставнойОснование: заказ или договорНесколько типов в одном поле. Удобно, но запросы с таким полем работают медленнее
Хранилище значенияСкан, файлНе участвует в отборах и запросах. Для файлов в типовых базах есть механизм присоединённых файлов

💡 Правило практика: если значений ограниченное число и они редко меняются (3–10 вариантов) — перечисление или справочник. Если вариантов сотни и их ведут пользователи — справочник. Строку для выбора из списка не используйте: через полгода в базе будут «ООО», «ооо» и «О.О.О.».

Способ 1. Дополнительный реквизит в пользовательском режиме

Этот способ не меняет конфигурацию. Обновления ставятся как обычно, программист не нужен. Подходит, когда поле нужно для учёта, отбора в списках и отчётов, но не для расчётов в проведении.

Шаг 1. Включите функциональность

В Бухгалтерии 3.0 откройте Администрирование → Общие настройки и установите флажок «Дополнительные реквизиты и сведения». Рядом появятся ссылки «Дополнительные реквизиты» и «Дополнительные сведения».

В ЗУП 3.1 и УТ 11 этот же флажок находится в общих настройках раздела администрирования (в УТ 11 раздел называется «НСИ и администрирование»).

Шаг 2. Выберите объект

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

Шаг 3. Создайте реквизит

  1. Нажмите Создать и выберите вариант «Новый». Вариант «Из другого набора» подставляет уже существующий общий реквизит — так одно поле можно вести у нескольких объектов.
  2. Заполните наименование — его увидят пользователи на форме.
  3. Выберите тип значения. Для выбора из списка подходит тип «Дополнительное значение»: список вариантов заполняется прямо в карточке реквизита, на закладке значений.
  4. При необходимости отметьте «Заполнять обязательно». Без значения объект не запишется.
  5. Нажмите Записать и закрыть.

Шаг 4. Проверьте форму

Откройте любого контрагента. Новое поле появится в группе «Дополнительные реквизиты» — обычно внизу формы или на отдельной закладке. Если поля не видно, проверьте, не свёрнута ли группа, и не настроена ли форма пользователем (Ещё → Изменить форму, сброс к стандартным настройкам).

Дополнительные реквизиты не появляются в печатных формах и не попадают в проводки сами по себе. Для печати нужна доработка макета, обычно через расширение или внешнюю печатную форму.

Способ 2. Реквизит в конфигураторе

Этот путь нужен для собственной конфигурации или когда без кода не обойтись: реквизит участвует в проведении, по нему строятся движения регистров, на нём висят проверки.

Шаг 1. Подготовка

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

Шаг 2. Добавьте реквизит

  1. Откройте конфигурацию: Конфигурация → Открыть конфигурацию.
  2. В дереве раскройте ветку, например Справочники → Контрагенты.
  3. Правой кнопкой по узлу «Реквизиты» → Добавить. Второй вариант — двойной щелчок по объекту, закладка «Данные», кнопка добавления над списком реквизитов.
  4. Откроется палитра свойств (если нет — Alt+Enter). Задайте имя, синоним и тип.

Требования к имени: начинается с буквы или подчёркивания, без пробелов, уникально в пределах объекта и не совпадает со стандартными реквизитами. Хорошее имя: МенеджерПроекта. Плохое: Реквизит1.

Шаг 3. Выведите реквизит на форму

Новый реквизит не появляется на управляемой форме, если у объекта есть своя форма. Откройте форму элемента на закладке «Формы». В правом верхнем окне редактора раскройте реквизит Объект, найдите новое поле и перетащите его в дерево элементов слева, в нужную группу.

Если формы у объекта нет и платформа строит её автоматически, поле появится само.

Шаг 4. Обновите конфигурацию базы данных

Нажмите F7 или Конфигурация → Обновить конфигурацию базы данных. Конфигуратор покажет список изменений структуры — в нём должен быть только ваш реквизит. Если в списке неожиданно оказались другие объекты, нажмите «Отмена» и разберитесь, кто ещё правил конфигурацию.

Если конфигурация типовая — используйте расширение

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

  1. Конфигурация → Расширения конфигурации → добавить новое расширение.
  2. В дереве основной конфигурации правой кнопкой по объекту → Добавить в расширение. Объект станет «заимствованным».
  3. В расширении у заимствованного объекта добавьте реквизит так же, как в шаге 2.
  4. Позаимствуйте форму объекта и выведите на неё поле.
  5. Обновите конфигурацию базы данных. Расширение применяется при следующем входе пользователей.

💡 Добавление собственных реквизитов в заимствованные объекты поддерживается в актуальных версиях платформы 8.3. Если конфигуратор не даёт добавить реквизит в расширении, проверьте номер платформы — он должен быть не ниже 8.3.11.

Настройка свойств реквизита: что важно не пропустить

Палитра свойств большая, но реально влияют на работу десяток пунктов.

СвойствоЧто даёт
СинонимПодпись поля на форме и в отчётах. Без синонима пользователь увидит имя МенеджерПроекта с разбивкой по словам
ПодсказкаВсплывающий текст у поля на форме
Проверка заполнения«Выдавать ошибку» — объект не запишется с пустым полем
Значение заполненияЗначение по умолчанию для нового объекта
ИндексироватьУскоряет отборы и поиск по полю. Вариант «Индексировать с доп. упорядочиванием» ускоряет сортировку списков
ИспользованиеТолько у иерархических справочников: для элемента, для группы или для обоих
Параметры выбораОграничивают список выбора: например, только контрагенты-поставщики
Связи параметров выбораСвязывают поля: договор выбирается только по выбранному контрагенту
Полнотекстовый поискИспользовать или нет поле в полнотекстовом поиске
Маска, форматВвод телефона по маске, вывод числа с разделителями

Индекс — не бесплатная опция. Каждый индекс замедляет запись и занимает место. Ставьте его на поля, по которым реально отбирают списки или соединяют таблицы в запросах.

Реквизиты на практике: три примера

🧑‍💼 Ответственный менеджер у контрагента. Тип — СправочникСсылка.Пользователи, индексировать — да (по нему отбирают список клиентов), значение заполнения — пусто. В типовой БП достаточно дополнительного реквизита со значением типа «Пользователь».

📄 Номер внешнего договора в реализации. Реквизит шапки, строка длиной 50, фиксированной длины не нужно. Проверка заполнения — только если номер есть у каждого клиента, иначе пользователи начнут вписывать прочерки.

🔢 Серийный номер в строке товаров. Реквизит табличной части, а не шапки: серийник у каждой строки свой. Если по серийникам нужен учёт остатков, одного реквизита мало — понадобится регистр и доработка проведения.

Новый реквизит в запросах, коде и отчётах

Обычный реквизит

В запросе к собственному реквизиту обращаются по имени, как к любому полю таблицы:

ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    Контрагенты.МенеджерПроекта КАК Менеджер
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.МенеджерПроекта = &Менеджер

Неограниченную строку в условии так не сравнить — её сначала приводят к строке фиксированной длины:

ГДЕ
    ВЫРАЗИТЬ(Документ.Комментарий КАК СТРОКА(200)) = &Текст

В коде значение читают через объект (Объект.МенеджерПроекта) или, если нужен один реквизит по ссылке, функцией БСП ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "МенеджерПроекта"). Она не загружает объект целиком и работает быстрее, чем Ссылка.ПолучитьОбъект().

Дополнительный реквизит

Значения дополнительных реквизитов лежат в табличной части объекта. Строка содержит свойство (ссылку на элемент плана видов характеристик) и значение:

ВЫБРАТЬ
    ДопРеквизиты.Ссылка КАК Контрагент,
    ДопРеквизиты.Значение КАК Значение
ИЗ
    Справочник.Контрагенты.ДополнительныеРеквизиты КАК ДопРеквизиты
ГДЕ
    ДопРеквизиты.Свойство = &Свойство

В параметр &Свойство передают ссылку на элемент плана видов характеристик ДополнительныеРеквизитыИДополнительныеСведения. Дополнительные сведения в этой таблице не найти — их читают из регистра сведений ДополнительныеСведения с отбором по объекту и свойству.

Отчёты

В отчётах на системе компоновки данных новое поле объекта доступно через точку от ссылки: Контрагент.МенеджерПроекта. Откройте настройки отчёта, в списке полей раскройте реквизит со ссылкой (плюсиком) и добавьте нужное поле в группировки, отбор или колонки.

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

Ошибки, после которых теряются данные или ломается обновление

  • ❌ Удалили реквизит с данными. При обновлении структуры колонка удаляется вместе со значениями. Безопаснее сначала переименовать реквизит с префиксом Удалить (так принято в БСП), убрать с форм и удалить через один-два релиза, когда данные точно не нужны.
  • ❌ Переименовали реквизит. Платформа сохранит данные, но весь код, запросы и внешние отчёты, где было старое имя, перестанут работать. Перед переименованием выполните поиск по имени во всей конфигурации (Ctrl+Shift+F).
  • ❌ Сменили тип. Например, строку на ссылку. Значения, которые нельзя преобразовать, обнулятся. Правильный путь: новый реквизит, обработка переноса данных, затем удаление старого.
  • ❌ Короткая строка. Длина 10 для номера договора — и номера обрежутся без всяких предупреждений. Закладывайте запас.
  • ❌ Сняли типовую с поддержки ради одного поля. Каждое следующее обновление становится сравнением и объединением конфигураций. Для таких задач есть расширения и дополнительные реквизиты.
  • ❌ Создали дубль дополнительного реквизита. Два поля «Менеджер» у контрагентов — и половина данных в одном, половина в другом. Перед созданием проверьте список реквизитов объекта и общие реквизиты из других наборов.

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

Сколько реквизитов можно добавить к одному объекту?
Жёсткого практического предела в обычной работе нет, но каждая колонка утяжеляет таблицу. Десятки полей у справочника — нормально, сотни — повод вынести данные в регистр сведений.
Слетит ли дополнительный реквизит после обновления типовой конфигурации?
Нет. Дополнительные реквизиты и их значения хранятся в данных базы, а не в конфигурации, поэтому обновление их не затрагивает.
Можно ли перенести дополнительные реквизиты в другую базу?
Да, если они нужны вместе со значениями — через правила обмена или выгрузку-загрузку данных. Сами описания реквизитов — элементы плана видов характеристик, их переносят так же, как обычные данные.
Реквизит есть в конфигураторе, но в программе его не видно. Почему?
Чаще всего его забыли вывести на форму или не обновили конфигурацию базы данных. Ещё одна причина — у пользователя сохранены свои настройки формы: сбросьте их через Ещё → Изменить форму.
Можно ли сделать дополнительный реквизит видимым не всем пользователям?
Да. В карточке дополнительного реквизита есть настройки видимости и доступности, в том числе по условиям. Разграничение по ролям в типовых конфигурациях делается через настройки прав доступа.