Вкладки на форме 1С:Предприятие через группу «Страницы»
Содержание
Вкладки на форме в 1С 8.3 — это группа с видом «Страницы». Добавляется она в редакторе формы в Конфигураторе: правой кнопкой по дереву элементов → Добавить → Группа, а в свойстве Вид группы выбираете значение «Страницы». Внутри этой группы каждая отдельная вкладка — вложенная группа с видом «Страница», и её заголовок становится надписью на закладке.
Если форма разрослась и реквизиты не помещаются на один экран, закладки разбивают их на логические блоки: «Основное», «Дополнительно», «Контакты». Пользователь переключается между ними в один клик, а разработчик управляет видимостью и доступностью каждой вкладки из кода.
Сразу оговорюсь: речь про вкладки на форме (объекта, списка, обработки), а не про разделы в панели слева — те настраиваются отдельно, через команду Вид → Настройка панели разделов уже в режиме 1С:Предприятие. Здесь — только разработка форм. Всё описанное относится к управляемым формам платформы 8.3 с интерфейсом «Такси».
Что подготовить перед правкой формы
Редактирование формы меняет конфигурацию, поэтому сначала решите, куда вносить изменения.
- 💡 Если конфигурация типовая и стоит на поддержке, не снимайте её с поддержки ради пары вкладок. Сделайте расширение конфигурации
(
Конфигурация → Расширения конфигурации), добавьте в него нужную форму и правьте её там. Обновления типовой при этом не затираются. - Если база своя, самописная — правьте форму прямо в основной конфигурации.
- Перед изменением структуры сделайте резервную копию базы
или выгрузку в
.dt. Откат формы вручную — занятие долгое.
Откройте форму двойным кликом в дереве метаданных: например, Справочники → Контрагенты → Формы → ФормаЭлемента. В нижней части редактора — дерево элементов формы, это и есть рабочая область для добавления вкладок.
Если форма генерируется автоматически (у объекта нет собственной формы), создайте её командой Добавить → Форма и пройдите конструктор — только после этого элементы формы станут доступны для правки.
Добавляем контейнер вкладок — группу «Страницы»
Контейнер — это одна группа, внутри которой живут все вкладки. Порядок действий:
- Встаньте в дереве элементов на тот уровень, где должны появиться вкладки (обычно это корень формы).
- Нажмите
Добавить → Группав командной панели дерева или через контекстное меню. - В палитре свойств новой группы найдите свойство
Вид группыи выберите «Страницы». - Задайте группе понятное имя, например
ГруппаСтраницы— по нему вы будете обращаться к контейнеру из кода.
После этого группа превращается в контейнер с закладками, но сами вкладки в ней ещё не созданы. Каждая вкладка добавляется так же — новой группой внутри контейнера:
- Встаньте на группу «Страницы».
Добавить → Группа.- В свойстве
Вид группывыберите «Страница». - Повторите для каждой вкладки.
Не путайте два вида: внешний контейнер — «Страницы» (множественное число), а вложенные вкладки — «Страница». Если по ошибке оба сделать «Страницы», закладки не появятся.
У контейнера есть свойство Отображение страниц. По умолчанию стоит значение, которое рисует закладки сверху. Если поставить вариант без закладок, вкладки останутся, но переключать их пользователь сможет только через ваш код — это приём для мастеров и пошаговых форм.
Заголовки, картинки и порядок закладок
Надпись на закладке берётся из свойства Заголовок каждой группы-страницы. Если заголовок пустой, платформа подставит имя элемента латиницей — выглядит это неаккуратно, поэтому заголовок задавайте всегда.
Заголовок— текст на закладке. Пишите коротко: «Основное», «Банк и касса», «Файлы».Картинка— иконка слева от текста. Выбирается из библиотеки картинок платформы или из общей картинки конфигурации. Необязательна, но на формах с большим числом вкладок помогает ориентироваться.Подсказка— всплывающий текст при наведении на закладку.
Порядок закладок = порядок групп-страниц в дереве элементов сверху вниз. Чтобы переставить вкладку, просто перетащите группу мышью или двигайте стрелками Ctrl+Shift+↑/↓. Левее окажется та страница, что выше в дереве.
💡 Первой ставьте ту вкладку, с которой пользователь работает чаще всего: именно она открывается при старте формы, если вы не задали активную страницу кодом.
Как разложить реквизиты по вкладкам
Пустые вкладки бесполезны — на них нужно перенести поля. Поля в дереве элементов перетаскиваются мышью: захватываете поле (или целую подгруппу) и бросаете внутрь нужной группы-страницы.
Логика раскладки простая:
- на первую вкладку — обязательные поля, которые заполняют всегда (наименование, дата, сумма);
- на вторую и дальше — то, что заполняют не каждый раз (дополнительные реквизиты, адреса, служебные поля);
- таблицы и списки лучше выносить на отдельную вкладку целиком — им нужно место.
Внутри одной страницы поля можно дополнительно сгруппировать обычными группами (вид группы «Вертикальная группа» или «Горизонтальная группа») — так колонки встанут ровно. Для наглядности включите у такой группы свойство Отображение со значением, рисующим рамку с заголовком.
Не дробите форму на десяток вкладок — за пятью-шестью закладками пользователь начинает теряться. Если вкладок получается много, подумайте, не вынести ли часть данных на отдельную форму или в отдельную команду. Закладки хороши, когда группируют именно смысловые блоки, а не прячут за ними всё подряд. Поля, которые заполняют в паре друг с другом, держите на одной вкладке — переключение между закладками ради двух связанных реквизитов раздражает.
Если поле не хочет перетаскиваться на вкладку, проверьте: возможно, оно связано с реквизитом формы, а вы бросаете его мимо группы-страницы, в корень. Бросайте точно на строку с нужной группой «Страница».
Переключение и видимость вкладок из кода
Самое ценное — управлять вкладками программно: прятать ненужные, открывать нужную при определённом условии. Обращение идёт через коллекцию Элементы по имени группы.
Переключить активную вкладку (например, по нажатию кнопки):
&НаКлиенте
Процедура ОткрытьВкладкуДополнительно(Команда)
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаДополнительно;
КонецПроцедуры
Свойство ТекущаяСтраница контейнера хранит ссылку на активную страницу. Присваиваете ему нужную группу-страницу — вкладка открывается.
Скрыть или показать отдельную вкладку:
&НаСервере
Процедура ПриСозданииНаСервереПослеВыполнения()
// Прячем вкладку с банковскими реквизитами для физлиц
Элементы.СтраницаБанк.Видимость = (Объект.ЮридическоеФизическоеЛицо = "Юридическое");
КонецПроцедуры
Скрытая вкладка исчезает из ряда закладок полностью — пользователь её не видит и не может открыть. Если нужно оставить закладку видимой, но запретить ввод, используйте свойство Доступность вместо Видимость.
Типичный сценарий — перерисовать вкладки при изменении поля. Выносите логику в отдельную процедуру и вызывайте её и из ПриСозданииНаСервере, и из обработчика ПриИзменении реквизита:
&НаКлиенте
Процедура ВидЛицаПриИзменении(Элемент)
УстановитьВидимостьВкладок();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВидимостьВкладок()
ЕстьЮрлицо = (Объект.ЮридическоеФизическоеЛицо = "Юридическое");
Элементы.СтраницаБанк.Видимость = ЕстьЮрлицо;
Элементы.СтраницаЕГРЮЛ.Видимость = ЕстьЮрлицо;
КонецПроцедуры
💡 Переключение ТекущаяСтраница работает и на клиенте, и на сервере, а вот менять видимость полезнее на клиенте — так форма не бегает лишний раз на сервер.
Создание вкладок на лету из кода
Иногда число вкладок заранее неизвестно: например, по одной вкладке на каждый договор контрагента или на каждый найденный документ. Такие страницы создают программно методом Элементы.Добавить, обычно в обработчике ПриСозданииНаСервере.
&НаСервере
Процедура ДобавитьСтраницуИстория()
НоваяСтраница = Элементы.Добавить("СтраницаИстория", Тип("ГруппаФормы"), Элементы.ГруппаСтраницы);
НоваяСтраница.Вид = ВидГруппыФормы.Страница;
НоваяСтраница.Заголовок = "История изменений";
КонецПроцедуры
Разберём аргументы метода:
- первый — имя элемента, по которому вы потом обращаетесь к странице;
- второй — тип создаваемого элемента, для вкладки это
Тип("ГруппаФормы"); - третий — родитель, то есть контейнер «Страницы», внутрь которого встаёт новая вкладка.
После добавления обязательно задайте свойство Вид значением ВидГруппыФормы.Страница — без этого группа создастся обычной, а не вкладкой. Поля на такую страницу тоже добавляют методом Элементы.Добавить, указывая родителем уже саму страницу и связывая их с реквизитами формы.
Программно созданные элементы живут только пока открыта форма — при следующем открытии их нужно создавать заново. Поэтому весь код размещения держите в одной процедуре и вызывайте её из ПриСозданииНаСервере.
Этот приём экономит ручную работу на формах, где состав вкладок зависит от данных. Для фиксированного набора вкладок он не нужен — проще разложить страницы в редакторе формы.
Вкладки на форме и разделы в панели — не путать
Запрос «добавить вкладки» встречается в двух смыслах, и важно понимать, о каком речь.
- Вкладки на форме (закладки) — то, о чём вся эта инструкция. Их добавляет разработчик в Конфигураторе группой «Страницы».
- Разделы в панели слева или сверху (Продажи, Банк, Зарплата) — это подсистемы конфигурации. Их состав пользователь меняет уже в режиме 1С:Предприятие командой
Вид → Настройка панели разделов, кодом туда лезть не нужно.
Если на форме не хватает одной закладки — это разработка. Если хочется вернуть пропавший раздел меню — это пользовательская настройка панели, Конфигуратор не требуется.
Свойства группы: что за что отвечает
Чтобы не искать по палитре, держите под рукой разбор основных свойств.
| Свойство | У какой группы | За что отвечает |
|---|---|---|
Вид группы | обе | «Страницы» — контейнер, «Страница» — одна вкладка |
Заголовок | Страница | надпись на закладке |
Картинка | Страница | иконка на закладке |
Видимость | Страница | показывать вкладку или скрыть целиком |
Доступность | Страница | вкладка видна, но ввод запрещён |
Отображение страниц | Страницы | закладки сверху или скрытые (переключение кодом) |
ТекущаяСтраница | Страницы | активная вкладка (только из кода, в режиме работы) |
Подсказка | Страница | всплывающий текст при наведении |
ТекущаяСтраница в палитре свойств в режиме конфигурирования недоступна — это свойство времени выполнения, им управляют только из модуля формы.
Для обычных (неуправляемых) форм логика похожа, но контейнер там — отдельный элемент управления «Панель», а вкладки внутри него — «Страницы». Свойства называются иначе, поэтому код из управляемой формы напрямую не переносится.
Типичные ошибки при настройке вкладок
Большинство проблем с вкладками — это путаница в именах и видах групп. Разберём по симптомам.
Вид группы = «Страницы», либо внутри нет ни одной группы с видом «Страница». Проверьте оба уровня.Элементы.ИмяСтраницы, но имя группы другое или с опечаткой. Скопируйте имя точно из палитры свойств, регистр и подчёркивания важны.Доступность = Ложь вместо Видимость. Доступность только блокирует ввод, вкладка остаётся на экране.Частые вопросы
Чем отличается группа «Страницы» от группы «Страница»?
Можно ли сделать вкладки без видимых закладок?
Отображение страниц выберите вариант без закладок. Вкладки останутся, но переключать их пользователь не сможет — только ваш код через ТекущаяСтраница. Так делают мастера и пошаговые формы.Как открыть форму сразу на нужной вкладке?
ПриСозданииНаСервере присвойте Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.НужнаяСтраница. Без этого откроется первая страница сверху по дереву.Как скрыть вкладку в зависимости от значения поля?
Элементы.ИмяСтраницы.Видимость условием и вызывайте эту установку из ПриСозданииНаСервере и из обработчика ПриИзменении нужного реквизита, чтобы вкладка перерисовывалась на лету.