СКД. Программный вывод отчета с фиксированным макетом. #601687


#0 by guitar_player
Добрый день! Формирую табличный документ при помощи СКД программно. Есть фиксированный макет и в нем, например, есть 2 области - заголовок, строка. Подскажите пожалуйста, как програмно можно определить был результат итогового запроса пустым? Сейчас если под условия ничего не попадает, то выводится только заголовок. Делаю авторассылку отчетов, мне нужно определить - если данных не было, то отправлять этот отчет не нужно, либо делать какие то другие действия. Есть какие нибудь решения?
#1 by Лодырь
проверить количество строк?
#2 by Aprobator
высота таблицы?
#3 by guitar_player
если ты про высоту таблицы, то это не совсем подходящий вариант, так как она может быть разная для разного отчета, есть еще варианты?
#4 by Лодырь
Ну добавь в конце заголовка невидимый маркер. Проверь его позицию после вывода отчета. Если в конце отчета стоит маркер - отчет пустой.
#5 by guitar_player
в принципе вариант, спасибо. Может кто нибудь предложет другие идеи?
#6 by Лодырь
Хочешь вариантов, ок держи (не проверял): Вызови внешнюю функцию при расчете ресурса отчета - измени внешний флаг внутри этой функции.
#7 by Лодырь
В порядке дежурного бреда. Продублируй предварительно запрос. Пустое значение - идем лесом, непустое - запускаем СКД. )
#8 by guitar_player
ну это не вариант... вариант попробую, спасибо)
#9 by guitar_player
выкрутился так: В отчет добавил параметр, в вычисляемых полях добавил поле, в нем вызываю внешнюю функцию, передаю туда параметр, там его меню. Соответственно если были данные - параметр изменился, если нет - нет. Работает, йа доволен! Всем спасибо!
#10 by badboychik
ты бы еще в реестре параметр завел... или в файлик на диске цифру 1 писал
#11 by Escander
а разве ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент не позволяет выводить в табличный документ программно? что-бы при выводе "ручками" не отслеживать?
#12 by badboychik
позволяет выводить, только после вывода получается готовый результат, его пустоту можно только по высоте таблицы определить
#13 by badboychik
а почему высота может быть разная если макет фиксированный?
#14 by Escander
а зачем? первый элемент вывода - шапка, если элементов больше 1 - значит основная часть не есть пустая!
#15 by Лодырь
Если предположить что отчет сложной структуры, например состоящий из двух частей: 1. Описательно пояснительная, назыаемая заголовком ) 2. Данные то тогда определить вывелись ли данные из пункта 2 действительно сложно
#16 by badboychik
ты отладчиком хоть раз пробегал процесс вывода? Там всегда элементов больше 1 и даже больше 5 :) и первый элемент не шапка. Там можно по имени макета определить что выводится - если имя макета = "Макет3", это значит детальная строка. Если там есть значение и таких строк больше одной, значит результат не пустой
#17 by badboychik
смотри урок №82 по СКД )
#18 by Escander
ну это в первом приближении, если шапка есть то вот такой код поможет, в крайнем случае допиливаемо: ................. Ответ на вопрос ТС в переменной ДанныеЕсть, не?
#19 by Escander
чей?
#20 by Escander
у ТС структура:заголовок, строка.
#21 by badboychik
не пойдет, там даже в пустом отчете есть одна строка с количеством параметров больше нуля, проверено. Надо еще значения проверять, там они равны NULL если пустой результат Фарита конечно же ) Тут вроде бы баннер висел
#22 by guitar_player
я написал, что у меня произвольная структура. СКД хранится в элементе справочника, продвинутый пользователь настраивает его как хочет. К высоте таблицы, количеству областей привязываться нельзя
#23 by guitar_player
что не нравится?
#24 by Escander
ну тогда наверное не Фарит а Евгений. >Надо еще значения проверять, там они равны NULL если пустой результат ну тык вот, мелкий допил и опа, вуаля!
#25 by guitar_player
Сделал вот так:                    Если Не ДанныеЕсть Все правильно понял?
#26 by Escander
вроде так, проверку заполнения никогда не делал, но похоже. всё-же перед циклом стоит сделать ДанныеЕсть = Ложь;;
#27 by guitar_player
конечно стоит, только не зацепил эту строчку при копировании
#28 by Escander
искомое получилось?
#29 by guitar_player
да, все работает! Спасибо!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С