СКД + Макет. Удаление колонки программно

18.07.24

Разработка - СКД

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

Имеется табличный документ, сформированный СКД с настроенным макетом.

 

 

В нем надо удалить колонку по флажку программно:

Если ДополнительнаяКолонка = Ложь Тогда

      Область = Результат.НайтиТекст("Дополнительная колонка");

      Результат.УдалитьОбласть(Результат.Область("C"+Область.Лево + ":C" + (Область.Лево)), ТипСмещенияТабличногоДокумента.ПоГоризонтали);

КонецЕсли;

Проблемы:

  1. Удаляется только верхняя часть колонки (шапка таблицы). Все, что ниже – нет.
  2. При формировании табличного документа ширина колонок для разных группировок строк разъезжается.

Причины и решение:

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

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

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

 

 

При поиске решения рассматривались варианты:

  1. https://forum.infostart.ru/forum9/topic221584/ - из недостатков стало то, что удаляется и группировка строк. Рассматривался вариант компенсировать копированием группировок строк: //infostart.ru/1c/articles/1213983/ -
  2. Также как вариант решения было построчное удаление.
Результат.УдалитьОбласть(Результат.Область("C"+Область.Лево + ":C" + (Область.Лево)), ТипСмещенияТабличногоДокумента.ПоГоризонтали); //удаляло колонку только в шапке

Для Ном = 11 По Результат.ВысотаТаблицы Цикл //Удаление колонок во всех последующих строках

    лсНом = СтрЗаменить(Строка(Ном),Символы.НПП,"");

    Результат.УдалитьОбласть(Результат.Область("R"+лсНом+"C"+Область.Лево+":R"+лсНом+"C" + (Область.Лево)), ТипСмещенияТабличногоДокумента.ПоГоризонтали);

КонецЦикла;

Т.к. формат строк в области, состоящей из 1 строки не может быть различным, то работало. Но решало только проблему 1, а не проблему 2: после удаления ячейки происходил сдвиг по горизонтали на 1 колонку влево. При этом ширина, естественно, оставалась прежней (левой колонки).

Табличный документ ТабДок СКД макет удалить колонку

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    146704    805    392    

822

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    6403    implecs_team    6    

45

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    6082    45    obmailok    21    

78

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2847    2    Yashazz    0    

33

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    9991    22    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Рассмотрим еще не получивший широкого распространения способ работы с внешними данным в СКД. В процессе обсуждения работы с СКД выяснилось, что многие не знакомы со способом помещения туда временной таблицы, полученной предварительно. Статья будет полезна разработчикам, знакомым с программным созданием СКД.

05.12.2023    6897    PROSTO-1C    14    

67
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. BackinSoda 18.07.24 09:01 Сейчас в теме
" все группировки расположить внутри одной (служебной, которая отвечает за вывод шапки) " показали бы на скрине как это выглядит, а то не очень понятно
Оставьте свое сообщение