Как реализовать в 1С отображение двух связанных табличных частей в одном списке?

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

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

Вариант 1: Использование одной «смешанной» табличной части

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

  1. Создайте в табличной части колонки, которые будут общими для всех сущностей (например, Количество, Цена, Сумма).
  2. Добавьте специфические колонки: одну для описания работы, вторую для наименования запчасти.
  3. При заполнении данных пользователь вводит работу, а сразу под ней — относящиеся к ней запчасти.

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

Вариант 2: Логическая связь через идентификаторы

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

Для реализации этого метода:

  1. В каждой табличной части (Работы и Запчасти) создайте дополнительный реквизит, например, ИдентификаторРаботы.
  2. Используйте тип данных УникальныйИдентификатор или Число для хранения связи.
  3. При добавлении запчасти программно присваивайте ей идентификатор той работы, к которой она относится.

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

Вариант 3: Использование условного оформления для визуализации

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

Рассмотрим, как можно применить УсловноеОформление для улучшения читаемости:


// Пример настройки условного оформления через код
ЭлементОформления = Таблица.УсловноеОформление.Элементы.Добавить();
// Настройка условия для строк, являющихся запчастями
ЭлементОформления.Условие.Элементы.Добавить(Тип("ЭлементУсловногоОформленияКомпоновкиДанных"));
// Настройка оформления
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Шрифт", Новый Шрифт(,,Истина));

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

Альтернативные подходы: Дерево значений и Табличный документ

Для более сложных задач стоит рассмотреть альтернативные архитектурные методы:

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

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

Заключение и рекомендации

При выборе метода учитывайте объем данных:

Всегда помните об удобстве пользователя: если вы смешиваете разные сущности в одну таблицу, обязательно предусмотрите программные инструменты для удобного подбора (например, отдельную обработку подбора), чтобы пользователь не тратил время на ручное выравнивание строк.

← На главную