Имеется табличный документ, сформированный СКД с настроенным макетом.
В нем надо удалить колонку по флажку программно:
Если ДополнительнаяКолонка = Ложь Тогда
Область = Результат.НайтиТекст("Дополнительная колонка");
Результат.УдалитьОбласть(Результат.Область("C"+Область.Лево + ":C" + (Область.Лево)), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
КонецЕсли;
Проблемы:
- Удаляется только верхняя часть колонки (шапка таблицы). Все, что ниже – нет.
- При формировании табличного документа ширина колонок для разных группировок строк разъезжается.
Причины и решение:
Структура имеет несколько группировок строк, расположенных на первом уровне, с одинаковым составом колонок в макете. Автонастройка ширины колонок, запускаемая при выводе табличного документа, относится только к 1 группировке, а для 2 и последующих выполняется заново. При этом для каждой подтаблицы, соответствующей очередной группировки, создается отдельный формат строк.
Решением стало: все группировки расположить внутри одной (служебной, которая отвечает за вывод шапки) . В результате автонастройка ширины колонок отнеслась не только к 1 группировке, но и ко всем подчиненным.
Итого, в результате создаваемый формат строк стал единым для всего табличного документа, что позволило решить обе проблемы.
При поиске решения рассматривались варианты:
- https://forum.infostart.ru/forum9/topic221584/ - из недостатков стало то, что удаляется и группировка строк. Рассматривался вариант компенсировать копированием группировок строк: //infostart.ru/1c/articles/1213983/ -
- Также как вариант решения было построчное удаление.
Результат.УдалитьОбласть(Результат.Область("C"+Область.Лево + ":C" + (Область.Лево)), ТипСмещенияТабличногоДокумента.ПоГоризонтали); //удаляло колонку только в шапке
Для Ном = 11 По Результат.ВысотаТаблицы Цикл //Удаление колонок во всех последующих строках
лсНом = СтрЗаменить(Строка(Ном),Символы.НПП,"");
Результат.УдалитьОбласть(Результат.Область("R"+лсНом+"C"+Область.Лево+":R"+лсНом+"C" + (Область.Лево)), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
КонецЦикла;
Т.к. формат строк в области, состоящей из 1 строки не может быть различным, то работало. Но решало только проблему 1, а не проблему 2: после удаления ячейки происходил сдвиг по горизонтали на 1 колонку влево. При этом ширина, естественно, оставалась прежней (левой колонки).