Вкладки на форме 1С:Предприятие через группу «Страницы»

· 9 мин

Содержание

Вкладки на форме в 1С 8.3 — это группа с видом «Страницы». Добавляется она в редакторе формы в Конфигураторе: правой кнопкой по дереву элементов → Добавить → Группа, а в свойстве Вид группы выбираете значение «Страницы». Внутри этой группы каждая отдельная вкладка — вложенная группа с видом «Страница», и её заголовок становится надписью на закладке.

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

Сразу оговорюсь: речь про вкладки на форме (объекта, списка, обработки), а не про разделы в панели слева — те настраиваются отдельно, через команду Вид → Настройка панели разделов уже в режиме 1С:Предприятие. Здесь — только разработка форм. Всё описанное относится к управляемым формам платформы 8.3 с интерфейсом «Такси».

Что подготовить перед правкой формы

Редактирование формы меняет конфигурацию, поэтому сначала решите, куда вносить изменения.

  • 💡 Если конфигурация типовая и стоит на поддержке, не снимайте её с поддержки ради пары вкладок. Сделайте расширение конфигурации (Конфигурация → Расширения конфигурации), добавьте в него нужную форму и правьте её там. Обновления типовой при этом не затираются.
  • Если база своя, самописная — правьте форму прямо в основной конфигурации.
  • Перед изменением структуры сделайте резервную копию базы или выгрузку в .dt. Откат формы вручную — занятие долгое.

Откройте форму двойным кликом в дереве метаданных: например, Справочники → Контрагенты → Формы → ФормаЭлемента. В нижней части редактора — дерево элементов формы, это и есть рабочая область для добавления вкладок.

Если форма генерируется автоматически (у объекта нет собственной формы), создайте её командой Добавить → Форма и пройдите конструктор — только после этого элементы формы станут доступны для правки.

Добавляем контейнер вкладок — группу «Страницы»

Контейнер — это одна группа, внутри которой живут все вкладки. Порядок действий:

  1. Встаньте в дереве элементов на тот уровень, где должны появиться вкладки (обычно это корень формы).
  2. Нажмите Добавить → Группа в командной панели дерева или через контекстное меню.
  3. В палитре свойств новой группы найдите свойство Вид группы и выберите «Страницы».
  4. Задайте группе понятное имя, например ГруппаСтраницы — по нему вы будете обращаться к контейнеру из кода.

После этого группа превращается в контейнер с закладками, но сами вкладки в ней ещё не созданы. Каждая вкладка добавляется так же — новой группой внутри контейнера:

  1. Встаньте на группу «Страницы».
  2. Добавить → Группа.
  3. В свойстве Вид группы выберите «Страница».
  4. Повторите для каждой вкладки.

Не путайте два вида: внешний контейнер — «Страницы» (множественное число), а вложенные вкладки — «Страница». Если по ошибке оба сделать «Страницы», закладки не появятся.

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

Заголовки, картинки и порядок закладок

Надпись на закладке берётся из свойства Заголовок каждой группы-страницы. Если заголовок пустой, платформа подставит имя элемента латиницей — выглядит это неаккуратно, поэтому заголовок задавайте всегда.

  • Заголовок — текст на закладке. Пишите коротко: «Основное», «Банк и касса», «Файлы».
  • Картинка — иконка слева от текста. Выбирается из библиотеки картинок платформы или из общей картинки конфигурации. Необязательна, но на формах с большим числом вкладок помогает ориентироваться.
  • Подсказка — всплывающий текст при наведении на закладку.

Порядок закладок = порядок групп-страниц в дереве элементов сверху вниз. Чтобы переставить вкладку, просто перетащите группу мышью или двигайте стрелками Ctrl+Shift+↑/↓. Левее окажется та страница, что выше в дереве.

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

Как разложить реквизиты по вкладкам

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

Логика раскладки простая:

  • на первую вкладку — обязательные поля, которые заполняют всегда (наименование, дата, сумма);
  • на вторую и дальше — то, что заполняют не каждый раз (дополнительные реквизиты, адреса, служебные поля);
  • таблицы и списки лучше выносить на отдельную вкладку целиком — им нужно место.

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

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

Если поле не хочет перетаскиваться на вкладку, проверьте: возможно, оно связано с реквизитом формы, а вы бросаете его мимо группы-страницы, в корень. Бросайте точно на строку с нужной группой «Страница».

Переключение и видимость вкладок из кода

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

Переключить активную вкладку (например, по нажатию кнопки):

&НаКлиенте
Процедура ОткрытьВкладкуДополнительно(Команда)
	Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаДополнительно;
КонецПроцедуры

Свойство ТекущаяСтраница контейнера хранит ссылку на активную страницу. Присваиваете ему нужную группу-страницу — вкладка открывается.

Скрыть или показать отдельную вкладку:

&НаСервере
Процедура ПриСозданииНаСервереПослеВыполнения()
	// Прячем вкладку с банковскими реквизитами для физлиц
	Элементы.СтраницаБанк.Видимость = (Объект.ЮридическоеФизическоеЛицо = "Юридическое");
КонецПроцедуры

Скрытая вкладка исчезает из ряда закладок полностью — пользователь её не видит и не может открыть. Если нужно оставить закладку видимой, но запретить ввод, используйте свойство Доступность вместо Видимость.

Типичный сценарий — перерисовать вкладки при изменении поля. Выносите логику в отдельную процедуру и вызывайте её и из ПриСозданииНаСервере, и из обработчика ПриИзменении реквизита:

&НаКлиенте
Процедура ВидЛицаПриИзменении(Элемент)
	УстановитьВидимостьВкладок();
КонецПроцедуры

&НаКлиенте
Процедура УстановитьВидимостьВкладок()
	ЕстьЮрлицо = (Объект.ЮридическоеФизическоеЛицо = "Юридическое");
	Элементы.СтраницаБанк.Видимость = ЕстьЮрлицо;
	Элементы.СтраницаЕГРЮЛ.Видимость = ЕстьЮрлицо;
КонецПроцедуры

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

Создание вкладок на лету из кода

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

&НаСервере
Процедура ДобавитьСтраницуИстория()
	НоваяСтраница = Элементы.Добавить("СтраницаИстория", Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);
	НоваяСтраница.Вид = ВидГруппыФормы.Страница;
	НоваяСтраница.Заголовок = "История изменений";
КонецПроцедуры

Разберём аргументы метода:

  • первый — имя элемента, по которому вы потом обращаетесь к странице;
  • второй — тип создаваемого элемента, для вкладки это Тип("ГруппаФормы");
  • третий — родитель, то есть контейнер «Страницы», внутрь которого встаёт новая вкладка.

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

Программно созданные элементы живут только пока открыта форма — при следующем открытии их нужно создавать заново. Поэтому весь код размещения держите в одной процедуре и вызывайте её из ПриСозданииНаСервере.

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

Вкладки на форме и разделы в панели — не путать

Запрос «добавить вкладки» встречается в двух смыслах, и важно понимать, о каком речь.

  • Вкладки на форме (закладки) — то, о чём вся эта инструкция. Их добавляет разработчик в Конфигураторе группой «Страницы».
  • Разделы в панели слева или сверху (Продажи, Банк, Зарплата) — это подсистемы конфигурации. Их состав пользователь меняет уже в режиме 1С:Предприятие командой Вид → Настройка панели разделов, кодом туда лезть не нужно.

Если на форме не хватает одной закладки — это разработка. Если хочется вернуть пропавший раздел меню — это пользовательская настройка панели, Конфигуратор не требуется.

Свойства группы: что за что отвечает

Чтобы не искать по палитре, держите под рукой разбор основных свойств.

СвойствоУ какой группыЗа что отвечает
Вид группыобе«Страницы» — контейнер, «Страница» — одна вкладка
ЗаголовокСтраницанадпись на закладке
КартинкаСтраницаиконка на закладке
ВидимостьСтраницапоказывать вкладку или скрыть целиком
ДоступностьСтраницавкладка видна, но ввод запрещён
Отображение страницСтраницызакладки сверху или скрытые (переключение кодом)
ТекущаяСтраницаСтраницыактивная вкладка (только из кода, в режиме работы)
ПодсказкаСтраницавсплывающий текст при наведении

ТекущаяСтраница в палитре свойств в режиме конфигурирования недоступна — это свойство времени выполнения, им управляют только из модуля формы.

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

Типичные ошибки при настройке вкладок

Большинство проблем с вкладками — это путаница в именах и видах групп. Разберём по симптомам.

Диагностика: выберите симптом
Проверка перед закрытием формы
Выполнено: 0 / 6

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

Чем отличается группа «Страницы» от группы «Страница»?
«Страницы» (множественное) — внешний контейнер, который рисует ряд закладок. «Страница» (единственное) — одна вкладка внутри него. Контейнер один, страниц в нём сколько угодно.
Можно ли сделать вкладки без видимых закладок?
Да. У контейнера в свойстве Отображение страниц выберите вариант без закладок. Вкладки останутся, но переключать их пользователь не сможет — только ваш код через ТекущаяСтраница. Так делают мастера и пошаговые формы.
Как открыть форму сразу на нужной вкладке?
В обработчике ПриСозданииНаСервере присвойте Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.НужнаяСтраница. Без этого откроется первая страница сверху по дереву.
Как скрыть вкладку в зависимости от значения поля?
Задайте Элементы.ИмяСтраницы.Видимость условием и вызывайте эту установку из ПриСозданииНаСервере и из обработчика ПриИзменении нужного реквизита, чтобы вкладка перерисовывалась на лету.
Почему свойства `ТекущаяСтраница` нет в палитре?
Это свойство времени выполнения: активная вкладка известна только когда форма открыта. В Конфигураторе его не задать, работают с ним исключительно из модуля формы.