v8: Печать таблицы значенийФункция для печати таблицы значений в макет. Часто хочется вывести таблицу значений на экран, но писать для этого код лень. Можете использовать уже готовую функцию, в которую можете передать даже макет для оформления выводимой ТЗ. | | Автор статьи: Гений 1С | Редакторы: Последняя редакция №2 от 24.07.06 | История URL: http://kb.mista.ru/article.php?id=306 | |
Ключевые слова: печать,таблица значений,макет
Параметры в функцию передаются в виде структуры. Если параметр не задан, используется параметр по умолчанию.
Можно вывести таблицу уже в имеющийся табличный документ или создать новый.
Можно вообще вывести таблицу, не используя макет.
Можно использовать макет, в котором названия шапки, подвала и строк отличаются от "Шапка", "Подвал" и "Строка".
Функция обТаблицаЗначенийВывести(П) Экспорт
Перем
ТЗ, //Таблица значений, выводимая в отчет
Макет, //Макет, который используется для вывода в отчет, может отсутствовать
Т, //Таблица, в которую выводить отчет, если не задана, создается
ПараметрыШапки, //Параметры, передаваемые в шапку
ПараметрыПодвала,//Параметры, передаваемые в подвал
ИмяШапки, //Имя шапки в макете
ИмяСтроки, //Имя строки в макете
ИмяПодвала, //Имя подвала
Показывать //Показывать ли таблицу, по умолчанию истина
;
П.Свойство("ТЗ", ТЗ);
П.Свойство("Макет", Макет);
П.Свойство("Т", Т);
П.Свойство("ПараметрыШапки", ПараметрыШапки);
П.Свойство("ПараметрыПодвала", ПараметрыПодвала);
Если НЕ П.Свойство("ИмяШапки", ИмяШапки) Тогда
П.Вставить("ИмяШапки", "Шапка");
КонецЕсли;
Если НЕ П.Свойство("ИмяСтроки", ИмяСтроки) Тогда
П.Вставить("ИмяСтроки", "Строка");
КонецЕсли;
Если НЕ П.Свойство("ИмяПодвала", ИмяПодвала) Тогда
П.Вставить("ИмяПодвала", "Подвал");
КонецЕсли;
Если НЕ П.Свойство("Показывать", Показывать) Тогда
П.Вставить("Показывать", Истина);
КонецЕсли;
Если Т=Неопределено Тогда
Т=Новый ТабличныйДокумент();
КонецЕсли;
Если ИмяШапки<>Неопределено И Макет<>Неопределено Тогда
Шапка=Макет.ПолучитьОбласть(П.ИмяШапки);
Если ПараметрыШапки<>Неопределено Тогда
Шапка.Параметры.Заполнить(ПараметрыШапки);
КонецЕсли;
Т.Вывести(Шапка);
Иначе
//выводим шапку
Для Каждого Кол ИЗ ТЗ.Колонки Цикл
Заг=СокрЛП(Кол.Заголовок);
Заг=?(Заг="",Кол.Имя, Заг);
Т.Область("R1C"+Формат(1+ТЗ.Колонки.Индекс(Кол), "ЧГ=")).Текст=Заг;
КонецЦикла;
КонецЕсли;
Для Каждого Стр ИЗ ТЗ Цикл
Если ИмяСтроки<>Неопределено И Макет<>Неопределено Тогда
Строка=Макет.ПолучитьОбласть(П.ИмяСтроки);
Строка.Параметры.Заполнить(Стр);
Т.Вывести(Строка);
Иначе
//выводим строки
Для Каждого Кол ИЗ ТЗ.Колонки Цикл
Т.Область("R"+Формат(2+ТЗ.Индекс(Стр), "ЧГ=")+"C"+Формат(1+ТЗ.Колонки.Индекс(Кол), "ЧГ=")).Текст=Стр[Кол.Имя];
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если ИмяПодвала<>Неопределено И Макет<>Неопределено Тогда
Подвал=Макет.ПолучитьОбласть(П.ИмяПодвала);
Если ПараметрыПодвала<>Неопределено Тогда
Подвал.Параметры.Заполнить(ПараметрыПодвала);
КонецЕсли;
Т.Вывести(Подвал);
КонецЕсли;
Если П.Показывать Тогда
Т.Показать();
КонецЕсли;
КонецФункции
Еще один вариант функции здесь: v8: Печать таблицы значений (аналог версии 1сv7.7) |