Имя: Пароль:
1C
1С v8
Как объединить в группу область табличного документа программно?
,
0 al_zzz
 
08.01.22
15:07
Отчет строится и выводится с помощью построителя(выводится в таблицу одной командой). Далее хочу, чтоб для каждого склада ресурсы в колонках объединялись как на скриншоте:
http://snap.ashampoo.com/IRpaQhxPtsO1Q05h8iaDSorg8DmButS7gd8xkVH8jWYZwVcU8CYRQKypOFrezfCa
Группировки как на скриншоте сделал в режиме предприятия выделив области ресурсов после первых двух и выбрав "Таблица"+"Группы"+"Объединить в группу" после чего выбрав "Вертикальная".
Пытаюсь сделать то же самое программно для области:
ЭлементыФормы.ПолеТабличногоДокументаРезультат.Область(СтрокаШапки2,к,Высота,(к+КолонокКСвёртке)).Сгруппировать();
Если задаю строки свёртки, то получаю ошибку: "Неприемлемая для операции область."
Если не задаю строки: ЭлементыФормы.ПолеТабличногоДокументаРезультат.Область(,к,,(к+КолонокКСвёртке)).Сгруппировать();
то сворачиваются колонки где-то вне той таблицы, что я вывел:
http://snap.ashampoo.com/vyrpaoJZPGG48R5fupNDNIXwVw7d3tDrmvbMelhusoQrANwv6fzlNRCejbHfuLWB
Как мне свернуть область программно, как на первом скриншоте?
ЧЯДНТ?
1 Ёпрст
 
08.01.22
15:31
(0) не верно указываешь группируемую область вестимо.
Если интерактивно можешь - то смотри интерактивно параметры выделенной области - а именно, границы этой области. Эти же параметры пихай программно
2 al_zzz
 
08.01.22
15:53
(1) А может быть проблема в том, что в области состоит из конкретных строк и столбцов, а не только из строк или столбцов?
Я так понимаю, в функции Сгруппировать() нельзя указать какая именно это группировка - вертикальная или горизонтальная.
3 al_zzz
 
08.01.22
16:31
Появилась мысль попробовать из текущего поля табличного документа вывести пошагово содержимое в пустой табличный документ и при выводе колонок использовать "НачатьАвтогруппировкуКолонок"/"ЗакончитьАвтогруппировкуКолонок".
Пробую:
  ТабДок = Новый ТабличныйДокумент;
  ИсходнаяОбласть = ЭлементыФормы.ПолеТабличногоДокументаРезультат.Область("R1C1:"+"R"+СтрокаШапки2+"C"+ЭлементыФормы.ПолеТабличногоДокументаРезультат.ШиринаТаблицы);
  ТабДок.Вывести(ИсходнаяОбласть);
Ругается на параметр "ИсходнаяОбласть". ИсходнаяОбласть у меня имеет тип "ОбластьЯчеекТабличногоДокумента", а требуется параметр типа "ТабличныйДокумент" или "ПолеТабличногоДокумента". Как мне из области получить параметр такого типа?
4 al_zzz
 
08.01.22
17:14
Так. С этим разобрался. Надо было получать область не методом "Область", а методом "ПолучитьОбласть". Но теперь проблема в том, что открываемый табличный документ пустой. Только сетка совпадает с исходным документом:http://snap.ashampoo.com/JPo7larr3Ls5Pvk5x9WqjAlHHN5fJuytfhRqhDCdPvAALK7DkUTtv026NXdXn3Ls
5 al_zzz
 
09.01.22
14:42
Ап!
6 runoff_runoff
 
09.01.22
14:43
не надо никакого "Ап".. видно.. что уже сам сможешь разобраться..
7 al_zzz
 
09.01.22
15:56
(6) Да в том-то и дело, что не получается.
1. Функция "Сгруппировать" не работает на область, заданную не исключительно строками/колонками;
2. При попытке вывести последовательно секции в другом табличном документе из текущего переносятся пустые блоки.
8 al_zzz
 
09.01.22
16:53
(1) Даже если явно указываю: http://snap.ashampoo.com/VdNGo0E65t8LidxO14jDmzpyTjdHhcp6f7et7Ir15Phft0To36RIxcBmlfTsheqM
Получаю: "Неприемлемая для операции область."
9 al_zzz
 
09.01.22
17:12
Всё, ребятки, я победил!
Помогла вот эта тема: v8: Программная группировка Области ячеек ТД
Суть в том, что для того, чтобы сворачивать область, состоящую из конкретных строк и колонок(не только из строк, или только из колонок) не нужно указывать номер начальной строки.
Т.е., в моём случае это выглядит: ЭлементыФормы.ПолеТабличногоДокументаРезультат.Область(,к,Высота,(к+КолонокКСвёртке-1)).Сгруппировать();
И ещё был нюанс: надо было перед группировкой областей удалить пустые строки в табличном документе, которые шли до вывода таблицы:
  Область = ЭлементыФормы.ПолеТабличногоДокументаРезультат.Область(1,1,3,ЭлементыФормы.ПолеТабличногоДокументаРезультат.ШиринаТаблицы);
  ЭлементыФормы.ПолеТабличногоДокументаРезультат.УдалитьОбласть(Область,ТипСмещенияТабличногоДокумента.ПоВертикали);
После этого всё заработало как надо.
Всем спасибо за помощь!
(6) Спасибо, что верил в меня!