К статье
Практический материал

Разработка и Конфигурация · 9 мин

Как программно свернуть группу на форме 1С

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

Группы на форме 1С часто используются для компактного размещения реквизитов: редко заполняемые поля прячут в сворачиваемые блоки, чтобы не перегружать интерфейс. Когда групп нужно управлять из кода — например, сворачивать блок с дополнительными сведениями при открытии формы или раскрывать его при ошибке заполнения — разработчик сталкивается с тем, что поведение зависит от типа формы и вида группы.

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

Какие виды групп поддерживают сворачивание

Сворачиваться могут не все группировки. В управляемой форме сворачивание поддерживают обычные группы (ГруппаФормы с видом «Обычная группа»), а также страницы формы в определённых сценариях. Группы колонок таблицы, командные панели и группы кнопок свернуть нельзя — у них отсутствуют соответствующие свойства.

Перед написанием кода убедитесь, что группа имеет вид «Обычная группа». Если в конфигураторе выбран другой вид (например, «Группа колонок» или «Командная панель»), попытка обратиться к свойству сворачивания приведёт к ошибке исполнения, потому что у элемента такого свойства просто нет.

Сворачивание группы в управляемой форме

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

Элементы.ГруппаДополнительно.Поведение = ПоведениеОбычнойГруппы.Свертываемая;

Элементы.ГруппаДополнительно.Свернута = Истина;

Если группа уже настроена как сворачиваемая в конфигураторе, достаточно одной строки Элементы.ГруппаДополнительно.Свернута = Истина;. Для разворачивания присвойте Ложь. Проверить текущее состояние можно чтением того же свойства — это удобно для переключателей «развернуть/свернуть» по кнопке.

Также доступен метод Скрыть() у элемента формы, который сворачивает группу программно. На практике чаще используют именно свойство Свернута, так как оно нагляднее и позволяет читать состояние. Учтите: если свойство Поведение установлено в «Обычное», присвоение Свернута = Истина не даст видимого эффекта — сначала включите сворачиваемость.

bsl
&НаКлиенте
Процедура ПереключитьГруппу(Команда)
	Элементы.ГруппаДополнительно.Свернута = НЕ Элементы.ГруппаДополнительно.Свернута;
КонецПроцедуры

Настройка сворачивания в конфигураторе без кода

Если группа должна быть свёрнута всегда при открытии, код может вообще не понадобиться. В редакторе формы выделите группу и в палитре свойств установите: «Поведение» — «Свертываемая», «Свернута» — «Истина». Дополнительно полезно заполнить свойство «Заголовок свернутого отображения» — текст, который увидит пользователь рядом со стрелкой разворачивания.

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

Сворачивание группы в обычной форме

В обычных формах (режим обычного приложения) используется другое свойство — Свернутость, доступное через коллекцию ЭлементыФормы. Пример:

ЭлементыФормы.ГруппаНастроек.Свернутость = Истина; // свернуть

ЭлементыФормы.ГруппаНастроек.Свернутость = Ложь; // развернуть

Чтобы группа в обычной форме вообще могла сворачиваться, у неё в свойствах должна быть включена соответствующая возможность (сворачиваемая группа с заголовком). Если форма давно не дорабатывалась, проверьте наличие свойства в палитре свойств конкретного элемента — состав свойств зависит от версии платформы.

Типовые сценарии программного управления

Свернуть группу при открытии формы по условию

Частая задача: показать блок «Дополнительно» свёрнутым, если данные не заполнены, и развернуть, если есть что показать. Логично разместить проверку в обработчике ПриСозданииНаСервере или ПриОткрытии:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Элементы.ГруппаДополнительно.Свернута = Не ЕстьДопДанные();

КонецПроцедуры

Развернуть группу при ошибке заполнения

Если проверка заполнения выявила ошибку в поле внутри свёрнутой группы, пользователь не увидит проблемное поле, пока не развернёт блок вручную. Хорошая практика — программно разворачивать группу при сообщении об ошибке и, при необходимости, активизировать элемент через ТекущийЭлемент.

Переключение по команде формы

Кнопка «Показать дополнительные сведения» может инвертировать состояние группы. Пример такого обработчика приведён в виджете кода выше: одна строка читает текущее значение Свернута и присваивает противоположное.

Маршрут решения

Как выбрать подход

Группа всегда свёрнута при открытии, условий нетНастройте свойства Поведение и Свернута в конфигураторе без кода
Состояние зависит от данных или роли пользователяУправляйте свойством Свернута в ПриСозданииНаСервере или ПриОткрытии
Форма работает в обычном приложенииИспользуйте ЭлементыФормы.ИмяГруппы.Свернутость
Нужно дать пользователю кнопку переключенияСоздайте команду формы и инвертируйте значение Свернута

Типичные ошибки и ограничения

Самая частая ошибка — попытка свернуть группу, у которой поведение не установлено в «Свертываемая». Код выполняется без исключения, но визуально ничего не меняется, и разработчик тратит время на поиск несуществующей проблемы в логике. Всегда проверяйте свойство «Поведение» первым делом.

Вторая распространённая ситуация — обращение к элементу по неверному имени. Имя в коде должно совпадать с именем элемента в дереве формы, а не с заголовком, который видит пользователь. Третья ошибка — попытка свернуть группу колонок таблицы или страницу: у этих видов элементов свойства Свернута нет.

Отдельно учитывайте момент вызова. В управляемой форме обращение к Элементы возможно только в контексте формы — из модуля объекта или общего модуля без передачи формы свернуть группу нельзя. Для внешних воздействий используйте оповещения или параметры формы.

Типичные ошибки
01
Поведение группы оставлено «Обычное» — присвоение Свернута не даёт видимого эффекта
02
Использование Свернутость в управляемой форме или Свернута в обычной — ошибка обращения к свойству
03
Обращение по заголовку вместо имени элемента — ошибка «Поле объекта не обнаружено»
04
Попытка свернуть группу колонок таблицы или командную панель — у этих видов нет такого свойства

Проверка результата и отладка

После внесения изменений откройте форму в режиме предприятия и проверьте три вещи: группа свёрнута в нужном состоянии, заголовок свёрнутой группы читаем и понятен пользователю, разворачивание по клику работает. Если группа должна разворачиваться по условию — проверьте оба сценария: с данными и без.

Для отладки удобно временно вывести текущее состояние в сообщение: Сообщить(Элементы.ГруппаДополнительно.Свернута);. Это помогает отличить ситуацию «свойство не применилось» от ситуации «код вообще не выполнился» — например, если обработчик не назначен событию формы.

Контрольные точки

Как проверить результат

Состояние группы при открытии
Норма

Группа свёрнута или развёрнута согласно условию

Тревожный признак

Состояние всегда одинаковое независимо от данных

Заголовок свёрнутой группы
Норма

Есть понятный текст, пользователь видит, что внутри

Тревожный признак

Пустая строка со стрелкой, назначение блока неясно

Переключение по кнопке
Норма

Каждое нажатие меняет состояние на противоположное

Тревожный признак

Кнопка срабатывает один раз или не реагирует

Итог

Что важно запомнить

В управляемой форме сворачивание настраивается через Поведение = Свертываемая и свойство Свернута, в обычной — через Свернутость. Статичные состояния задавайте в конфигураторе, условные — в обработчиках формы. Перед отладкой логики убедитесь, что группа имеет вид «Обычная группа» и правильное поведение.

Частые вопросы

Можно ли свернуть страницу формы программно?

Страницы не сворачиваются — они переключаются. Программно показать нужную страницу можно через Элементы.Страницы.ТекущаяСтраница = Элементы.ИмяСтраницы. Если нужно именно скрыть редко используемый блок, замените страницу обычной сворачиваемой группой.

Почему код Свернута = Истина выполняется, но группа не сворачивается?

Чаще всего у группы поведение установлено в «Обычное». Установите Элементы.ИмяГруппы.Поведение = ПоведениеОбычнойГруппы.Свертываемая перед присвоением Свернута, либо задайте поведение в конфигураторе. Также проверьте, что обращение идёт к тому элементу — имена в дереве формы и в коде должны совпадать.

Можно ли свернуть группу извне, не из модуля этой формы?

Напрямую — нет: коллекция Элементы доступна только в контексте формы. Извне передайте параметр при открытии формы и обработайте его в ПриСозданииНаСервере, либо используйте Оповестить() с обработчиком ОбработкаОповещения в форме.

Сохраняется ли состояние свёрнутой группы между сеансами?

Платформа может сохранять настройки формы, включая состояние сворачивания, в пользовательских настройках — это зависит от настроек сохранения данных формы. Если группа каждый раз открывается развёрнутой, хотя пользователь её сворачивал, проверьте свойство «СохранениеДанныхВНастройках» формы.

Как свернуть сразу несколько групп?

Единой команды нет — переберите нужные элементы в цикле и каждой группе присвойте Свернута = Истина. Имена групп удобно держать в массиве, чтобы не дублировать строки кода и легко расширять список.