Вывод длинной и широкой таблицы на печать в удобном формате

1. zlakizla 62 24.08.16 16:33 Сейчас в теме
Всем привет.
Помогите, пожалуйста. Предположит, есть таблица остатки на складах. В строках "Номенклатура, в колонках "Склады", на пересечении "КоличествоОстаток".

Предположим, что на лист а4 умещается колонки номенклатуры и 5 складов по горизонтали, и 5-6 строк по вертикали. Задача такая при печати: если не влазит колонка "Склад" по горизонтали, то на следующем листе выводим такой же список номенклатуры + следующие колонки склада. Далее, если не влазят строки по вертикали, то на следующем листе выводим дальше список номенклатуры и опять присоединяем колонки "Склады", пока влазят. Как только не влазят, ставим разделитель, выводим опять этот же список номенклатуры и остатки по следующим колонкам Складов. Как такое можно сделать в печатной форме?



+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
10. Ovrfox 14 25.08.16 10:21 Сейчас в теме
(0) Овчинка не стоит выделки
Если заранее известно, что влазит на форму 5 складов, то намного проще написать процедуру вывода по полученным данным списка складов.
Далее просто : 1. Получаем данные, желательно список складов получить отдельным подзапросом.
2. Бьем склады на группы
3. Для каждой группы Выводим список номенклатуры с остатками написанной процедурой
ВСЕ!
Т.к. шахматка уже построена, то количество строк номенклатуры в каждом отчете совпадает. Это позволит соединить их после вывода в одну большую простынь
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1484 24.08.16 16:39 Сейчас в теме
(1) zlakizla, когда будете писать функцию на печать, то у табличного документа есть такой метод как проверка помещается текст горизонтально или вертикально.
Если проверка не выполнилась, то пишите код, который вам заполнит следующий лист.
Мароки много будет!
Подумайте лучше, как это ограничить в макете, чем программно простыни писать.
+
9. sssss_aaaaa_2011 24.08.16 17:47 Сейчас в теме
(1) zlakizla, в общем-то, такие шахматки нужны только и исключительно при ручном учете.
При учете с помощью компьютера сей бред легко заменяется одним простым узким отчетом с выбором одного из двух использованных в шахматке разрезов. Особо упорным желателям шахматки показываются примеры легкого и быстрого получения нужных им данных без шахматки. Иногда не единожды. Но пока что ВСЕ (по крайней мере у меня) бухи, финики, экономисты и т.д. иногда хоть и с большим трудом, но таки понимают правильность предложенного им подхода и отказываются от шашечек ради поездки.
+
3. zlakizla 62 24.08.16 16:49 Сейчас в теме
Да я уже пытался так, что то не выходит. Обхожу результат запроса, каждый раз проверяю на ПроверитьВывод() и ПроверитьПрисоединение(). Первая строка нормально выходит, а дальше когда на следующих строках попадает в условие ПроверитьПрисоединение(), то ставит вертикальный разделитель страниц, но почему-то не присоединяет номенклатуру еще раз, а просто дальше присоединяет Склады. Получается вся печатная форма съезжает
+
4. zlakizla 62 24.08.16 16:54 Сейчас в теме
Т.е. алгоритм такой. Беру первую строку номенклатуры, делаю присоединение Складов, каждый раз делается проверка на ПРоверитьПрисоединение(). Если не прошла, то ВывестиВертикальныйРазделитель страниц и вывести область с номенклатурой и дальше опять присоединение складов. Как только склады обошли, выводим следующую стрку номенклатуры и опять по этому же алгоритму присоединения. Перед выводом строки номенклатуры делаю проверку ПроверитьВывод, если не прошла, то ВывестиГоризонтальныРазделительСтраниц + повтор шапки таблицы. Но что-то такой подход не работает))
+
5. sailor-cat 6 24.08.16 17:10 Сейчас в теме
А ПовторятьПриПечатиКолонки не подходит?
+
6. zlakizla 62 24.08.16 17:21 Сейчас в теме
(5) sailor-cat, пока не пойму как использовать. Ну для какой нибудь фиксированной колонки или для шапки понятно. А если у меня не известно заранее какие области выводить
+
7. Xershi 1484 24.08.16 17:28 Сейчас в теме
(6) zlakizla, так сделайте, чтобы были известны.
(3) zlakizla, раз съезжает, то скорее всего у вас проблемы с форматированием в макете.
Когда поймете о чем речь работа пойдет.
+
8. sailor-cat 6 24.08.16 17:36 Сейчас в теме
Как-то так:
ТабДок.ПовторятьПриПечатиСтроки = Макет.Область(ИмяПовторяемойОбласти);
ТабДок.ПовторятьПриПечатиКолнки = Макет.Область("R1C1:R10C1");

Области, естественно, я от балды назвал.
+
10. Ovrfox 14 25.08.16 10:21 Сейчас в теме
(0) Овчинка не стоит выделки
Если заранее известно, что влазит на форму 5 складов, то намного проще написать процедуру вывода по полученным данным списка складов.
Далее просто : 1. Получаем данные, желательно список складов получить отдельным подзапросом.
2. Бьем склады на группы
3. Для каждой группы Выводим список номенклатуры с остатками написанной процедурой
ВСЕ!
Т.к. шахматка уже построена, то количество строк номенклатуры в каждом отчете совпадает. Это позволит соединить их после вывода в одну большую простынь
+
12. zlakizla 62 26.08.16 05:16 Сейчас в теме
(10) Ovrfox, спасибо. Я тоже так думал сделать, но в этом случае печать идет сверху вниз, а не слева на право. Но все же хотя бы так, по другому не получается никаким образом. Пытался уже через СКД сделать и вставлять разрывы при выводе результата, по аналогии из этой публикации http://infostart.ru/public/96583/ Только разрывы вертикальные между колонками. Все равно ерунда какая то получается вначале, а потом вроде бы нормально идет. Ладно это уже не важно :)
+
11. perfperm 25.08.16 15:00 Сейчас в теме
А если конвертировать выводимый табличный документ в *.xls, установить по нужным областям свойства (переноса шапки при печати) и вывести на печать?

Не кидайте сильно тапками, я только учусь:D
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот