|
Разбить узкий и длинный табдокумент на 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)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |