Функция в "чёрном" запросе.
25.04.2005
14:09
#1
Есть в запросе Условие, по нему группируем переменные запроса. Далее создаем функцию например суммирования неких атрибутов. Получаем некий результат, Далее накладываем на функцию некое ограничение (функция всего=сумма(..) когда (......)) и имеем неприятное последствие по идее Условие мы не меняли и в запрос должны войты теже объекты что и в случае когда функция применяется без наложения ограничений (ко всем). Но почему то при добавлении условия в функции (как раз используем КОГДА ...) те объекты для которых функция не посчиталась в группировку не вкладываются, хотя общее Условие не изменилось.
вот вопрос как сгруппировать объекты в запросе и применить функцию только к некоторым (нап рактике получается если функция неприменилась, то и в группировку не вошел).
вот вопрос как сгруппировать объекты в запросе и применить функцию только к некоторым (нап рактике получается если функция неприменилась, то и в группировку не вошел).
28.04.2005
18:22
#2
Лучше выложи пример, а то после твоего топика голова что-то разболелась! P.S. "ВсеВошедшиевЗапрос" не срабатывает?
29.04.2005
09:42
#3
"Вот постараюсь так описать есть 4 договора
договор 1: параметрОтбора =1; СуммаДоговора = 50; ДатаРасторженияОбязательства = . . ;
договор 2: параметрОтбора =1; СуммаДоговора = 10; ДатаРасторженияОбязательства = . . ;
договор 3: параметрОтбора =1; СуммаДоговора = 20; ДатаРасторженияОбязательства = 12.05.2004 ;
договор 4: параметрОтбора =0; СуммаДоговора = 40; ДатаРасторженияОбязательства = . . ;
теперь делаем запрос групируем все договора параметрОтбора которых равен 1. и суммируем суммуДоговора
пример:
|Обрабатывать НеПомеченныеНаУдаление;
|Договор = справочник.Договоры.ТекущийЭлемент();
|функция ОбщаяСумма= Сумма(Договор.СуммаДоговора);
|Группировка Договор упорядочить по Договор.Код без групп;
|Условие (Договор.ПараметрОтбора = 1);
В результате такого запроса мы получим группировку в которой есть: договор1, договор2, договор3 и соответственно сумму по ним.
если теперь ищменить функцию в запросе:
|функция ОбщаяСумма= Сумма(Договор.СуммаДоговора) когда (( ДатаРасторженияОбязательства > ТекущаяДата()) или (ПустоеЗначение(...))); =1 ;
вот в результате такого запроса хотя условие не трогали, но из группировки выпадет еще и договор3, хотя хотелось бы чтобы он не выпадал а просто сумма по нему не считалась.
поподробнее плиз про ВсеВошедшиеВЗапрос, когда я этот параметр приписал, у меня куча ненужных вещей высыпалась."
договор 1: параметрОтбора =1; СуммаДоговора = 50; ДатаРасторженияОбязательства = . . ;
договор 2: параметрОтбора =1; СуммаДоговора = 10; ДатаРасторженияОбязательства = . . ;
договор 3: параметрОтбора =1; СуммаДоговора = 20; ДатаРасторженияОбязательства = 12.05.2004 ;
договор 4: параметрОтбора =0; СуммаДоговора = 40; ДатаРасторженияОбязательства = . . ;
теперь делаем запрос групируем все договора параметрОтбора которых равен 1. и суммируем суммуДоговора
пример:
|Обрабатывать НеПомеченныеНаУдаление;
|Договор = справочник.Договоры.ТекущийЭлемент();
|функция ОбщаяСумма= Сумма(Договор.СуммаДоговора);
|Группировка Договор упорядочить по Договор.Код без групп;
|Условие (Договор.ПараметрОтбора = 1);
В результате такого запроса мы получим группировку в которой есть: договор1, договор2, договор3 и соответственно сумму по ним.
если теперь ищменить функцию в запросе:
|функция ОбщаяСумма= Сумма(Договор.СуммаДоговора) когда (( ДатаРасторженияОбязательства > ТекущаяДата()) или (ПустоеЗначение(...))); =1 ;
вот в результате такого запроса хотя условие не трогали, но из группировки выпадет еще и договор3, хотя хотелось бы чтобы он не выпадал а просто сумма по нему не считалась.
поподробнее плиз про ВсеВошедшиеВЗапрос, когда я этот параметр приписал, у меня куча ненужных вещей высыпалась."
Читают тему
(гостей: 1)