Всем привет.
Помогите, пожалуйста. Предположит, есть таблица остатки на складах. В строках "Номенклатура, в колонках "Склады", на пересечении "КоличествоОстаток".
Предположим, что на лист а4 умещается колонки номенклатуры и 5 складов по горизонтали, и 5-6 строк по вертикали. Задача такая при печати: если не влазит колонка "Склад" по горизонтали, то на следующем листе выводим такой же список номенклатуры + следующие колонки склада. Далее, если не влазят строки по вертикали, то на следующем листе выводим дальше список номенклатуры и опять присоединяем колонки "Склады", пока влазят. Как только не влазят, ставим разделитель, выводим опять этот же список номенклатуры и остатки по следующим колонкам Складов. Как такое можно сделать в печатной форме?
(0) Овчинка не стоит выделки
Если заранее известно, что влазит на форму 5 складов, то намного проще написать процедуру вывода по полученным данным списка складов.
Далее просто : 1. Получаем данные, желательно список складов получить отдельным подзапросом.
2. Бьем склады на группы
3. Для каждой группы Выводим список номенклатуры с остатками написанной процедурой
ВСЕ!
Т.к. шахматка уже построена, то количество строк номенклатуры в каждом отчете совпадает. Это позволит соединить их после вывода в одну большую простынь
(1) zlakizla, когда будете писать функцию на печать, то у табличного документа есть такой метод как проверка помещается текст горизонтально или вертикально.
Если проверка не выполнилась, то пишите код, который вам заполнит следующий лист.
Мароки много будет!
Подумайте лучше, как это ограничить в макете, чем программно простыни писать.
(1) zlakizla, в общем-то, такие шахматки нужны только и исключительно при ручном учете.
При учете с помощью компьютера сей бред легко заменяется одним простым узким отчетом с выбором одного из двух использованных в шахматке разрезов. Особо упорным желателям шахматки показываются примеры легкого и быстрого получения нужных им данных без шахматки. Иногда не единожды. Но пока что ВСЕ (по крайней мере у меня) бухи, финики, экономисты и т.д. иногда хоть и с большим трудом, но таки понимают правильность предложенного им подхода и отказываются от шашечек ради поездки.
Да я уже пытался так, что то не выходит. Обхожу результат запроса, каждый раз проверяю на ПроверитьВывод() и ПроверитьПрисоединение(). Первая строка нормально выходит, а дальше когда на следующих строках попадает в условие ПроверитьПрисоединение(), то ставит вертикальный разделитель страниц, но почему-то не присоединяет номенклатуру еще раз, а просто дальше присоединяет Склады. Получается вся печатная форма съезжает
Т.е. алгоритм такой. Беру первую строку номенклатуры, делаю присоединение Складов, каждый раз делается проверка на ПРоверитьПрисоединение(). Если не прошла, то ВывестиВертикальныйРазделитель страниц и вывести область с номенклатурой и дальше опять присоединение складов. Как только склады обошли, выводим следующую стрку номенклатуры и опять по этому же алгоритму присоединения. Перед выводом строки номенклатуры делаю проверку ПроверитьВывод, если не прошла, то ВывестиГоризонтальныРазделительСтраниц + повтор шапки таблицы. Но что-то такой подход не работает))
(5) sailor-cat, пока не пойму как использовать. Ну для какой нибудь фиксированной колонки или для шапки понятно. А если у меня не известно заранее какие области выводить
(6) zlakizla, так сделайте, чтобы были известны.
(3) zlakizla, раз съезжает, то скорее всего у вас проблемы с форматированием в макете.
Когда поймете о чем речь работа пойдет.
(0) Овчинка не стоит выделки
Если заранее известно, что влазит на форму 5 складов, то намного проще написать процедуру вывода по полученным данным списка складов.
Далее просто : 1. Получаем данные, желательно список складов получить отдельным подзапросом.
2. Бьем склады на группы
3. Для каждой группы Выводим список номенклатуры с остатками написанной процедурой
ВСЕ!
Т.к. шахматка уже построена, то количество строк номенклатуры в каждом отчете совпадает. Это позволит соединить их после вывода в одну большую простынь
(10) Ovrfox, спасибо. Я тоже так думал сделать, но в этом случае печать идет сверху вниз, а не слева на право. Но все же хотя бы так, по другому не получается никаким образом. Пытался уже через СКД сделать и вставлять разрывы при выводе результата, по аналогии из этой публикации http://infostart.ru/public/96583/ Только разрывы вертикальные между колонками. Все равно ерунда какая то получается вначале, а потом вроде бы нормально идет. Ладно это уже не важно :)