СКД. Вывод СКД и в ТЗ и в ТД без двойного выполнения запроса #765430


#0 by SeiOkami
Здравия! Такое дело. Кто-нибудь видел механизм, который бы возвращал результат простой СКД и в виде ТЗ и в виде табличного документа ЕДИНОЖДЫ выполняя запрос, указанный в наборе данных? У меня есть свои наработки, но есть случаи, в которых выпадает ошибка. Хочется понять, может кто уже с таким разобрался.
#1 by Лодырь
Выполнить запрос, вернуть ТЗ, ее потом скормить обратно СКД и построить отчет.
#2 by Nuobu
А отборы и настройки?
#3 by SeiOkami
, верно, однако, в ситуациях, когда в отборах участвуют поля, которых нет в выбранных полях, выпадает ошибка. Потому что после "скармливания", СКД пытается наложить отборы на поля, которых нет в ТЗ. Поэтому хочу глянуть на чей-нить рабочий механизм
#4 by SeiOkami
, что отборы и настройки?
#5 by Nuobu
Ну, если выполнить просто запрос, то не будут учтены отборы и прочие пользовательские настройки.
#6 by Матиус
Выполнить СКД программно, со всей кучей зубодробительных объектов. В момент вывода вывести в 2 объекта.
#7 by SeiOkami
, запрос беру из МакетаКомпоновки, а там всё уже учтено
#8 by SeiOkami
, речь о ?
#9 by Матиус
нет, запрос в СКД
#10 by SeiOkami
, тогда не понимаю. Как это "В момент вывода вывести в 2 объекта." ? Тогда это будет 2 вывода и запрос будет выполняться дважды
#11 by Матиус
нет, обращение к базе производит компоновщик, результат он может передать как в ТабДок, так и в ТЗ
#12 by SeiOkami
, запрос выполняет именно "ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент" или "ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений"
#13 by SeiOkami
, запрос выполняется при ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.НачатьВывод
#14 by SeiOkami
, при этом необходимый тип (ТЗ или ТД) указывается сразу при получении МакетаКомпоновки
#15 by Матиус
откуда инфа? можно ссылку? между ...НачатьВывод и ...ЗакончитьВывод может пройти не одна секунда, еще и возможны ветвления. Компоновщик порциями данные вытаскивает из БД?
#16 by SeiOkami
, опечатался. ЗАпрос выполняется при : И эту инфу модно проверить просто в отладке.
#17 by SeiOkami
, а про "НачатьВывод" просто не знаю - нужно тестить.
#18 by Матиус
Если это так, то это какой-то ппц
#19 by SeiOkami
Уточню проблему, которая заставила меня искать Суть в чем. Реализован механизм так: Имею СКД и Настройки 1. Получаю МакетКомпоновки 2. Беру из него запроспараметры 3. Выполняю отдельно запрос 4. В СКД2 (копия СКД) заменяю НаборДанныхЗапрос на НаборДанныхОбъект. В результате в НаборДанныхОбъект есть только те поля, которые есть И в НаборДанныхЗапрос И в результате запроса. 5. Формирую табличный документ обычным программным образом, используя СКД2. В результате имеем и ТЗ (результат запроса) и ТД (выведен при помощи СКД, поэтому всё как надо) ОДНАКО! Если в настройках пользователь укажет отбор по полю, которое не выводится в отчет, то: 1. Запрос не выбирает это поле. А значит его и не будет в ТЗ. А значит его не будет и в НаборДанныхОбъект 2. При выводе СКД2 сама СКД пытается наложить отбор это поле, но его нет в наборе данных объект. Сейчас нашел решение: перед выводом СКД2 восстанавливать настройки (Компоновщик.Восстановить) Но и тут есть косяк - тогда в шапке табличного документа инфа о этом отборе появляеться не будет (потому что его фактически и не было при выводе СКД2) В общем как-то так.
#20 by SeiOkami
уп
#21 by SeiOkami
вверх
#22 by su_mai
Два пути: 1. Включать в вычисляемые поля (они всегда в таблице будут, если выбраны) заведомо все поля. Т.е. делать таблицу "с запасом" 2. В настройках СКД программно удалять отборы по несуществующим колонкам.
#23 by SeiOkami
, 1. Проблема как раз в том, что поле НЕ выбирается + Пробовал делать поля "Обязательными", но это тоже не вариант
#24 by su_mai
Тогда выбери его.
#25 by SeiOkami
, это не решение. Суть в том, что его НЕ нужно выводить
#26 by SeiOkami
Нашлось решение. Если вдруг кому понадобится, то здесь:
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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