2
Franchiser
гуру
06.04.18
✎
12:37
|
Сделал так по аналогии с найденным в сети:
// Проверка двух смежных ячеек на идентичночность
Функция ОбъединятьЯчейки(ТабДок, индСтр, индКол)
Ячейка = ТабДок.Область(индСтр, индКол);
ЯчейкаСлед = ТабДок.Область(индСтр+1, индКол);
Если ПустаяСтрока(Ячейка.Текст) Тогда
Возврат ложь
ИначеЕсли
//Проверяем на соответствие заголовка
Ячейка.Текст = ЯчейкаСлед.Текст
// Проверяем на соответствие имени (отсеиваем уже объединенные ячейки)
//и Ячейка.Имя = "R"+индСтр+"C"+индКол
Тогда
Возврат Истина;
Иначе
Возврат ложь
КонецЕсли;
КонецФункции
// Обработка заголовков таблицы
//
// Параметры
// Табл - < Тип.ТабличныйДокумент> - Табличный документ формы
Процедура ОбработатьЗаголовки(ТабДок)
ОбъединяемаяОбласть = Неопределено;
//Для оптимизации здесь нужно будет ограничить высоту таблицы
Для индКол=1 По ТабДок.ШиринаТаблицы Цикл
НачальнаяСтрока = 0;
Для индСтр=1 По 8 Цикл
// определяем начало объединения
Если ОбъединятьЯчейки(ТабДок, индСтр, индКол) Тогда
Если не НачальнаяСтрока Тогда
// НачальнаяКолонка = индКол;
НачальнаяСтрока = индСтр;
КонецЕсли;
ИначеЕсли НачальнаяСтрока Тогда
// завершаем объединение
ТекстЗаголовка = ТабДок.Область(индСтр, индКол).Текст;
//ОбъединяемаяОбласть = ТабДок.Область(индСтр, НачальнаяКолонка, индСтр, индКол);
ОбъединяемаяОбласть = ТабДок.Область(НачальнаяСтрока, индКол, индСтр, индКол); //SAV
ОбъединяемаяОбласть.Объединить();
ОбъединяемаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
ОбъединяемаяОбласть.Текст = ТекстЗаголовка;
// НачальнаяКолонка = 0;
НачальнаяСтрока=0;
Иначе
//НачальнаяКолонка = 0;
НачальнаяСтрока=0;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
|
|
4
Franchiser
гуру
06.04.18
✎
12:48
|
(1) есть 1 группировка состоящая из 4-х полей, и далее детальные записи из 10 полей. Если сделать автополе (т.е. не использовать поля из группировок), тогда выглядит некрасиво.
|
|