Оптимальное место добавления реквизитов на форму в 1С

09.06.26

Разработка - Работа с интерфейсом

Когда бизнес просит «добавить поле на форму», за этим простым требованием скрывается выбор архитектурного решения, которое либо может облегчить жизнь, либо превратить поддержку базы в сплошное превозмогание. Мы постарались собрать шпаргалку, что об этом нужно знать начинающему 1С-нику.

Разработчику надо понимать разницу между реквизитом объекта, реквизитом формы и элементом формы. Это три разных уровня абстракции:

  1. Реквизит объекта: это описание колонки в таблице базы данных. Он используется для хранения и последующего использования информации.

  2. Реквизит формы: это переменная в оперативной памяти, которая существует только пока открыто конкретное окно формы. После закрытия формы, переменная удаляется.

  3. Элемент формы: это визуальный объект формы (поле ввода, флажок и т.д.), который пользователь видит на экране и с которым взаимодействует.

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

Далее перед разработчиком развилка: нужно ли это поле в базе данных для последующего использования или оно нужно только «здесь и сейчас» для удобства работы пользователя?


Добавление реквизита на форму без сохранения данных  в БД

Если данные нужны только для визуализации или промежуточных расчетов —  добавляются реквизит формы и элемент формы. Обычно это делается программно: 

  1. Минимизация конфликтов при обновлении. Если 1С изменила форму, код либо отработает штатно, либо просто выдаст мягкое предупреждение, не ломая всю форму целиком. В последствии не нужно лезть и «вручную» перепривязывать элементы в конфигураторе. 

  2. Динамическое управление интерфейсом. Программный метод позволяет легко управлять видимостью и составом данных в зависимости от нужных условий.

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

Пример кода:

//КодПример
//1. Добавляем данные (Реквизит формы). Те самые, которые живут, пока жива форма.
	МассивРеквизитов = Новый Массив;
	МассивРеквизитов.Добавить(
		Новый РеквизитФормы("МойРеквизит1", //Имя реквизита формы. То, как он будет называться в дереве реквизитов формы
		Новый ОписаниеТипов("СправочникСсылка.НазваниеСправочника1"), //описание типа реквизита
		, //Путь до самого реквизита, не включая его имя.
		Нстр("ru='Заголовок поля'")) //подпись реквизита на форме
		);

МассивРеквизитов.Добавить(Новый РеквизитФормы("МойРеквизит2", Новый ОписаниеТипов("Строка"), , "Заголовок поля 2")); 

//Важно. Вызывать метод ИзменитьРеквизиты() тогда,  когда полностью сформирован массив с добавляемыми реквизитами,
//т.к. это тяжелая операция.
ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);

// 2. Добавляем визуальный элемент на форме (Элемент формы)
НовыйЭлемент = Элементы.Добавить("ПолеМойРеквизит1", Тип("ПолеФормы"), ЭтаФорма.ГруппаШапка);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "МойРеквизит1"; // Связываем элемент с данными
НовыйЭлемент.УстановитьДействие("ПриИзменении", "МояПроцедураПриИзменении"); // Добавление события “ПриИзменении” и назначение ему обработчика “МояПроцедураПриИзменении”
НовыйЭлемент.Видимость = Истина; //Видиомость элемента на форме
НовыйЭлемент.ТолькоПросмотр = Истина; //Возможность редактирования элемента н форме.

НовыйЭлемент = Элементы.Вставить("ПолеМойРеквизит2", //уникальное имя нового элемента формы
 Тип("ПолеФормы"), //Тип добавляемого объекта на форму.
 ЭтаФорма.ГруппаШапка, // Куда именно вставляем  - на форму или в какую-то группу/страницу
Элементы.КнопкаЗакрыть //элемент, перед которым вставляется добавляемый элемент. 
);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "МойРеквизит2"; // Связываем элемент с данными

 


Добавление кода в Расширение

Самый быстрый способ. Не затрагивается структура основной конфигурации, а меняется только пользовательский интерфейс:

  1. Создается расширение, если его нет. Затем заходим в форму, которую хотим расширить в основной конфигурации, заходим в модуль этой формы.

  2.  Правой кнопкой по процедуре ПриСозданииНаСервере(), добавить в расширение. Почему именно так? Если кратко — это событие, выполняющиеся на сервере один раз до отображения формы пользователю и уже имеющее доступ к данным объекта

  3. «Метод является обработчиком события. Добавить расширение обработчика?»  В предложенном окне выбора нажимаем «Да». Выбирается этот вариант, т.к. платформа автоматически пропишет в свойствах формы из расширения это событие с соответствующие аннотацией.

  4. Далее выбирается тип перехвата «После». Для обработчиков событий есть три аннотации: «Перед», «После» и «Вместо». Выбирается «После», т.к. ОБЫЧНО требуется чтобы сначала отработал типовой код. Но всё зависит от контекста задачи.

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	//КодПример
КонецПроцедуры

Плюсы:

  • Быстрая реализация для одной формы.

  • Основная конфигурация остается на поддержке.

Минусы:

  • При изменении формы в основной конфигурации, расширение может не примениться.

 

Добавление кода в переопределяемые модули БСП

Чтобы программно доработать форму через БСП должны выполняться следующие условия:

  • Наличие БСП

    • В режиме Предприятие: «Функции для тех. специалиста» — Регистр сведений «ВерсииПодсистем» — должна быть строка СтандартныеПодсистемы / StandardSubsystems

    • В Конфигураторе: «Общие» — «Подсистемы» должна присутствовать подсистема СтандартныеПодсистемы.

  • Для того чтобы код вызвался, в типовой дорабатываемой форме должен быть (в процедуре ПриСозданииНаСервере) стандартный вызов СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

Если эти условия выполняются, тогда можно приступать к реализации:

  • Находим общий модуль МодификацияКонфигурацииПереопределяемый в дереве метаданных конфигурации, открываем его с сохранением поддержки. 

  • В процедуру ПриСозданииНаСервере добавляем следующий код:
     

Если Форма.ИмяФормы = "Справочник.НазваниеСправочника1.Форма.НазваниеФормы" Тогда
	//Это условие важно, т.к. в данная процедура вызывается для многих форм, а добавлять код нужно в конкретную(ые).
	//КодПример	
ИначеЕсли Форма.ИмяФормы = "Справочник.НазваниеСправочника2.Форма.НазваниеФормы" Тогда
	//КодПример
КонецЕсли;


Плюсы:

  •  Можно добавить реквизит сразу в 10 разных форм из одного модуля.

Минусы:

  • Частичное снятие конфигурации с поддержки.


Добавление реквизита на форму с сохранением данных в БД

Если всё же нужно сохранять реквизит в БД, следует определиться с тем, как в дальнейшем он будет использоваться. 

При выполнении любого из этих условий стоит добавлять реквизит в дерево метаданных, а затем программно выводить его на форму:

  1. Будет использоваться в сложных алгоритмах, логику которых надо программировать.

  2. Принадлежит объекту метаданных с огромным количеством записей и в него надо добавить сразу с десяток дополнительных реквизитов на форму.

  3. Нуждается в настройках прав доступа.

  4. Меняется несколько раз в день.

  5. Пользователю критично расположение реквизита на форме.

В противном случае можно присмотреться к механизму дополнительных реквизитов и сведений.
 

Добавление реквизита в дереве метаданных: основная конфигурация или расширение

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

//КодПример
//Добавляем визуальный элемент на форме (Элемент формы)
НовыйЭлемент = Элементы.Добавить("ПолеМойРеквизит1", Тип("ПолеФормы"), ЭтаФорма.ГруппаШапка);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "Объект.МойРеквизит1"; // Связываем элемент с реквизитом объекта


Добавление реквизита в дерево метаданных — это создание полноценной колонки в таблице БД объекта для основной конфигурации и созданиедополнительной таблицы в БД для расширяемого объекта, если использовать расширение. Это надо учитывать при добавлении.

Чтобы решить, что оптимальней использовать, приведем сравнение по некоторым основным критериям.

 

Основная конфигурация

Расширение

Поддержка

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

Основная конфигурация остается на полной поддержке.

Сохранность данных

Реквизит — часть основной таблицы БД. Максимальная сохранность.

Реквизит является частью другой таблицы БД, не основной. Хранящиеся данные напрямую связаны с активностью расширения. Расширение выключено — данные не активны, удалено — данные удалены.

Производительность

Реквизит — часть основной таблицы БД. Максимальная скорость.

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

 

Механизм дополнительных реквизитов и сведений (БСП)

Этот способ позволяет добавлять реквизиты на форму в предприятии не программно, при условии, что подключена БСП и механизм дополнительных реквизитов. 

Как проверить БСП, было сказано ранее, механизм дополнительных реквизитов и сведений является её частью.

  1. Настройка: Зайдите в «Администрирование» — «Общие настройки» — галка  «Дополнительные реквизиты и сведения».

  2. Выбор объекта: Найдите в списке нужный объект (например, «Справочник Номенклатура»).

  3. Создание реквизита: Добавить → Новый. Заполните его описание.

  4. Размещение: Поле автоматически появится в специальной группе «Дополнительно» на форме объекта.

  5. Заполнение: Пользователи могут сразу вводить данные.

Плюсы:

  • Не надо писать код.

  • Меньше проблем при обновлении типовой конфигурации

  • Не нужно выгонять пользователей из базы (не требуется монопольный доступ).

Минусы:

  • Запросы работают медленнее, чем по обычным полям, т.к. данные хранятся в табличных частях объекта, регистре сведений  и плане видов характеристик, с которым потом надо соединяться.
     

Резюме по способам добавления реквизитов на форму

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

  • Дополнительные реквизиты и сведения (БСП): выбирайте этот способ, если нужно дать пользователям возможность самим добавлять поля без изменения кода и конфигурации.

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

  • Реквизит в основной конфигурации: используйте для критически важных данных, участвующих в сложных расчетах и тяжелых отчетах, где важна максимальная производительность и сохранность.

  • Переопределяемые модули БСП: применяйте этот метод, когда необходимо программно вывести один и тот же реквизит сразу на множество различных форм из единой точки управления.

Вступайте в нашу телеграмм-группу Инфостарт

разработка стажер формы

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

31720 руб.

27.03.2025    85349    60    42    

72

Работа с интерфейсом Рабочее место 1С:Предприятие 8 1C:Бухгалтерия 1С:Комплексная автоматизация 2.х Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). В комплект поставки включены Расширения для легкого подключения данного функционала в БК, УТ, КА и ERP. Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу. Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6100 руб.

16.01.2015    68738    46    60    

85

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5246 руб.

29.06.2020    25074    34    6    

53

Консолидация данных Работа с интерфейсом Программист Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 1C:ERP Узбекистан Беларусь Кыргызстан Россия Казахстан Платные (руб)

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

6088 руб.

17.10.2025    2360    3    0    

2

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36600 руб.

28.08.2025    8353    2    2    

6

Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    50865    mrXoxot    44    

139

Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    26884    smielka    39    

117

Инструментарий разработчика Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

3 стартмани

10.04.2023    17757    182    acces969    31    

132
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. qKirai 09.06.26 17:17 Сейчас в теме
Интересно. Разве что стоит упомянуть, что использование варианта с БСП и модулем МодификацияКонфигурацииПереопределяемый возможно и в расширении. Редактирование модуля в основной конфигурации не обязательно, а для добавления реквизитов в множество разных форм или как единое место для отслеживания изменений реквизитов в формах - удобно.
Для отправки сообщения требуется регистрация/авторизация