Имя: Пароль:
1C
1С v8
Разбить узкий и длинный табдокумент на 4 столбика и вывести на одной странице
, ,
0 ks-815
 
03.04.15
09:03
Такая ситуация. Делаю отчёт с разными вариантами настроек. Их нужно вывести ВСЕ в четырёх колонках на одной странице змейкой.

Я выгрузила всё в один узкий длинный таб документ:

&НаКлиенте
Функция ВывестиВсеВТабличныйДокумент()
    
    ТаблДок = Новый ТабличныйДокумент;
    ТаблДок.ОтображатьСетку = Ложь;
    
    Для Каждого ВариантНастроек Из СКД.ВариантыНастроек Цикл
        Попытка
            Цифра = Число(Лев(ВариантНастроек.Имя,1));
        Исключение
            Продолжить;
        КонецПопытки;
        
        
        Если 1 <= Цифра И Цифра <= 7 Тогда
            
            НастройкиМакета                = ВариантНастроек.Настройки;
            УстановитьЗначенияПараметровНастройкиМакета(СКД, НастройкиМакета);
            
            МакетОформления                = новый МакетОформленияКомпоновкиДанных;    
            КомпоновщикМакета            = Новый КомпоновщикМакетаКомпоновкиДанных;
            ПроцессорКомпоновкиДанных    = новый ПроцессорКомпоновкиДанных;
            ПроцессорВывода                = новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
            
            МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, НастройкиМакета, ЭтаФорма["ДанныеРасшифровки"+ВариантНастроек.Имя], МакетОформления);    
            ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ЭтаФорма["ДанныеРасшифровки"+ВариантНастроек.Имя]);
            
            ПроцессорВывода.УстановитьДокумент(ТаблДок);    
            ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
        Иначе
        КонецЕсли;
    КонецЦикла;
    //Возврат ТаблДок;
    ТаблДок.Показать();
КонецФункции // ВывестиРазделВТабличныйДокумент()




Теперь его нужно разбить на 3 колонки, равные высоте страницы, и четвёртую оставшуюся.
Подскажите, пожалуйста, как разбить.
1 asady
 
03.04.15
09:05
(0) может средствами принтера это сделать - типа настроить параметры страницы и количество страниц на листе
2 PLUT
 
03.04.15
09:06
(0) создай свою ТЗ, пронумеруй свое поле "КолонкаОтчета" как тебе нужно и скорми ПроцессоруКомпоновкиДанных
3 ks-815
 
03.04.15
09:06
(1) а там еще заголовок отчёта и подвал есть
4 PLUT
 
03.04.15
09:08
(3) а чердака нету там?
5 ks-815
 
03.04.15
09:12
(2) не понятно как-то.. можно поподробнеее??
6 vicof
 
03.04.15
09:14
(0) Узкий и длинный это плохо. Нужно широкий и длинный)
(5) НомерСтолбика в запрос добавь
7 ks-815
 
03.04.15
09:17
(5) в запросе 7 частей, каких-то может не быть. где-то 2 строки. где-то 30. Столбик добавить не возможно.

А нельзя что ли разрезать длинный табДокумент на 4 коротких?
8 ks-815
 
03.04.15
09:19
(7) как помещать табдокументы на одну страницу. у меня есть код.
Они изначально были неправильно разрезаны. Оставались дыры. На 1 страницу не влазило всё.

Нужно просто из одного сделать 4.
9 ks-815
 
03.04.15
09:23
Если вывести на печать, выходит 4 страницы с первой колонкой заполненной. Как так получить высоту куска, который входит на 1 страницу??
10 vicof
 
03.04.15
09:29
(9) Никак. Задача идиотская изначально
11 ks-815
 
03.04.15
09:33
(10) какая уж есть. Это пожелания пользователей.
12 Fish
 
03.04.15
09:37
(11) И что? А если пользователь пожелает, чтобы 1С за него машиной управляло, тоже будешь исполнять?
13 ks-815
 
03.04.15
09:53
Есть еще мысли по решению этой задачи??
14 Fish
 
03.04.15
09:56
(13) Есть. Сделать нормальный красивый отчёт без всяких "змеек" и других фантазий.
15 ks-815
 
03.04.15
09:57
(14) этот отчёт пользователи в эксэле делают уже лет 8.
Змейкой. Поэтому нужна только змейка :)
16 Asirius
 
03.04.15
10:03
(0)
Разрезай получившуюся таблицу на строчки и выводи в новую таблицу используя методы:
ПроверитьВывод()
ПроверитьПрисоединение()

Еще надо шапку повторить у всех колонок.
17 ks-815
 
03.04.15
10:07
(16) Шапку не надо. Для каждой настройки отчёта своя шапка.
Шапки выводятся нормально.
18 PLUT
 
03.04.15
10:09
(13) а чем вариант с ТЗ и скармливанием Процессору?

Выбрать "опа" как колонка1, null как колонка2, null как колонка3, null как колонка4
Объединить
выбрать null, "опа", null,null
объединить
выбрать null, null,"украина",null
объединить
выбрать null,null,null,"це европа"

ну в твоем случае в запросе набора данных нужно условия наложить на номер колонки
19 EugeneSemyonov
 
03.04.15
10:11
(10) С точки зрения пользователя вовсе нет. Зачем переводить кучу листов и потом листать их если ширина печатаемого текста не больше четверти листа? Тоже недавно столкнулся с такой задачей. Решения так и не нашёл.
20 EugeneSemyonov
 
03.04.15
10:14
(7) Может перед выводом считать строки и в разные документы вставлять?
21 ks-815
 
03.04.15
10:15
(16) мне не понятно немного что писать в скобках у МойДлинныйУзкийТабДок.ПроверитьВывод() ??
22 ks-815
 
03.04.15
10:16
(20) а как получить, сколько строк осталось на странице??
23 EugeneSemyonov
 
03.04.15
10:20
(9) Как вариант, посчитать количество строк помещающихся на листе и считать выводимые строки. По достижении нужно количества создавать новый табдок и выводить в него.
Дальше ты умеешь.
(22) Посчитать количество строк помещающихся на листе и вычитать количество уже выведенных.
24 ks-815
 
03.04.15
10:22
(23) строки могут быть разной ширины - одноэтажные, пятиэтажные
25 EugeneSemyonov
 
03.04.15
10:22
(22) Только это зачем? Достаточно знать сколько строк помещается.
26 ks-815
 
03.04.15
10:23
(25) ой, высоты
27 ks-815
 
03.04.15
10:24
вдруг на страницу влазит 100 одноэтажных строк, а если будет двухэтажная, то уже 99..
28 Asirius
 
03.04.15
10:27
(21) Синтаксис-помощник забанили?
ТабДок = Новый ТабличныйДокумент;
Т = Новый Массив;
Т.Добавить(ШапкаДокумента);
Т.Добавить(СтрокаДокумента);
Т.Добавить(ПодвалДокумента);
Если Не ТабДок.ПроверитьВывод(Т) Тогда
    Сообщить("Документ не умещается на страницу!");
КонецЕсли;
30 ks-815
 
03.04.15
10:36
(28) Мне тогда создать новый табДокумент и в него выводить мой длинный?
31 PLUT
 
03.04.15
10:37
+(18) концепция поменялась :) нужно в свою ТЗ добавить колонку "номерколонки" и колонку "номерстроки" и пронумеровать

скормить свою ТЗ ПроцессоруКомпоновщикаДанных

текст запроса

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    колонка1.Значение КАК кол1,
    колонка2.Значение КАК кол2,
    колонка3.Значение КАК кол3,
    колонка4.Значение КАК кол4
ИЗ
    (ВЫБРАТЬ
        ТЗ.Значение КАК Значение,
        ТЗ.номерстроки КАК номерстроки
    ИЗ
        ТЗ КАК ТЗ
    ГДЕ
        ТЗ.колонка = 1) КАК колонка1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТЗ.Значение КАК Значение,
            ТЗ.номерстроки КАК номерстроки
        ИЗ
            ТЗ КАК ТЗ
        ГДЕ
            ТЗ.колонка = 2) КАК колонка2
        ПО колонка1.номерстроки = колонка2.номерстроки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТЗ.Значение КАК Значение,
            ТЗ.номерстроки КАК номерстроки
        ИЗ
            ТЗ КАК ТЗ
        ГДЕ
            ТЗ.колонка = 3) КАК колонка3
        ПО колонка1.номерстроки = колонка3.номерстроки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТЗ.Значение КАК Значение,
            ТЗ.номерстроки КАК номерстроки
        ИЗ
            ТЗ КАК ТЗ
        ГДЕ
            ТЗ.колонка = 4) КАК колонка4
        ПО колонка1.номерстроки = колонка4.номерстроки

и в настройке СКД вывести поля колонка1,колонка2,колонка3,колонка4
32 ks-815
 
03.04.15
10:48
(31)В моём длинном табдокументе присутствуют разные таблицы с разными шапками(так как разные варианты настроек в СКД), которые просто одинаковые по ширине. Что-то не могу представить, как пронумеровать в каждой табличке строки и шапки..
33 yavasya
 
03.04.15
10:51
а тебе не проще в макет обычный не СКД сделать печать ?
34 PLUT
 
03.04.15
10:53
(33) она не может представить как это сделать. даже СКД не поможет
35 yavasya
 
03.04.15
10:55
я думаю пользователи сами не представляют что они хотят (34)
36 kudlach
 
03.04.15
11:16
В 7.7 делалось пересобиранием ТЗ.
В 8.х можно область собирать, а потом собранную область присоединять.
37 EugeneSemyonov
 
03.04.15
11:19
(24) Да, это меняет дело. Заморочка та ещё.
(35) Пользователи прекрасно представляют - у них есть лист Excel с 4-мя колонками.
38 hhhh
 
03.04.15
11:21
тогда всё-таки (1)