Имя: Пароль:
1C
1С v8
Как удалить ячейку шапки в отчете СКД?
0 EvgeniuXP
 
10.04.13
17:43
Как удалить ячейку шапки в отчете СКД? Убрал название, но оно теперь пустое.... не красиво как-то... целиком колонку не надо убирать, в деталях пусть отображает, а в шапке отчета нужно убрать.
1 EvgeniuXP
 
10.04.13
17:44
2 SherifSP
 
10.04.13
17:49
(0) Не уберешь в таком случае делай с помощью макета скд
3 EvgeniuXP
 
10.04.13
17:51
(2) а объединить? адреса ячеек знаю
4 SherifSP
 
10.04.13
18:08
(3) Ну сейчас кину код
5 SherifSP
 
10.04.13
18:11
Процедура ОбновитьОтчет() Экспорт
   
   ПолеВводаПериодПриИзменении(ЭтаФорма.ЭлементыФормы.Результат);
   
   ЭтаФорма.ЭлементыФормы.Результат.АвтоМасштаб = Истина;
   
   СформироватьОтчет(ЭтаФорма.ЭлементыФормы.Результат, ЭтаФорма.ДанныеРасшифровки);
   
   //ОбработатьЗаголовки(ЭтаФорма.ЭлементыФормы.Результат);
   РазбитьТабличныйДокументПоСтраницам(ЭтаФорма.ЭлементыФормы.Результат);
   
КонецПроцедуры




// Проверка двух смежных ячеек на идентичночность
Функция ОбъединятьЯчейки(ТабДок, индСтр, индКол)

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

       Возврат ложь

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

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

   Иначе

       Возврат ложь

   КонецЕсли;

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



// Разбивает табличный документ по страницам
//
// Параметры:
//  ТабличныйДокумент - ссылка на табличный документ.
//
Процедура РазбитьТабличныйДокументПоСтраницам(ТабличныйДокумент)
   
   Состояние(НСТР("ru='Разделение расчетных листков по страницам ...  (Если вы хотите прервать вывод отчета, нажмите Ctrl+Break)'"));
   
   ТабличныйДокументДляПроверки = Новый ТабличныйДокумент;
   ТабличныйДокументДляПроверки.Очистить();
   
   ТабличныйДокументДляПроверки.АвтоМасштаб = Истина;
   
   ОбластьПервойЯчейки = ТабличныйДокумент.НайтиТекст("пункт, підпр");
   
   Если ОбластьПервойЯчейки = Неопределено тогда
       Возврат;
   КонецЕсли;
   
   ОбластьСлед = ТабличныйДокумент.Область(ОбластьПервойЯчейки.Верх, , ОбластьПервойЯчейки.Верх, );
   
   ОбластьПервойЯчейки = ТабличныйДокумент.НайтиТекст("пункт, підпр", ОбластьСлед);
   
   Пока ОбластьПервойЯчейки <> Неопределено Цикл
       
       ОбластьСлед = ТабличныйДокумент.Область(ОбластьПервойЯчейки.Верх, , ОбластьПервойЯчейки.Верх, );
       НомерСтрокиКонцаРЛ = ОбластьПервойЯчейки.Верх-2;
       
         ТабличныйДокумент.Область(НомерСтрокиКонцаРЛ, , НомерСтрокиКонцаРЛ,).НачалоСтраницы = истина;
         ТабличныйДокументДляПроверки.Очистить();
       
       ОбластьПервойЯчейки = ТабличныйДокумент.НайтиТекст("пункт, підпр", ОбластьСлед);
       
       ОбработкаПрерыванияПользователя();
       
   КонецЦикла;
   
КонецПроцедуры
6 SherifSP
 
10.04.13
18:14
// Обработка заголовков таблицы
//
// Параметры
//  Табл  - < Тип.ТабличныйДокумент> - Табличный документ формы
Процедура ОбработатьЗаголовки(ТабДок) Экспорт

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

   //Для оптимизации здесь нужно будет ограничить высоту таблицы
   Для индСтр=1 По ТабДок.ВысотаТаблицы Цикл

       НачальнаяКолонка = 0;
       Для индКол=1 По ТабДок.ШиринаТаблицы Цикл

           // определяем начало объединения
           Если ОбъединятьЯчейки(ТабДок, индСтр, индКол) Тогда

               Если не НачальнаяКолонка Тогда

                   НачальнаяКолонка = индКол;

               КонецЕсли;

           ИначеЕсли НачальнаяКолонка Тогда
               // завершаем объединение

               ТекстЗаголовка = ТабДок.Область(индСтр, индКол).Текст;
               ОбъединяемаяОбласть = ТабДок.Область(индСтр, НачальнаяКолонка, индСтр, индКол);
               ОбъединяемаяОбласть.Объединить();
               ОбъединяемаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
               ОбъединяемаяОбласть.Текст = ТекстЗаголовка;
               НачальнаяКолонка = 0;

           Иначе

               НачальнаяКолонка = 0;

           КонецЕсли;

       КонецЦикла;

       // Если нашли в строке области для объединения, то прекращаем дальнейшие поиски
       //Если не ОбъединяемаяОбласть = Неопределено Тогда

       //    возврат;

       //КонецЕсли;

   КонецЦикла;
   
КонецПроцедуры
7 EvgeniuXP
 
10.04.13
18:21
(5)
Область = ТабДок.Область(2,2,3,3);
Область.Объединить();
и всё :)