|   |   | 
| 
 | Запрос в отчете в ЗУП 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) все правильно, но в эту систему нужно вникнуть, а я сегодня первый раз на нее нарвался.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |