Здравствуйте. Самописная конфига 8.3. Нужно в отчете на СКД если есть место на листе выводить пустые строки таблицы до конца листа. Это нужно для того что бы при печати можно было руками дописывать позиции.
Нашел вариант использования процедуры "ПриКомпоновкеРезультата" в модуле отчета. Я понимаю что при выводе элементов нужно проверять вывод процедурой "ПроверитьВывод " , но как выводить сами пустые строки не понимаю.
Есть мысль что нужно использовать макет группировки и вешать его на отдельную группировку.
Если набор данных - запрос, то дополнить детали пустыми записями до нужного количества.
Подробнее:
1) Записываешь результат полученных данных (имеющихся сейчас) во временную таблицу. Например:
Поместить ВТ_Рез
2) Визуально определяешь количество строк, влезающих на страницу. Например: 20.
3) Определяешь количество полученных строк. Например:
Выбрать количество(ВТ_рез.любое_поле) поместить ВТ_Записей как КоличествоЗаписей
4) Делаешь временную таблицу последовательных данных до нужного количества строк (лучше с запасом)
Например из http://infostart.ru/public/90367/:
текст запроса
ВЫБРАТЬ
0 КАК Х
ПОМЕСТИТЬ Регистр1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Младшие.Х + 2 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр2
ИЗ
Регистр1 КАК Младшие,
Регистр1 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Младшие.Х + 4 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр4
ИЗ
Регистр2 КАК Младшие,
Регистр2 КАК Старшие
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Младшие.Х + 16 * Старшие.Х КАК Х
ПОМЕСТИТЬ Регистр8
ИЗ
Регистр4 КАК Младшие,
Регистр4 КАК Старшие
В итоге у нас во временной таблице "Регистр8" 256 записей от 0 до 255
5) Дополняешь свой результат (который в ВТ_Рез) нужным количеством пустых записей, указывая NULL столько раз, сколько полей в ВТ_Рез:
ВЫБРАТЬ ВТ_Рез.*
ИЗ ВТ_Рез КАК ВТ_Рез
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
NULL,
NULL,
.....(NULL для каждого поля ВТ_Рез),
NULL,
ИЗ
Регистр8 КАК Регистр8
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Записей КАК ВТ_Записей
ПО (Регистр8.Х < (20- ВТ_Записей.КоличествоЗаписей)
ГДЕ
ВТ_Записей.КоличествоЗаписей ЕСТЬ НЕ NULL
Показать
Но лучше сделать через параметр &КоличествоСтрокНаСтранице, тогда условие соединения будет:
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Записей КАК ВТ_Записей
ПО (Регистр8.Х < (&КоличествоСтрокНаСтранице - ВТ_Записей.КоличествоЗаписей)