Имя: Пароль:
1C
1С v8
Как распечатать таблицу значений?
,
0 D_Pavel
 
05.02.16
10:54
Есть таблица значений с неизвестными заранее колонками.
Макета табличного документа нет.
Как проще всего вывести таблицу значений на экран с возможностью печати?
1 ДенисЧ
 
05.02.16
10:55
Запихнуть её в ТЧ обработки и юзать стандартный Вывести список
2 D_Pavel
 
05.02.16
10:55
ЗЫ: Программно, не добавляя макетов в конфигурацию.
3 D_Pavel
 
05.02.16
10:55
(1) Спасибо. Темку можно закрыть.
4 Лефмихалыч
 
05.02.16
11:04
(2) программно создать табличный документ и вывести в него программно же.
5 D_Pavel
 
05.02.16
11:11
(4) Не годится. Это хуже чем (1)
6 aka AMIGO
 
05.02.16
11:14
(0) была-б у тебя 7, я-б сказал, как сделать. Или выложил соответств. отчетик.
7 Ёпрст
 
05.02.16
11:16
(0)можно, через построитель, например:

Процедура ПечатьТаблицыЗначений(Объект)
    ПострПечать = Новый ПостроительОтчета;
    ПострПечать.ИсточникДанных = Новый ОписаниеИсточникаДанных(Объект);
    ПострПечать.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Зима);
    ПострПечать.Выполнить();
    Для каждого Колонка Из ПострПечать.ВыбранныеПоля Цикл
        Колонка.Представление = Объект.Колонки[Колонка.Имя].Заголовок;
    КонецЦикла;
    ПострПечать.Вывести();
КонецПроцедуры
8 Cyberhawk
 
05.02.16
11:18
9 KuAl
 
05.02.16
11:19
Как вариант универсальная функция: (откуда-то взята)

//Функция для печати таблицы значений в макет.
//Параметры: П - Структура, в которой указывается сама ТЗ, макет, параметры
Функция ТаблицаЗначенийВывести(П) Экспорт
    Перем
        ТЗ, //Таблица значений, выводимая в отчет
        Макет, //Макет, который используется для вывода в отчет, может отсутствовать
        Т, //Таблица, в которую выводить отчет, если не задана, создается
        ПараметрыШапки, //Параметры, передаваемые в шапку
        ПараметрыПодвала,//Параметры, передаваемые в подвал
        ИмяШапки,    //Имя шапки в макете
        ИмяСтроки, //Имя строки в макете
        ИмяПодвала, //Имя подвала
        Показывать, //Показывать ли таблицу, по умолчанию истина
        Заголовок // Заголовок табличного документа
        ;
    П.Свойство("ТЗ", ТЗ);
    П.Свойство("Макет", Макет);
    П.Свойство("Т", Т);
    П.Свойство("ПараметрыШапки", ПараметрыШапки);
    П.Свойство("ПараметрыПодвала", ПараметрыПодвала);
    П.Свойство("Заголовок",Заголовок);
    Если НЕ П.Свойство("ИмяШапки", ИмяШапки) Тогда
        П.Вставить("ИмяШапки", "Шапка");
    КонецЕсли;
    Если НЕ П.Свойство("ИмяСтроки", ИмяСтроки) Тогда
        П.Вставить("ИмяСтроки", "Строка");
    КонецЕсли;
    Если НЕ П.Свойство("ИмяПодвала", ИмяПодвала) Тогда
        П.Вставить("ИмяПодвала", "Подвал");
    КонецЕсли;
    Если НЕ П.Свойство("Показывать", Показывать) Тогда
        П.Вставить("Показывать", Истина);
    КонецЕсли;
    
    Если Т=Неопределено Тогда
        Т=Новый ТабличныйДокумент();
    КонецЕсли;
    Если ИмяШапки<>Неопределено И Макет<>Неопределено Тогда
        Шапка=Макет.ПолучитьОбласть(П.ИмяШапки);
        Если ПараметрыШапки<>Неопределено Тогда
            Шапка.Параметры.Заполнить(ПараметрыШапки);
        КонецЕсли;
        Т.Вывести(Шапка);
    Иначе
        //выводим шапку
        Для Каждого Кол ИЗ ТЗ.Колонки Цикл
            Заг=СокрЛП(Кол.Заголовок);
            Заг=?(Заг="",Кол.Имя, Заг);
            Т.Область("R1C"+Формат(1+ТЗ.Колонки.Индекс(Кол), "ЧГ=")).Текст=Заг;
            Т.Область("R1C"+Формат(1+ТЗ.Колонки.Индекс(Кол), "ЧГ=")).Шрифт =  Новый Шрифт(Т.Область("R1C"+Формат(1+ТЗ.Колонки.Индекс(Кол), "ЧГ=")).Шрифт,,10,Истина,); ;
        КонецЦикла;
    КонецЕсли;

    Для Каждого Стр ИЗ ТЗ Цикл
        Если ИмяСтроки<>Неопределено И Макет<>Неопределено Тогда
            Строка=Макет.ПолучитьОбласть(П.ИмяСтроки);
            Строка.Параметры.Заполнить(Стр);
            Т.Вывести(Строка);
        Иначе
            //выводим строки
            Для Каждого Кол ИЗ ТЗ.Колонки Цикл
                Т.Область("R"+Формат(2+ТЗ.Индекс(Стр), "ЧГ=")+"C"+Формат(1+ТЗ.Колонки.Индекс(Кол), "ЧГ=")).Текст=Стр[Кол.Имя];
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
    Если ИмяПодвала<>Неопределено И Макет<>Неопределено Тогда
        Подвал=Макет.ПолучитьОбласть(П.ИмяПодвала);
        Если ПараметрыПодвала<>Неопределено Тогда
            Подвал.Параметры.Заполнить(ПараметрыПодвала);
        КонецЕсли;
        Т.Вывести(Подвал);
    КонецЕсли;
    Если П.Показывать Тогда
        Т.Показать(П.Заголовок);
    КонецЕсли;
КонецФункции
10 Анцеранана
 
05.02.16
11:31
Через отладчик, еще проще)
11 D_Pavel
 
05.02.16
11:48
(10) Мне как раз это и нужно! Расскажи как?
12 Ёпрст
 
05.02.16
11:54
(11) F2
13 D_Pavel
 
05.02.16
11:54
(7) Отличный вариант, спасибо
14 D_Pavel
 
05.02.16
11:56
(12) Брехня! F2 не распечатывается.
15 lera01
 
05.02.16
12:00
(11) Отладчик, точка останова после формирования ТЗ, просмотр ТЗ в отладчике и там сверху кнопочка вывести список.
16 D_Pavel
 
05.02.16
12:06
(15) О, точно! Спасибо. Не замечал этой маленькой иконки с принтером раньше.
17 Ma3eIIa
 
05.02.16
12:09
(16) ужас. а полоска длинная :)
18 D_Pavel
 
05.02.16
12:29
(7) А можно чтобы еще и расшифровка работала? Чтобы тыкнуть на "Товар" в ячейке и открылась карточка товара?
19 Ёпрст
 
05.02.16
12:37
(18) так воткни еще
ПострПечать .ЗаполнениеРасшифровки = ВидЗаполненияРасшифровкиПостроителяОтчета.Расшифровка;
20 Ёпрст
 
05.02.16
12:39
если не покатит, пробуй .ЗначенияГруппировок в вид пихать
21 Лефмихалыч
 
05.02.16
12:53
(5) чем хуже? Чем (1)?..