Недавно столкнулся с такой задачей:
Заказчик потребовал создать отчет но что бы в нем были пронумерованы все колонки и строки этого отчета.
Как я понял им нужно это для того что бы отчет можно было сложить в печатном виде по этим номерам (отчет выходит довольно большая простыня).
Поскольку в СКД стандартных методов было не обнаружено мной задача была решена таким образом.
ТабДок = ЭлементыФормы.Результат;
КоличествоСтрокШапки = ТабДок.ФиксацияСверху+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"+НомерСтроки), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
Вот что вышло
Сообщение отредактировал logist - 05.02.14, 15:20