Добавление свойств и реквизитов в 1С 8.3: три рабочих способа
Содержание
Добавить своё свойство к справочнику, документу или элементу в 1С 8.3 можно тремя способами. Первый — механизм «Дополнительные реквизиты и сведения» прямо в режиме «Предприятие», без Конфигуратора. Второй — новый реквизит через Конфигуратор, когда нужна жёсткая структура и своя логика. Третий — тот же реквизит, но в расширении конфигурации, чтобы не трогать типовую.
Для большинства задач подходит первый способ: пользователь с правами администратора добавляет новое поле за пару минут и не теряет автообновление типовой конфигурации. К Конфигуратору и расширениям переходят, когда свойство должно участвовать в проводках, запросах или печатных формах.
Ниже — когда какой способ выбрать, точные шаги по каждому и ошибки, из-за которых новое поле не появляется или тормозит базу.
Какой способ выбрать под вашу задачу
Три способа отличаются тем, кто и где заводит поле, и сохраняется ли поддержка типовой конфигурации.
| Способ | Где делается | Правка конфигурации | Кому доступно |
|---|---|---|---|
| Дополнительные реквизиты и сведения | Режим «Предприятие» | Нет | Администратор базы |
| Реквизит через Конфигуратор | Конфигуратор | Да, объект снимается с поддержки частично | Программист |
| Реквизит в расширении | Конфигуратор (расширение) | Основная конфигурация не меняется | Программист |
Простое правило: если поле нужно для учёта (отбор в отчётах, заполнение по алгоритму, вывод в печать) — делайте реквизит. Если это просто дополнительная характеристика для справки или ручного отбора — хватит дополнительного реквизита.
Способ 1. Дополнительные реквизиты без изменения конфигурации
Это штатный механизм библиотеки стандартных подсистем. Он есть в «Бухгалтерии предприятия» 3.0, «ЗУП» 3.1, «Управлении торговлей» 11, ERP, «Комплексной автоматизации» и УНФ. Поле добавляется в режиме «Предприятие», конфигурация остаётся на поддержке и обновляется как обычно.
Сначала включите сам механизм:
- Откройте
Администрирование → Общие настройки. - Разверните группу
Дополнительные реквизиты и сведения. - Установите флажок. Если его нет на виду, воспользуйтесь строкой поиска по форме настроек — название раздела может немного отличаться между конфигурациями.
Флажок включает механизм сразу для всех объектов, которые его поддерживают. Отдельно по каждому справочнику его включать не нужно.
Теперь заведите само свойство. Удобнее это делать из того списка, к которому поле относится:
- Откройте нужный справочник или документ (например,
Справочники → Номенклатура). - Нажмите
Ещё → Изменить состав дополнительных реквизитов(в разных конфигурациях команда может называться «Настроить дополнительные реквизиты»). - Нажмите
Добавить → Новый. - Задайте наименование, тип значения (строка, число, дата, или ссылка на другой справочник) и, при необходимости, список допустимых значений.
- Сохраните. Поле сразу появится в карточке элементов этого вида.
Перед добавлением уточните, на какой «набор» вешается свойство. В БСП дополнительные реквизиты привязаны к набору объектов. Для номенклатуры это один набор, для контрагентов — другой. Свойство появится только у тех элементов, чей набор вы выбрали.
Дополнительные реквизиты значения хранятся в самом объекте, в табличной части ДополнительныеРеквизиты. Поэтому они видны в карточке и доступны для отбора. Дополнительные сведения
хранятся в отдельном регистре сведений и на основной форме не показываются — их открывают командой Ещё → Дополнительные сведения.
Способ 2. Новый реквизит через Конфигуратор
Реквизит — это структурное поле объекта. Его видно в запросах, можно индексировать, заполнять кодом и выводить в проводки. Платить за это приходится правкой конфигурации.
Порядок действий:
- Запустите Конфигуратор. Реструктуризация базы требует монопольного доступа — завершите сеансы всех пользователей. Монопольный режим нужен именно на шаге обновления структуры базы, а не на всё время работы.
- Если конфигурация на поддержке, включите возможность изменения:
Конфигурация → Поддержка → Настройка поддержки → Включить возможность изменения. Разрешите редактирование нужного объекта. - В дереве конфигурации найдите объект, например
Справочники → Контрагенты. - Раскройте ветку
Реквизиты, нажмите правой кнопкой →Добавить. - В палитре свойств задайте
Имя(латиницей, без пробелов),Синоним(как поле подпишется в интерфейсе) иТип. - Нажмите F7 (
Обновить конфигурацию базы данных). На этом шаге платформа перестроит таблицу объекта.
Включение возможности изменения объекта означает, что при обновлении типовой конфигурации этот объект будет сравниваться вручную. Чем больше объектов вы редактируете, тем дольше потом обновления. По возможности держите правок минимум.
Чтобы новое поле появилось на форме элемента, его обычно нужно вывести вручную. Откройте форму элемента, в редакторе форм перетащите реквизит из состава реквизитов формы на панель. Если форма типовая и генерируется автоматически, поле может появиться само после обновления.
Для числовых и строковых реквизитов сразу продумайте длину и точность. Изменить их потом на большой базе — это повторная реструктуризация с монопольным доступом.
Способ 3. Реквизит в расширении конфигурации
Расширения конфигурации
появились в платформе 8.3.6. Это способ добавить свой реквизит, не снимая основную конфигурацию с поддержки: типовая обновляется автоматически, а ваши доработки лежат в отдельном файле .cfe.
- В Конфигураторе откройте
Конфигурация → Расширения конфигурации. - Создайте новое расширение, задайте имя и префикс.
- В дереве расширения добавьте заимствованный объект — тот справочник или документ, к которому нужно поле.
- В заимствованном объекте добавьте собственный реквизит так же, как в основной конфигурации.
- Сохраните и обновите: загрузка
.cfeи командаОбновить конфигурацию базы данных— это два отдельных шага. Пока вторую не выполнили, поле в базе не появится.
Реквизит из расширения виден в запросах и на формах так же, как обычный. При этом основная конфигурация не трогается — автообновление типовой работает как раньше.
Через расширение же удобно дорабатывать формы: добавить своё поле на форму списка или элемента, не редактируя типовую форму.
Прочитать значение дополнительного реквизита в коде можно обходом табличной части объекта. Структура в БСП одинаковая: колонки Свойство и Значение.
Для Каждого СтрокаРеквизита Из Объект.ДополнительныеРеквизиты Цикл
Если СтрокаРеквизита.Свойство = ИскомоеСвойство Тогда
Результат = СтрокаРеквизита.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
Здесь ИскомоеСвойство — ссылка на элемент плана видов характеристик, который описывает нужное свойство. Её получают запросом по наименованию свойства или заранее сохранённой константой. Выдумывать предопределённое имя не нужно — надёжнее найти свойство по его реквизитам.
Как вывести свойство в отчёты и отборы
Свойство бесполезно, если по нему нельзя отобрать или сгруппировать данные. Поведение зависит от того, каким способом вы его завели.
Реквизит объекта (способы 2 и 3) доступен в запросах напрямую. Его видно в конструкторе запроса, в системе компоновки данных, в отборах динамических списков. Чтобы отбор по нему на большой таблице не тормозил, включите у реквизита свойство Индексировать.
Дополнительные реквизиты и сведения (способ 1) тоже участвуют в отборах, но через механизм БСП. В списках их можно вывести колонкой и настроить отбор
через Ещё → Настроить список. В универсальном отчёте дополнительные реквизиты доступны как поля объекта.
Если нужно регулярно отбирать номенклатуру или контрагентов по новому признаку, в типовых конфигурациях есть готовые отчёты с настройкой группировок. Откройте раздел с отчётами по нужному объекту и добавьте свойство в структуру отчёта как группировку или отбор.
Отдельный момент — отбор в динамических списках. У дополнительного реквизита отбор ставится как по обычному полю, но платформа подбирает значения через регистр механизма БСП, поэтому на больших списках такой отбор медленнее отбора по структурному реквизиту. Если по признаку фильтруют постоянно и объём большой — это аргумент в пользу реквизита через Конфигуратор или расширение с включённым индексом.
Ещё учтите права доступа . По новому реквизиту отбор и просмотр работают только у тех пользователей, которым этот объект виден по ролям. Если поле не показывается части сотрудников, проверяйте не механизм свойств, а настройки прав на сам объект.
Частые ошибки при добавлении свойств
Большинство проблем сводится к нескольким типовым ситуациям.
Ещё одна частая путаница — выбор между дополнительным реквизитом и сведением. Реквизит хранится в объекте и виден на форме. Сведение хранится отдельно и подходит для данных, которые не нужно показывать всем сразу. Если потом окажется, что выбрали не то, переделывать придётся вручную — заранее решите, нужно ли поле на основной форме.
Свойства в больших базах: на что смотреть
На базе в несколько миллионов элементов или строк регистра добавление поля перестаёт быть мгновенным.
- 📦 Реструктуризация идёт долго. Добавление реквизита через Конфигуратор перестраивает всю таблицу объекта. На большом справочнике это десятки минут монопольного доступа. Планируйте такие работы на нерабочее время.
- 🔎 Индекс ускоряет отбор, но утяжеляет базу. Индексируйте только те реквизиты, по которым реально фильтруете. Лишние индексы замедляют запись и раздувают размер базы.
- 🗂 Дополнительные сведения растут отдельным регистром. Значения дополнительных сведений накапливаются в регистре сведений. Если сведений много и по ним часто отбирают, следите за его размером.
- ⚙️ Не индексируйте всё подряд «на всякий случай». Для разовых выборок проще один раз подождать отчёт, чем постоянно платить индексом за запись.
Если свойство нужно только для редких ручных отборов, дополнительный реквизит обычно выгоднее структурного: он не требует реструктуризации всей таблицы.
Примеры задач: когда какой способ
Несколько типовых ситуаций, чтобы выбрать способ без долгих раздумий.
Менеджеру нужно помечать контрагентов по источнику привлечения. Поле заполняется вручную, в учёте не участвует. Заводим дополнительный реквизит у набора контрагентов — за пять минут, без Конфигуратора.
Бухгалтер хочет хранить у номенклатуры код для маркировки или свою группу аналитики для отчёта. Если по полю нужны отборы и группировки в запросах — делаем реквизит. Если обновления типовой критичны — реквизит в расширении.
Разработчик добавляет поле, которое заполняется алгоритмом при проведении документа. Здесь только реквизит через Конфигуратор или расширение: значение нужно читать и писать кодом, а дополнительный реквизит для сложной логики неудобен.
Нужно скрытое служебное значение, невидимое пользователю. Подойдёт дополнительное сведение — оно не загромождает карточку.