AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.11.2013, 16:36   #1  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
В отчете имеется DataItem: Sales Invoice Line
Есть ли какие-то способы уже в триггере OnPreDataItem (этого самого DI)получить сумму по столбцу "Line Discount Ammount"? т.е. сами строки уще не выводились, но я уже знаю общую сумму скидки по счету.
Пробовала и свойство TotalFields устанавливать и в триггере OnPreDataItem писать:
Код:
CurrReport.CREATETOTALS("Line Discount Amount");
IF "Line Discount Amount" = 0 THEN
Он этот иф показывает, что сумма на данном этапе таки нулевая. :-/
Кроме как завести доп. переменную и через нее просчитать сумму скидки по всем строкам, есть другие более изящные методы?
Старый 15.11.2013, 00:10   #2  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
т.е. сами строки уще не выводились, но я уже знаю общую сумму скидки по счету.
Значит сверху айтем на Sales Invoice Header'e? Может сделать в хидере выч. поле (если его еще нет) по сумме Line Discount Amount в строках и вычислять его либо на DI (Header) - OnAfterGetRecord, либо как вы хотите в OnPreDataItem() DI на Sales Invoice Line.
Старый 15.11.2013, 11:55   #3  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от romeo Посмотреть сообщение
Значит сверху айтем на Sales Invoice Header'e? Может сделать в хидере выч. поле (если его еще нет) по сумме Line Discount Amount в строках и вычислять его либо на DI (Header) - OnAfterGetRecord, либо как вы хотите в OnPreDataItem() DI на Sales Invoice Line.
Благодарю.
В хтдере такого поля нет. Думаю, ради одного отчета его создавать не стоит.
Обошлвсь доп.переменной.
Код:
SalesInvLine.RESET;
SalesInvLine.SETRANGE("Document No.",SalesInvHeader."No.");
SalesInvLine.SETFILTER("Line Discount Amount", '<>%1',0);
IF NOT SalesInvLine.FINDFIRST THEN
Я не совсем корректно написала в первом сообщении. Мне нужна была не сумма как таковая, а просто установить факт: есть в счете скидка или нет (др.словами, есть в счете строки с ненулевой скидкой)
Я просто думала, что возможно CREATETOTALS использовать. Но как я поняла, эта функция даст результат только в секциях Footer, но никак не Header. :-/
В 1С 7-ке, помнится, была такая фича: пока не начал выбирать строки, указатель стоит на записи с общей суммой.
Старый 15.11.2013, 12:17   #4  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
Цитата:
Сообщение от Kadawrik Посмотреть сообщение
...просто установить факт: есть в счете скидка или нет (др.словами, есть в счете строки с ненулевой скидкой...
Код:
SalesInvLine.RESET;
SalesInvLine.SETRANGE("Document No.",SalesInvHeader."No.");
SalesInvLine.SETFILTER("Line Discount Amount", '<>%1',0);
IF NOT SalesInvLine.FINDFIRST THEN
В этом случае лчше использовfть isempty вместо findfirst
Старый 15.11.2013, 12:23   #5  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от InTacto Посмотреть сообщение
[В этом случае лчше использовfть isempty вместо findfirst
Логично! Благодарю
Старый 15.11.2013, 12:49   #6  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Код:
SalesInvLine.RESET;
SalesInvLine.SETRANGE("Document No.",SalesInvHeader."No.");
SalesInvLine.SETFILTER("Line Discount Amount", '<>0');
Разве не достаточно просто определить фильтры в OnPreDataItem()? Если скидок нет OnAfterGetRecord не отработает.
Или нужно узнать только наличие скидок в счете, а обрабатывать по такому счету все строки?
Старый 15.11.2013, 12:53   #7  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от romeo Посмотреть сообщение
Или нужно узнать только наличие скидок в счете, а обрабатывать по такому счету все строки?
Именно!
Строки распечатываются все, но наличие скидки влияет на шапку отчета (если скидка хотя бы в одной строке есть, тогда и в шапке должны быть колонки под нее. Если скидок нет, тогда и "светить" эти колонки тоже не надо
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:54.