Как выводить разные табличные части в одном месте формы обычного приложения?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

Использование управления видимостью элементов управления

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

Для реализации этого метода выполним следующие шаги:

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

Рассмотрим пример кода, который скрывает одну таблицу и показывает другую:


Процедура ПереключательПриИзменении(Элемент)
    Если Переключатель = 0 Тогда
        ЭлементыФормы.ТабличноеПолеТЧ1.Видимость = Истина;
        ЭлементыФормы.ТабличноеПолеТЧ2.Видимость = Ложь;
    Иначе
        ЭлементыФормы.ТабличноеПолеТЧ1.Видимость = Ложь;
        ЭлементыФормы.ТабличноеПолеТЧ2.Видимость = Истина;
    КонецЕсли;
КонецПроцедуры

Таким образом, пользователь будет видеть только ту таблицу, которая ему необходима в данный момент, при этом пространство формы будет использовано максимально рационально.

Программное заполнение табличного поля

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

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


Процедура ОбновитьДанныеТаблицы(ВыбраннаяТЧ)
    // Очищаем текущие данные
    ЭлементыФормы.МоеТабличноеПоле.Очистить();
    
    // Загружаем данные из нужной табличной части
    Если ВыбраннаяТЧ = "ТЧ1" Тогда
        ЭлементыФормы.МоеТабличноеПоле.Значение = ЭтотОбъект.ТЧ1;
    Иначе
        ЭлементыФормы.МоеТабличноеПоле.Значение = ЭтотОбъект.ТЧ2;
    КонецЕсли;
    
    // Создаем колонки заново, если структура ТЧ отличается
    ЭлементыФормы.МоеТабличноеПоле.СоздатьКолонки();
КонецПроцедуры

Обратите внимание, что метод СоздатьКолонки() критически важен, если структура колонок у табличных частей разная. В противном случае пользователь не увидит актуальные данные или получит ошибку отображения.

Особенности использования связанных данных

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

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

Почему не стоит смешивать управляемые и обычные формы?

Иногда возникает искушение внедрить управляемую форму внутрь обычного приложения. Хотя технически это возможно (через вызов управляемой формы из обычного интерфейса), делать это без острой необходимости не рекомендуется. Смешивание двух концепций часто приводит к следующим проблемам:

Если вы не планируете в ближайшее время переводить всю конфигурацию на Управляемые формы, придерживайтесь инструментов «обычного приложения»: используйте видимость, панели или программное заполнение объектов формы. Это обеспечит предсказуемое поведение интерфейса и облегчит поддержку конфигурации в будущем.

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

← На главную