![]() |
![]() |
![]() |
|
Клонирование объекта | ☑ | ||
---|---|---|---|---|
0
Gorr
11.10.04
✎
14:51
|
Можно ли копировать объект например запрос?
Зачем? Нужно иметь два экземпляра запроса с одним текстом. Конечно можно вызвать два раза метод выполнить. Но красивее и быстрее было бы выполнить метод один раз и затем просто клонировать объект. Некоторые скажут выгрузи в ТЗ!!! Но уважаемые ТЗ не поддерживает метод Получить(значГР1,значГР2,и тд) - поиск по нескольким критериям сразу. |
|||
1
Волшебник
11.10.04
✎
14:53
|
Зачем нужно иметь два экземпляра запроса с одним текстом?
|
|||
2
Gorr
11.10.04
✎
15:23
|
ок, я просто сюда приведу фрагмент отчета:
ТЗ = "//{{ЗАПРОС(СотрЗапрос) |Период с ДатаАктуальности по (КонМесяца(ДатаАктуальности)); |ВР = ЖурналРасчетов.Зарплата.ВидРасч; |рез = ЖурналРасчетов.Зарплата.Результат; |подр = ЖурналРасчетов.Зарплата.Объект.Подразделение; |сотр = ЖурналРасчетов.Зарплата.Объект; |Функция Результат = Сумма(рез); |Группировка сотр упорядочить по сотр.Код; |Группировка ВР упорядочить по ВР.Очередность; |Условие(рез <> 0); |Условие(Подр в Подразделение); |Условие(ВР.ВходитВГруппу(ГруппаРасчетов.Начисления)=1); |"//}}ЗАПРОС ; СотрЗапр = создатьобъект("Запрос"); если СотрЗапр.Выполнить(ТЗ) = 0 тогда сообщить("ошибка запроса"); возврат; конецесли; СотрЗапр1 = создатьобъект("Запрос"); если СотрЗапр1.Выполнить(ТЗ) = 0 тогда сообщить("ошибка запроса"); возврат; конецесли; ВРЗапрос = создатьобъект("Запрос"); ТЗ = "//{{ЗАПРОС(ВРЗапрос) |Период с ДатаАктуальности по (КонМесяца(ДатаАктуальности)); |ВР = ЖурналРасчетов.Зарплата.ВидРасч; |рез = ЖурналРасчетов.Зарплата.Результат; |подр = ЖурналРасчетов.Зарплата.Объект.Подразделение; |Функция Результат = Сумма(рез); |Группировка ВР упорядочить по ВР.Очередность; |Условие(рез <> 0); |Условие(Подр в Подразделение); |Условие(1 = ВР.ВходитВГруппу(ГруппаРасчетов.Начисления)); |"//}}ЗАПРОС ; ... пока 1 = СотрЗапр.Группировка("Сотр") цикл ВсегоНач = СотрЗапр.Результат; ИтВсегоНач = ИтВсегоНач + ВсегоНач; НомерПП = НомерПП+1; Таб.ВывестиСекцию("Рез|ЗаглВерт"); ВРЗапрос.ВНачалоВыборки(); пока 1=ВРЗапрос.Группировка("ВР") цикл РезВР=0; если 1 = СотрЗапр1.Получить(СотрЗапр.Сотр,ВРЗапрос.ВР) тогда РезВР = СотрЗапр1.Результат; конецесли; Таб.ПрисоединитьСекцию("Рез|ВР"); конеццикла; Таб.ПрисоединитьСекцию("Рез|ИтогНач"); конеццикла; ... Надеюсь идея понятна |
|||
3
Gorr
11.10.04
✎
15:23
|
в данном примере функция выполнить вызывается дважды, интереснее было бы клонировать запрос.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |