Имя: Пароль:
1C
1С v8
Вывод заголовка полей СКД
0 Franchiser
 
гуру
05.04.18
12:46
Есть поле которое выведено одновременно на уровне группировки отчета СКД и на уровне детальных записей. Как сделать, чтобы в заголовке не дублировалось название поля в 2х строках?
1 aleks_default
 
05.04.18
14:45
Убери это поле из детальных записей, раз уж оно есть в группировке
2 Franchiser
 
гуру
06.04.18
12:37
Сделал так по аналогии с найденным в сети:
// Проверка двух смежных ячеек на идентичночность
Функция ОбъединятьЯчейки(ТабДок, индСтр, индКол)

Ячейка = ТабДок.Область(индСтр, индКол);
ЯчейкаСлед = ТабДок.Область(индСтр+1, индКол);
Если ПустаяСтрока(Ячейка.Текст) Тогда

Возврат ложь

ИначеЕсли
//Проверяем на соответствие заголовка
Ячейка.Текст = ЯчейкаСлед.Текст
        // Проверяем на соответствие имени (отсеиваем уже объединенные ячейки)
//и Ячейка.Имя = "R"+индСтр+"C"+индКол
Тогда

Возврат Истина;

Иначе

Возврат ложь

КонецЕсли;

КонецФункции

// Обработка заголовков таблицы
//
// Параметры
// Табл - < Тип.ТабличныйДокумент> - Табличный документ формы
Процедура ОбработатьЗаголовки(ТабДок)

ОбъединяемаяОбласть = Неопределено;

//Для оптимизации здесь нужно будет ограничить высоту таблицы
Для индКол=1 По ТабДок.ШиринаТаблицы Цикл
    
     НачальнаяСтрока = 0;
     Для индСтр=1 По 8 Цикл
         // определяем начало объединения
         Если ОбъединятьЯчейки(ТабДок, индСтр, индКол) Тогда
            
             Если не НачальнаяСтрока Тогда
                
                 // НачальнаяКолонка = индКол;
                
                 НачальнаяСтрока = индСтр;
                
                
             КонецЕсли;
            
         ИначеЕсли НачальнаяСтрока Тогда
             // завершаем объединение
            
             ТекстЗаголовка = ТабДок.Область(индСтр, индКол).Текст;
             //ОбъединяемаяОбласть = ТабДок.Область(индСтр, НачальнаяКолонка, индСтр, индКол);
             ОбъединяемаяОбласть = ТабДок.Область(НачальнаяСтрока, индКол, индСтр, индКол);  //SAV
            
             ОбъединяемаяОбласть.Объединить();
             ОбъединяемаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
             ОбъединяемаяОбласть.Текст = ТекстЗаголовка;
             // НачальнаяКолонка = 0;
             НачальнаяСтрока=0;
            
            
         Иначе
            
             //НачальнаяКолонка = 0;
             НачальнаяСтрока=0;
            
         КонецЕсли;
        
     КонецЦикла;
    
    
КонецЦикла;

КонецПроцедуры
3 Franchiser
 
гуру
06.04.18
12:44
помогла статья:
http://catalog.mista.ru/public/77916/
4 Franchiser
 
гуру
06.04.18
12:48
(1) есть 1 группировка состоящая из 4-х полей, и далее детальные записи из 10 полей. Если сделать автополе (т.е. не использовать поля из группировок), тогда выглядит некрасиво.