Добавляем новый реквизит в конфигурацию 1С:УНФ
Содержание
Поле в карточке УНФ добавляют тремя способами, и начинать почти всегда стоит не с Конфигуратора. Если новое поле нужно просто для хранения и ручного заполнения — например, номер рамочного договора у контрагента или пометка к заказу — его заводят прямо в режиме 1С:Предприятия через механизм дополнительных реквизитов. Конфигуратор и расширение конфигурации нужны, когда поле должно участвовать в расчётах, попадать в печать по правилам или заполняться автоматически.
1С:УНФ поставляется на поддержке (конфигурация «на замке»). Поэтому править метаданные основной конфигурации напрямую — плохая идея: каждое типовое обновление будет конфликтовать с вашими изменениями и может их перетереть. Безопасный путь для программной доработки — расширение конфигурации.
Какой из трёх способов добавить реквизит выбрать под вашу задачу:
С чего начать: поддержка, копия и монопольный режим
Перед любой правкой метаданных оцените три вещи.
- 🗄️ Резервная копия. Перед изменением структуры базы сделайте резервную копию. Выгрузка в файл
.dtделается из Конфигуратора черезАдминистрирование → Выгрузить информационную базу. Это единственная операция, которую здесь нельзя пропускать. - 🔓 Статус поддержки. Если планируете править основную конфигурацию, её нужно снять с полной поддержки:
Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения. Для расширения и для дополнительных реквизитов этого делать не нужно — типовая конфигурация остаётся нетронутой. - 👥 Монопольный доступ. Само добавление реквизита в дерево конфигурации монополии не требует. Она нужна только на шаге «Обновить конфигурацию базы данных», когда платформа меняет структуру таблиц.
Обновление структуры базы данных требует, чтобы в базе не было других пользователей. Активные сеансы придётся завершить, иначе платформа не даст обновиться. Планируйте этот шаг на нерабочее время.
Дальше три рабочих сценария — от самого простого к программному.
Простой способ: дополнительные реквизиты без Конфигуратора
УНФ построена на библиотеке стандартных подсистем, поэтому в ней есть штатный механизм пользовательских полей — дополнительные реквизиты. Их добавляют прямо в режиме 1С:Предприятия, без Конфигуратора. Самое ценное: такие поля не трогают типовую конфигурацию и переживают любое обновление.
Порядок действий:
- Откройте раздел
Настройки(блок администрирования и дополнительных возможностей) и включите механизм дополнительных реквизитов и сведений. Название группы настроек может немного отличаться от релиза к релизу. - После включения рядом появится команда для ведения списка дополнительных реквизитов. Откройте её.
- Выберите набор — объект, к которому добавляется поле (например, контрагенты, номенклатура или конкретный вид заказа).
- Добавьте реквизит: задайте заголовок (его увидит пользователь), тип значения (строка, число, дата, значение из справочника или список готовых вариантов) и при необходимости флажок обязательности.
Новое поле появится в карточке объекта автоматически — в отдельной группе «Дополнительные реквизиты», без правки форм.
Если нужно поле с фиксированным набором вариантов (например, «Канал привлечения»: сайт, рекомендация, выставка) — выбирайте тип «Дополнительное значение» и заполните список значений. Пользователь будет выбирать из выпадающего списка, а не вводить текст руками.
Дополнительные реквизиты поддерживают не все объекты, а только те, у которых предусмотрен набор таких полей, — это большинство ходовых справочников и документов УНФ: контрагенты, номенклатура, заказы. Если в списке наборов нужного объекта нет, значит, штатно расширить его этим механизмом не получится и останутся только метаданные или расширение.
Ограничение у способа одно, зато существенное: дополнительный реквизит — это хранилище. Сложную логику заполнения, проверки при проведении и гарантированный вывод в типовую печатную форму он не даёт. Для этого нужен реквизит метаданных.
Добавление реквизита через Конфигуратор
Этот способ меняет саму структуру конфигурации. Применяйте его к основной конфигурации только на базе, снятой с поддержки и обновляемой вручную; в остальных случаях те же действия выполняйте в расширении (следующий раздел).
- Запустите Конфигуратор, в дереве конфигурации найдите нужный объект — справочник (например, «Контрагенты») или документ (например, «Заказ покупателя»).
- Раскройте ветку объекта, встаньте на узел
Реквизитыи добавьте новый реквизит командой контекстного меню. - Заполните свойства в палитре справа:
- Имя — латиницей, без пробелов, например
НомерРамочногоДоговора. Это внутренний идентификатор для кода. - Синоним — то, что увидит пользователь на форме: «Номер рамочного договора».
- Тип — строка (с указанием длины), число (длина и точность), дата, булево или ссылка на справочник.
- Имя — латиницей, без пробелов, например
- Для строки задайте длину и признак «переменная/фиксированная»; для числа — количество знаков и дробную часть.
- Сохраните конфигурацию и выполните
Конфигурация → Обновить конфигурацию базы данных(клавишаF7).
На шаге обновления платформа перестроит таблицу объекта и добавит колонку под новое поле. Именно этот шаг требует монопольного доступа.
Ещё два свойства, которые часто забывают:
- Индексирование. Если по новому полю будут искать или строить отборы в списках, в свойствах реквизита задайте признак индексирования. Без индекса отбор по большому справочнику или журналу документов будет заметно тормозить.
- Заполнение по умолчанию. Для документов можно задать значение, которое подставится при создании нового объекта, через обработчик заполнения. Для реквизита, который должен подтягиваться из связанного объекта (например, из карточки контрагента в заказ), значение проставляют кодом в момент выбора или создания.
После того как реквизит заполнен данными, сузить его тип или длину без потери значений уже нельзя. Выбирайте тип с запасом сразу — например, для текстовых полей не ставьте длину в 10 символов «на всякий случай».
Вывод нового поля на форму и права доступа
Реквизит в метаданных сам по себе на экране не появится — в управляемых формах его нужно явно вынести на форму.
- Откройте форму объекта (обычно это «Форма элемента» справочника или «Форма документа»).
- В редакторе форм слева, в дереве реквизитов формы, раскройте основной реквизит (чаще всего он называется
Объект) — под ним будут все реквизиты объекта, включая ваш новый. - Перетащите новый реквизит из состава реквизитов в дерево элементов формы, в нужную группу.
- Настройте у появившегося поля заголовок, ширину и порядок следования.
Права доступа . Чтобы поле видели и редактировали пользователи, право на него должно быть в их роли. Менять типовые роли в основной конфигурации не стоит — обновление их перезапишет. Правильнее добавить собственную роль в расширении либо, если речь о дополнительных реквизитах, управлять доступом через профили групп доступа штатными средствами УНФ. Так одни сотрудники будут видеть и редактировать поле, а другие — нет, и при этом типовая модель прав останется нетронутой.
Чтобы новое поле появилось в отборах и в настройке колонок списка, включите его видимость в форме списка объекта — в форме элемента и форме списка это разные настройки.
Расширение конфигурации вместо правки типовой
Расширения появились в платформе 8.3.6 и стали стандартным способом дорабатывать типовые конфигурации, не снимая их с поддержки. Для УНФ это рекомендуемый путь, когда нужен именно реквизит метаданных.
- В Конфигураторе откройте
Конфигурация → Расширения конфигурациии создайте расширение: задайте имя, префикс (его получат все ваши объекты) и назначение «Адаптация». - Переключитесь на конфигурацию расширения. Найдите в основной конфигурации нужный объект и добавьте его в расширение — он «заимствуется», то есть в расширение попадает ссылка на типовой объект.
- В заимствованном объекте добавьте собственный реквизит. Имя будет начинаться с вашего префикса — так доработка не столкнётся с типовыми реквизитами в будущих релизах.
- Там же, в формах расширения, вынесите поле на форму.
- Выполните
Обновить конфигурацию базы данных(F7) в монопольном режиме.
Если расширение приходит готовым файлом .cfe, последовательность другая, но шаги не сливаются в один: сначала загрузка файла через Конфигурация → Расширения конфигурации, затем отдельно — обновление конфигурации
базы данных. Без второго шага структура не изменится.
Расширение переживает обновление типовой конфигурации, пока заимствованные объекты и их реквизиты существуют в новом релизе. Если 1С удалит или переименует объект, расширение при обновлении отключится с сообщением о конфликте — тогда доработку правят под новую версию. Это штатная ситуация, а не поломка базы.
Новое поле в печатных формах и отчётах
Вывести значение можно, но механика зависит от того, каким способом вы добавляли поле.
| Способ добавления | Печатная форма | Отчёт |
|---|---|---|
| Дополнительный реквизит | В типовую печать автоматически не попадает; выводится через универсальный отчёт или компоновку данных | Доступен в универсальном отчёте по объекту и в своих отчётах на СКД |
| Реквизит метаданных | В макет добавляется параметр или колонка, заполняется в модуле печати | Добавляется в схему компоновки данных отчёта как поле |
Для типовой печатной формы правило то же, что и с реквизитами: не редактируйте макет в основной конфигурации. Переопределите печать через расширение — поместите в него изменённый макет и, если нужно, процедуру заполнения. Тогда ваша колонка в печатной форме сохранится после обновления.
Для разовой выгрузки проще всего универсальный отчёт: он строит таблицу по любому объекту и подхватывает как дополнительные реквизиты, так и реквизиты метаданных без программирования.
Если поле нужно показать в уже существующем типовом отчёте, напрямую добавить колонку в него не выйдет — схема компоновки данных зашита в типовой объект. Вариантов два: сделать отдельный отчёт на СКД с нужным полем либо вынести доработку отчёта в расширение. Для большинства задач «посмотреть значения по списку» хватает универсального отчёта, и городить расширение под это не нужно.
Типичные ошибки при добавлении реквизита
Разбор частых симптомов — чтобы не искать причину вслепую: