![]() |
|
Запрос в отчете в ЗУП 3.0 | ☑ | ||
---|---|---|---|---|
0
SleepyHead
гуру
08.05.15
✎
11:05
|
Разбираюсь с отчетом одним, и вот в нем такой запрос в схеме компоновки данных:
ВЫБРАТЬ ДАТАВРЕМЯ(1, 1, 1) КАК Период ПОМЕСТИТЬ Представления_Периоды ГДЕ "НачалоИнтервала" = &ДатаНачалаСЗапасом И "ОкончаниеИнтервала" = &КонецПериода И "Периодичность" = "ДЕНЬ" И "ИспользоватьКонецПериода" = ЛОЖЬ ; Секция "ГДЕ". Смущает, что выполняется сравнение параметра (например, ДатаНачалаСЗапасом) со строковым значением. Параметр в схеме имеет тип дата. Это что, какой-то новый синтаксис языка запросов? Или я что-то подзабыл? |
|||
1
asady
08.05.15
✎
11:09
|
(0) посмотри есть ли обработка текста запроса - типа контекстная замена
|
|||
2
asady
08.05.15
✎
11:09
|
(0) отчет озвучь
|
|||
3
SleepyHead
гуру
08.05.15
✎
11:12
|
Хм, похоже что да, в модуле объекта используется обработчик "ПриКомпоновкеРезультата", а далее идет обращения к общим модулям, которые обрабатывают текст запроса.
Посмотрел обработку текста запроса, выполняется поиск строки "ОбщиеЗарпросы_", такого в тексте запроса нет. |
|||
4
SleepyHead
гуру
08.05.15
✎
11:13
|
(2) СтатистикаПерсонала
|
|||
5
asady
08.05.15
✎
11:39
|
(3) плохо смотрел
точка входа здесь: ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета( Новый Структура("СхемаКомпоновкиДанных", СхемаКомпоновки)); потом: ЗаменитьПредставленияЗапросов(Объект); ->ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц(НаборДанных.Запрос, Объект.СхемаКомпоновкиДанных); ->Запрос = ЗарплатаКадрыОбщиеНаборыДанныхПовтИсп.ПолучитьЗапросПоПредставлению(ТекстЗапроса, СоответствиеПараметров); -> чепочка вызовов общих модулей -> Запрос = ЗарплатаКадрыОбщиеНаборыДанныхБазовый.ПолучитьЗапросПоПредст авлению(ТекстЗапроса, СоответствиеПараметров); и вот ОНО: Если ВРег(ИмяПредставления) = Врег("Периоды") Тогда НачалоИнтервала = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрЗапроса("НачалоИнтервала", ПараметрыЗапроса); ОкончаниеИнтервала = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрЗапроса("ОкончаниеИнтервала", ПараметрыЗапроса); Периодичность = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрЗапроса("Периодичность", ПараметрыЗапроса); Если Периодичность = Неопределено Тогда Периодичность = ВРег("Месяц"); КонецЕсли; ИмяПоляПериод = "Период"; ПредставлениеИспользоватьКонецПериода = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрЗапроса("ИспользоватьКонецПериода", ПараметрыЗапроса); Если Периодичность = Неопределено Тогда ИспользоватьКонецПериода = Ложь; Иначе ИспользоватьКонецПериода = ВРег(ПредставлениеИспользоватьКонецПериода) = ВРег("Истина"); КонецЕсли; Запрос = ЗарплатаКадрыОбщиеНаборыДанных.ЗапросВТПериоды( НачалоИнтервала, ОкончаниеИнтервала, Периодичность, ИмяПоляПериод, ИмяИсточникаДанных, ИспользоватьКонецПериода); |
|||
6
SleepyHead
гуру
08.05.15
✎
11:41
|
Медленно я пока еще смотрю, но уже почти вышел на твое, спасибо :)
раскопал, где выполняются замены. |
|||
7
SleepyHead
гуру
08.05.15
✎
11:41
|
Я только не дошел до твоей цитаты пока еще "ЗаменитьПредставленияЗапросов"
|
|||
8
SleepyHead
гуру
08.05.15
✎
11:43
|
Вот только смысла этой хитропопой конструкции я пока не понял, почему нельзя написать ВЫБРАТЬ РАЗРЕШЕННЫЕ, например?
С периодами тоже непонятно. |
|||
9
asady
08.05.15
✎
11:48
|
(8) типо зачем писать одни и те же запросы везде - вынесли их в одно место, обработали только параметры - это как раз вполне логично и правильно.
начинаю уважать разработчиков типовых. |
|||
10
SleepyHead
гуру
08.05.15
✎
11:49
|
(9) все правильно, но в эту систему нужно вникнуть, а я сегодня первый раз на нее нарвался.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |