Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как объединить в группу область табличного документа программно?

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.