Как предотвратить появление горизонтальной прокрутки при программном добавлении элемента на форму 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

При разработке расширений или доработке типовых конфигураций 1С часто возникает необходимость программно добавлять реквизиты на управляемую форму. Однако нередко после добавления нового поля интерфейс формы «разъезжается»: родительские группы или таблицы увеличивают свою ширину, из-за чего на экране появляется нежелательный горизонтальный скролл. Давайте разберемся, почему это происходит и как правильно управлять размерами элементов.

Анализ причин изменения ширины элементов

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

Пошаговое решение задачи

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

  1. Явное управление свойством РастягиватьПоГоризонтали: Это самый эффективный способ зафиксировать ширину колонок. Если после добавления элемента вы видите, что соседние колонки необоснованно расширяются, принудительно отключите для них автоматическое растяжение.
  2. Проверка свойств программно добавленного элемента: Убедитесь, что для нового поля также задано РастягиватьПоГоризонтали = Ложь, если вы не хотите, чтобы оно влияло на ширину всей таблицы.
  3. Использование методов добавления элементов: При работе с таблицами формы (например, ДеревоЦен), следите за тем, в какую группу или коллекцию вы добавляете новый объект.

Пример программного добавления реквизита

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


мНовыеРеквизиты = Новый Массив;
пНовыйРеквизит = Новый РеквизитФормы("РеквизитКорректор", 
    Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)), 
    "ДеревоЦен", "Корректор");
мНовыеРеквизиты.Добавить(пНовыйРеквизит);
ЭтаФорма.ИзменитьРеквизиты(мНовыеРеквизиты);

пНовыйЭлемент = Элементы.Добавить("Расш1_Корректор", Тип("ПолеФормы"), Элементы.ДеревоЦен);
пНовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
пНовыйЭлемент.ПутьКДанным = "ДеревоЦен.РеквизитКорректор";

// Важный шаг: отключаем автоматическое растяжение, чтобы не портить верстку
пНовыйЭлемент.РастягиватьПоГоризонтали = Ложь;

Как зафиксировать соседние элементы

Если вы заметили, что даже после добавления нового поля соседние колонки (например, колонка «Артикул») продолжают расширяться, необходимо явно обратиться к этим элементам и ограничить их поведение. Пройдитесь по элементам таблицы и примените к ним настройки:


// Пример фиксации соседней колонки
ЭлементАртикул = Элементы.Найти("ДеревоЦенАртикул");
Если ЭлементАртикул <> Неопределено Тогда
    ЭлементАртикул.РастягиватьПоГоризонтали = Ложь;
КонецЕсли;

Дополнительные рекомендации по оптимизации интерфейса

Помимо указанных выше приемов, обратите внимание на следующие рекомендации, которые помогут избежать проблем с визуальным отображением формы:

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

← На главную