Разработка и Конфигурация · 13 мин
Как добавить реквизит в расширение 1С и вывести его в форму
Пошаговая инструкция: как добавить реквизит в расширение 1С, вывести его в форму объекта, настроить типы данных и проверить результат. Частые ошибки и FAQ.
Расширение конфигурации — стандартный механизм платформы 1С:Предприятие 8.3, который позволяет добавить собственный реквизит в типовой объект (справочник, документ) без снятия конфигурации с поддержки. Это сохраняет возможность штатного обновления конфигурации поставщика и не требует доработки основного кода. Расширение хранится отдельно от основной конфигурации, его можно отключить или удалить без последствий для типовой логики.
Работа выполняется в конфигураторе и состоит из трёх этапов: создание расширения, заимствование нужного объекта из основной конфигурации, добавление собственного реквизита и вывод его на форму. Дополнительно потребуется решить, как расширение будет храниться в базе (через механизм расширений данных) и как обновить структуру базы после добавления реквизита.
Материал рассчитан на типовые управляемые приложения («Управление торговлей», «ERP», «Комплексная автоматизация», «Бухгалтерия предприятия») в режиме управляемых форм. Для обычных форм подход отличается, но в современных конфигурациях он практически не встречается.
Проверка условий перед началом работы
Перед созданием расширения убедитесь, что режим совместимости конфигурации не ниже версии платформы, поддерживающей расширения данных: собственные реквизиты объектов в расширениях поддерживаются начиная с платформы 8.3.11. Если база работает на более ранней платформе, добавить реквизит через расширение не получится — потребуется обновление платформы или классическая доработка конфигурации.
Проверьте права: нужна роль с правом «Администрирование расширений конфигурации» и доступ к конфигуратору. В клиент-серверном варианте обновление конфигурации базы данных расширения требует монопольного доступа либо выполняется в отложенном режиме — уточните у администратора, как принято обновлять расширения в вашей инфраструктуре.
Определите, к какому объекту добавляется реквизит и какого он типа. От этого зависят дальнейшие шаги: примитивные типы (строка, число, дата, булево) добавляются проще всего, ссылочные типы требуют, чтобы объект-ссылка тоже был доступен расширению, а составные типы увеличивают размер хранения.
Создание расширения конфигурации
Откройте конфигуратор и перейдите в меню «Конфигурация → Расширения конфигурации». В открывшемся списке нажмите «Создать». Задайте имя расширения латиницей без пробелов (например, ДопРеквизиты), префикс (например, Расш1_) и синоним — понятное название для пользователей. Префикс будет автоматически добавляться к именам объектов расширения, что исключает конфликты имён с типовой конфигурацией.
Оставьте назначение «Дополнение» — именно оно позволяет добавлять собственные объекты и реквизиты. Варианты «Исправление» и «Адаптация» предназначены для других сценариев и ограничивают возможности. Безопасный режим оставьте включённым, если в расширении нет кода, требующего привилегированного доступа; для простого реквизита безопасный режим не мешает.
После создания расширение появится в дереве конфигурации как отдельная ветка. Активное расширение подсвечивается — убедитесь, что вы редактируете именно его, а не основную конфигурацию. Все дальнейшие действия выполняются в контексте расширения.
Заимствование объекта и добавление реквизита
В дереве конфигурации расширения найдите нужный тип объекта — «Справочники» или «Документы». По умолчанию ветка пуста: расширение видит типовые объекты, но не изменяет их. Нажмите правой кнопкой на ветку и выберите «Добавить» — откроется список объектов основной конфигурации. Выберите нужный объект (например, справочник «Номенклатура» или документ «Заказ клиента») — он будет заимствован в расширение со значком «изменяемый объект».
Откройте заимствованный объект и перейдите на вкладку «Данные». Нажмите «Добавить реквизит» и заполните свойства: имя (латиницей, платформа добавит префикс расширения), синоним (отображается пользователям), тип данных. Для строки задайте длину — разумно ограничить её реальной потребностью, строка неограниченной длины хранится иначе и не подходит для отборов и сортировок в списках.
Для ссылочного реквизита выберите тип-ссылку на справочник или документ. Если нужный типовой объект не заимствован в расширение, платформа обычно предложит заимствовать его автоматически — соглашайтесь, это необходимо для корректной работы ссылок. Для составного типа отметьте несколько типов, но учитывайте: составные реквизиты занимают больше места и медленнее участвуют в запросах.
- 1Откройте «Конфигурация → Расширения конфигурации» и создайте расширение с назначением «Дополнение»
- 2Заимствуйте нужный справочник или документ через «Добавить» в ветке расширения
- 3На вкладке «Данные» добавьте реквизит, задайте имя, синоним и тип
- 4Заимствуйте форму объекта и перетащите реквизит в дерево элементов формы
- 5Обновите конфигурацию базы данных (F7) и проверьте реквизит в режиме предприятия
Вывод реквизита в форму объекта
Реквизит, добавленный в объект, сам на форме не появится — его нужно разместить вручную. В заимствованном объекте перейдите на вкладку «Формы», нажмите кнопку добавления у основной формы объекта и выберите «Заимствовать форму». Откроется редактор заимствованной формы: слева — дерево элементов, справа вверху — панель «Реквизиты», где теперь доступен и ваш новый реквизит.
Найдите реквизит в панели «Реквизиты» (он будет помечен префиксом расширения) и перетащите его в дерево элементов формы в нужное место — например, в группу «Шапка» или после конкретного поля. Платформа создаст элемент «Поле ввода» с автоматической связью с данными. Позицию в дереве меняйте кнопками «Вверх/Вниз» или перетаскиванием: порядок элементов определяет порядок на форме.
Настройте свойства элемента: заголовок (по умолчанию берётся из синонима реквизита), подсказку, доступность, отметку незаполненного значения. Чтобы реквизит попал в форму списка, заимствуйте и её, добавив колонку аналогично — но учитывайте, что сортировка и отбор по реквизиту расширения в динамическом списке могут работать медленнее, чем по типовым полям.
Если форма генерируется программно
В некоторых типовых конфигурациях формы объектов создаются кодом (через БСП или собственные механизмы), и заимствованная форма может не содержать явного дерева элементов. В этом случае добавьте элемент в обработчике ПриСозданииНаСервере заимствованной формы программно: создайте элемент через Элементы.Добавить(), укажите родителя, тип Тип("ПолеФормы") и привяжите ПутьКДанным к реквизиту.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
НовыйЭлемент = Элементы.Добавить("Расш1_КомментарийПоставки", Тип("ПолеФормы"), Элементы.ГруппаШапка);
НовыйЭлемент.ПутьКДанным = "Объект.Расш1_КомментарийПоставки";
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.Заголовок = НСтр("ru = 'Комментарий поставки'");
КонецПроцедурыОбновление базы и проверка результата
После добавления реквизита нажмите F7 («Обновить конфигурацию базы данных»). Платформа покажет окно реструктуризации: в нём должны фигурировать только добавляемые реквизиты расширения, без удаления или изменения типовых полей. Если в списке изменений появились типовые объекты с признаком удаления — отмените обновление и проверьте, что вы изменяли: это признак случайной правки основной конфигурации.
После обновления запустите режим предприятия, откройте объект и проверьте: реквизит виден на форме, значение вводится, сохраняется после записи и перечитывается при повторном открытии. Проверьте также форму списка, если добавляли колонку, и работу поиска/отбора, если реквизит в них участвует.
Как проверить результат
Поле видно в нужной группе, заголовок корректный
Поля нет на форме или оно появилось в конце формы без привязки к группе
Значение сохраняется и отображается после повторного открытия
Значение пропадает после записи — реквизит не привязан к данным объекта
Изменяются только реквизиты с префиксом расширения
В списке есть типовые объекты с удалением или изменением
Реквизит доступен пользователям с обычными правами
Поле недоступно — проверьте роли и функциональные опции
Ограничения и частые ошибки
Расширение не может всё. Нельзя изменить состав движений типового документа, изменить типовые реквизиты (только добавить свои), изменить обязательность типовых полей. Реквизиты расширения не участвуют в типовых механизмах обмена данными автоматически — для планов обмена их нужно регистрировать отдельно, и не все типовые планы обмена поддерживают данные расширений.
Частая ошибка — забыть обновить конфигурацию базы данных: реквизит виден в конфигураторе, но в режиме предприятия его нет. Вторая типичная проблема — реквизит добавлен в объект, но не перетащен на форму: пользователи его просто не видят. Третья — конфликт при обновлении типовой конфигурации: если в новом релизе поставщик добавил реквизит с таким же именем без префикса, конфликта не будет (префикс защищает), но заимствованная форма может потребовать перепроверки.
Ещё одна ошибка — добавление реквизита в заимствованную форму, которая после обновления конфигурации сильно изменилась у поставщика. Заимствованная форма полностью заменяет типовую: все новые элементы поставщика в ней не появятся. Поэтому для сложных часто меняющихся форм надёжнее программное добавление элемента в ПриСозданииНаСервере — тогда типовая форма продолжает обновляться, а ваше поле добавляется поверх.
Альтернативы: когда расширение не нужно
Не для каждой задачи нужен собственный реквизит. Если требуется хранить дополнительную информацию без участия в отчётах и отборах, рассмотрите типовой механизм «Дополнительные реквизиты и сведения» (в конфигурациях на БСП): он добавляется пользователем без конфигуратора, автоматически выводится на формы и попадает в отчёты через СКД. Ограничение — такие реквизиты хранятся в отдельных таблицах и медленнее в запросах при больших объёмах.
Если данные связаны с объектом, но имеют сложную структуру (несколько полей, историчность), лучше создать в расширении собственный регистр сведений с измерением-ссылкой на объект, чем добавлять набор реквизитов. Выбор зависит от задачи: одиночное простое поле — реквизит расширения, пользовательская аналитика — дополнительные реквизиты БСП, структурированные данные — регистр сведений.
Сравнение вариантов
Подходит для одного-двух полей, участвующих в отборах и отчётах. Требует конфигуратора и обновления базы
Добавляются пользователем без конфигуратора, выводятся на формы автоматически. Медленнее в запросах при больших объёмах
Для структурированных или исторических данных, связанных с объектом. Требует отдельной формы или программного вывода
Что важно запомнить
Реквизит добавляется в заимствованный объект расширения на вкладке «Данные», затем вручную размещается на заимствованной форме или добавляется программно. Обязательно обновите конфигурацию базы данных и проверьте сохранение значения в режиме предприятия. Для простых пользовательских полей сначала рассмотрите механизм дополнительных реквизитов.
Частые вопросы
Можно ли добавить реквизит в расширение без конфигуратора?
Нет, собственный реквизит объекта создаётся только в конфигураторе. Если доступа к конфигуратору нет, используйте типовой механизм «Дополнительные реквизиты и сведения» в режиме предприятия — он доступен администратору базы и не требует программирования.
Почему реквизит не виден пользователям, хотя в конфигураторе он есть?
Наиболее вероятные причины: не выполнено обновление конфигурации базы данных, реквизит не размещён на форме объекта, либо у пользователя недостаточно прав. Проверьте также, что расширение подключено и активно в списке расширений базы, а не только создано в конфигураторе.
Что произойдёт с данными реквизита при отключении расширения?
Данные физически сохраняются в таблицах расширения, но становятся недоступны из режима предприятия. При повторном подключении того же расширения значения вернутся. При удалении расширения с очисткой данные будут удалены, поэтому перед удалением сохраните копию базы.
Участвует ли реквизит расширения в типовых отчётах?
В типовые отчёты реквизит автоматически не попадает. Его можно добавить в пользовательские настройки отчёта на СКД, если реквизит доступен в схеме компоновки, либо создать в расширении собственный отчёт, где реквизит используется напрямую в запросе.
Можно ли сделать реквизит обязательным для заполнения?
Да, установите у реквизита свойство «Проверка заполнения» в значение «Выдавать ошибку». Дополнительно можно включить «Отметка незаполненного» у элемента формы. Учтите, что проверка сработает и для старых объектов при их перезаписи — это может заблокировать проведение ранее созданных документов.
Сохранится ли реквизит при обновлении типовой конфигурации?
Да, расширения не затрагиваются обновлением основной конфигурации. Однако после обновления стоит проверить заимствованные формы: если поставщик сильно изменил форму объекта, заимствованная копия может устареть, и реквизит придётся разместить заново или перейти на программное добавление элемента.