Skip to content

Instantly share code, notes, and snippets.

@a-sitnikov
Created October 7, 2019 10:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save a-sitnikov/ee5b952228dc7a5145234630e6cfe1d9 to your computer and use it in GitHub Desktop.
Save a-sitnikov/ee5b952228dc7a5145234630e6cfe1d9 to your computer and use it in GitHub Desktop.
Вывод таблицы значений в табличный документ
Процедура ВывестиТаблицу(ТабДок, Таблица, АвтоопределениеШирины = Истина, МинШирина = 10) Экспорт
ШиринаКолонок = Новый Массив;
Макет = Новый ТабличныйДокумент;
Область = Макет.Область("R1:R2");
Область.СоздатьФорматСтрок();
Для Счетчик = 1 По Таблица.Колонки.Количество() Цикл
Колонка = Таблица.Колонки[Счетчик - 1];
ОбластьШапка = Макет.Область(1, Счетчик);
ОбластьШапка.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Текст;
ОбластьШапка.Текст = Колонка.Имя;
ОбластьШапка.ЦветФона = ЦветаСтиля.ЦветФонаШапкиОтчета;
ОбластьШапка.ЦветРамки = ЦветаСтиля.ЦветЛинииОтчета;
Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);
ОбластьШапка.Обвести(Линия, Линия, Линия, Линия);
ОбластьСтрока = Макет.Область(2, Счетчик);
ОбластьСтрока.Заполнение = ТипЗаполненияОбластиТабличногоДокумента.Параметр;
ОбластьСтрока.Параметр = Колонка.Имя;
ОбластьСтрока.ПараметрРасшифровки = Колонка.Имя;
ОбластьСтрока.ЦветРамки = ЦветаСтиля.ЦветЛинииОтчета;
ОбластьСтрока.Обвести(Линия, Линия, Линия, Линия);
Область = Макет.Область(1, Счетчик, 2, Счетчик);
Область.ШиринаКолонки = Макс(МинШирина, СтрДлина(Колонка.Имя));
ШиринаКолонок.Добавить(Область.ШиринаКолонки);
КонецЦикла;
Область = Макет.ПолучитьОбласть("R1");
ТабДок.Вывести(Область);
ПерваяСтрока = ТабДок.ВысотаТаблицы;
ТабДок.НачатьГруппуСтрок("Таблица");
Область = Макет.ПолучитьОбласть("R2");
Для каждого СтрокаТЗ из Таблица Цикл
Область.Параметры.Заполнить(СтрокаТЗ);
ТабДок.Вывести(Область);
Если АвтоопределениеШирины Тогда
Для Счетчик = 0 По ШиринаКолонок.Количество() - 1 Цикл
Колонка = Таблица.Колонки[Счетчик];
Значение = СтрокаТЗ[Колонка.Имя];
Ширина = СтрДлина(СокрЛП(Значение));
Если Ширина > ШиринаКолонок[Счетчик] Тогда
ШиринаКолонок[Счетчик] = Ширина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
ПоследняяСтрока = ТабДок.ВысотаТаблицы;
ТабДок.ЗакончитьГруппуСтрок();
Если АвтоопределениеШирины Тогда
Для Счетчик = 1 По ШиринаКолонок.Количество() Цикл
Область = ТабДок.Область(ПерваяСтрока, Счетчик, ПоследняяСтрока, Счетчик);
Область.ШиринаКолонки = ШиринаКолонок[Счетчик - 1] * 0.85;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment