Добавляем новый реквизит в конфигурацию 1С:УНФ

· 9 мин

Содержание

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

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

Какой из трёх способов добавить реквизит выбрать под вашу задачу:

Какой способ добавления поля выбрать?

С чего начать: поддержка, копия и монопольный режим

Перед любой правкой метаданных оцените три вещи.

  • 🗄️ Резервная копия. Перед изменением структуры базы сделайте резервную копию. Выгрузка в файл .dt делается из Конфигуратора через Администрирование → Выгрузить информационную базу. Это единственная операция, которую здесь нельзя пропускать.
  • 🔓 Статус поддержки. Если планируете править основную конфигурацию, её нужно снять с полной поддержки: Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения. Для расширения и для дополнительных реквизитов этого делать не нужно — типовая конфигурация остаётся нетронутой.
  • 👥 Монопольный доступ. Само добавление реквизита в дерево конфигурации монополии не требует. Она нужна только на шаге «Обновить конфигурацию базы данных», когда платформа меняет структуру таблиц.

Обновление структуры базы данных требует, чтобы в базе не было других пользователей. Активные сеансы придётся завершить, иначе платформа не даст обновиться. Планируйте этот шаг на нерабочее время.

Дальше три рабочих сценария — от самого простого к программному.

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

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

Порядок действий:

  1. Откройте раздел Настройки (блок администрирования и дополнительных возможностей) и включите механизм дополнительных реквизитов и сведений. Название группы настроек может немного отличаться от релиза к релизу.
  2. После включения рядом появится команда для ведения списка дополнительных реквизитов. Откройте её.
  3. Выберите набор — объект, к которому добавляется поле (например, контрагенты, номенклатура или конкретный вид заказа).
  4. Добавьте реквизит: задайте заголовок (его увидит пользователь), тип значения (строка, число, дата, значение из справочника или список готовых вариантов) и при необходимости флажок обязательности.

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

Если нужно поле с фиксированным набором вариантов (например, «Канал привлечения»: сайт, рекомендация, выставка) — выбирайте тип «Дополнительное значение» и заполните список значений. Пользователь будет выбирать из выпадающего списка, а не вводить текст руками.

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

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

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

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

  1. Запустите Конфигуратор, в дереве конфигурации найдите нужный объект — справочник (например, «Контрагенты») или документ (например, «Заказ покупателя»).
  2. Раскройте ветку объекта, встаньте на узел Реквизиты и добавьте новый реквизит командой контекстного меню.
  3. Заполните свойства в палитре справа:
    • Имя — латиницей, без пробелов, например НомерРамочногоДоговора. Это внутренний идентификатор для кода.
    • Синоним — то, что увидит пользователь на форме: «Номер рамочного договора».
    • Тип — строка (с указанием длины), число (длина и точность), дата, булево или ссылка на справочник.
  4. Для строки задайте длину и признак «переменная/фиксированная»; для числа — количество знаков и дробную часть.
  5. Сохраните конфигурацию и выполните Конфигурация → Обновить конфигурацию базы данных (клавиша F7).

На шаге обновления платформа перестроит таблицу объекта и добавит колонку под новое поле. Именно этот шаг требует монопольного доступа.

Ещё два свойства, которые часто забывают:

  • Индексирование. Если по новому полю будут искать или строить отборы в списках, в свойствах реквизита задайте признак индексирования. Без индекса отбор по большому справочнику или журналу документов будет заметно тормозить.
  • Заполнение по умолчанию. Для документов можно задать значение, которое подставится при создании нового объекта, через обработчик заполнения. Для реквизита, который должен подтягиваться из связанного объекта (например, из карточки контрагента в заказ), значение проставляют кодом в момент выбора или создания.

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

Вывод нового поля на форму и права доступа

Реквизит в метаданных сам по себе на экране не появится — в управляемых формах его нужно явно вынести на форму.

  1. Откройте форму объекта (обычно это «Форма элемента» справочника или «Форма документа»).
  2. В редакторе форм слева, в дереве реквизитов формы, раскройте основной реквизит (чаще всего он называется Объект) — под ним будут все реквизиты объекта, включая ваш новый.
  3. Перетащите новый реквизит из состава реквизитов в дерево элементов формы, в нужную группу.
  4. Настройте у появившегося поля заголовок, ширину и порядок следования.

Права доступа . Чтобы поле видели и редактировали пользователи, право на него должно быть в их роли. Менять типовые роли в основной конфигурации не стоит — обновление их перезапишет. Правильнее добавить собственную роль в расширении либо, если речь о дополнительных реквизитах, управлять доступом через профили групп доступа штатными средствами УНФ. Так одни сотрудники будут видеть и редактировать поле, а другие — нет, и при этом типовая модель прав останется нетронутой.

Чтобы новое поле появилось в отборах и в настройке колонок списка, включите его видимость в форме списка объекта — в форме элемента и форме списка это разные настройки.

Расширение конфигурации вместо правки типовой

Расширения появились в платформе 8.3.6 и стали стандартным способом дорабатывать типовые конфигурации, не снимая их с поддержки. Для УНФ это рекомендуемый путь, когда нужен именно реквизит метаданных.

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

Если расширение приходит готовым файлом .cfe, последовательность другая, но шаги не сливаются в один: сначала загрузка файла через Конфигурация → Расширения конфигурации, затем отдельно — обновление конфигурации базы данных. Без второго шага структура не изменится.

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

Новое поле в печатных формах и отчётах

Вывести значение можно, но механика зависит от того, каким способом вы добавляли поле.

Способ добавленияПечатная формаОтчёт
Дополнительный реквизитВ типовую печать автоматически не попадает; выводится через универсальный отчёт или компоновку данныхДоступен в универсальном отчёте по объекту и в своих отчётах на СКД
Реквизит метаданныхВ макет добавляется параметр или колонка, заполняется в модуле печатиДобавляется в схему компоновки данных отчёта как поле

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

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

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

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

Разбор частых симптомов — чтобы не искать причину вслепую:

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

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

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