Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вывод нумерации колонок и строк в СКД
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > База знаний > Наши статьи > Система компоновки данных
topitop
Недавно столкнулся с такой задачей:
Заказчик потребовал создать отчет но что бы в нем были пронумерованы все колонки и строки этого отчета.
Как я понял им нужно это для того что бы отчет можно было сложить в печатном виде по этим номерам (отчет выходит довольно большая простыня).
Поскольку в СКД стандартных методов было не обнаружено мной задача была решена таким образом.
ТабДок = ЭлементыФормы.Результат;

КоличествоСтрокШапки = ТабДок.ФиксацияСверху+1;
КоличествоКолонок = ТабДок.ШиринаТаблицы;
ИсходнаяОбласть = ТабДок.Область(КоличествоСтрокШапки,,КоличествоСтрокШапки);
ОбластьПриемник = ТабДок.Область(КоличествоСтрокШапки+1,,КоличествоСтрокШапки+1);

ТабДок.ВставитьОбласть(ИсходнаяОбласть,ОбластьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали);

Для Ном = 1 По КоличествоКолонок Цикл
ТекОбласть = ТабДок.Область(КоличествоСтрокШапки,Ном);
ТекОбласть.Разъединить();
ТекОбласть.Текст = ""+Ном;
ТекОбласть.ЦветФона = ЦветаСтиля.ЦветФонаШапкиОтчета;
Шрифт = Новый Шрифт("Arial",10,Ложь,Ложь,Ложь,Ложь);
ТекОбласть.Шрифт = Шрифт;
ТекОбласть.ЦветТекста = Новый Цвет;
ТекОбласть.ЦветРамки = ЦветаСтиля.ЦветЛинииОтчета;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
ТекОбласть.Обвести(Линия, Линия, Линия, Линия);
ТекОбласть.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
ТекОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
КонецЦикла;

ТабДок.ФиксацияСверху = ТабДок.ФиксацияСверху+1;



РазмерШапки = ТабДок.ФиксацияСверху;
ОблатьИсточник = ТабДок.Область("C1");
ОблатьПриемник = ТабДок.Область("C2");
ТабДок.ВставитьОбласть(ОблатьИсточник,ОблатьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали);
ТабДок.ФиксацияСлева = ТабДок.ФиксацияСлева +1;

            НомерСтроки = 0;
            Пока Истина Цикл
            НомерСтроки = НомерСтроки + 1;
            ИмяСтроки     = ТабДок.Область("R"+НомерСтроки+"C1").Текст;
            ОблатьНомераСтроки = ТабДок.Область("R"+НомерСтроки+"C1");                
            ОблатьНомераСтроки.Текст = "";
            ОблатьНомераСтроки.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
            ОблатьНомераСтроки.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
            ОблатьНомераСтроки.ШиринаКолонки = 5;
            
            Если НомерСтроки> РазмерШапки Тогда
                
                Если ПустаяСтрока(ИмяСтроки) Тогда
                    Прервать;
                КонецЕсли;

                    Номер = НомерСтроки - РазмерШапки;
                    ОблатьНомераСтроки.Текст =""+ Строка(Номер);
                    ОблатьНомераСтроки.ЦветФона = ЦветаСтиля.ЦветФонаШапкиОтчета;
                    Шрифт = Новый Шрифт("Arial",10,Ложь,Ложь,Ложь,Ложь);
                    ОблатьНомераСтроки.Шрифт = Шрифт;
                    ОблатьНомераСтроки.ЦветТекста = Новый Цвет;
                    ОблатьНомераСтроки.ЦветРамки = ЦветаСтиля.ЦветЛинииОтчета;
                    Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная,1);
                    ОблатьНомераСтроки.Обвести(Линия, Линия, Линия, Линия);
                КонецЕсли;

        КонецЦикла;
        
        
        
ОблатьИсточник = ТабДок.Область("C1");    
КолКолонок = ТабДок.ШиринаТаблицы +1;
ОблатьПриемник = ТабДок.Область("C"+КолКолонок);         
ТабДок.ВставитьОбласть(ОблатьИсточник,ОблатьПриемник,ТипСмещенияТабличногоДокумента.ПоГоризонтали);    

НомерСтроки= НомерСтроки;
ТабДок.ВставитьОбласть(ИсходнаяОбласть,ТабДок.Область("R"+НомерСтроки), ТипСмещенияТабличногоДокумента.ПоГоризонтали);


Вот что вышло smile.gif
Petre
Еще бы объединить заголовок первой колонки таблицы и покрасить белые ячейки шапки таблицы (если это не специально так задумано, конечно) и можно доставать с полки пирожок.
topitop
Цитата(Petre @ 05.02.14, 15:51) необходимо зарегистрироваться для просмотра ссылки
Еще бы объединить заголовок первой колонки таблицы и покрасить белые ячейки шапки таблицы (если это не специально так задумано, конечно) и можно доставать с полки пирожок.

Допишите в мой код(извините но мне лень) smile.gif От меня заказчик этого не требует ...
Общий смысл этого даяния считаю более чем раскрытым, кто хочет может модернизировать под себя как угодно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.