11.03.2010, 17:33 | #1 |
Участник
|
Здраствуйте!
Я уже некоторое время изучаю c/al и вот столкнулся с новым заданием. Задание такое: Нужно сформировать отчет, который должен формироваться по проданным товарам, должен формироваться за период, должен выводить информацию по реализации товара и фактическим оплатам этих продаж и содержать столбцы: продано товаров на сумму, из них оплачено, авансы (Не примененные оплаты) и сальдо (Сальдо = продано - оплачено - авансы). Отчет формируется только по учтенным данным. Никак не могу понять из каких мест в системе берется информация, требуемая для отчета? отчет по базе cronus,Navision версии 5.0. Заранее спасибо за помощь) |
|
11.03.2010, 19:01 | #2 |
Участник
|
Цитата:
Сообщение от NaviStudent
Здраствуйте!
Я уже некоторое время изучаю c/al и вот столкнулся с новым заданием. Задание такое: Нужно сформировать отчет, который должен формироваться по проданным товарам, должен формироваться за период, должен выводить информацию по реализации товара и фактическим оплатам этих продаж и содержать столбцы: продано товаров на сумму, из них оплачено, авансы (Не примененные оплаты) и сальдо (Сальдо = продано - оплачено - авансы). Отчет формируется только по учтенным данным. Никак не могу понять из каких мест в системе берется информация, требуемая для отчета? отчет по базе cronus,Navision версии 5.0. Заранее спасибо за помощь) Операции по оплатам от клиентов - таблица 21 (Cust. Ledger Entry) |
|
11.03.2010, 22:05 | #3 |
Участник
|
Спасибо большое за ваш ответ!
Возник еще вот какой вопрос. При использовании данных из таблицы Cust. Ledger Account для вычислений используется такая логика, насколько я понимаю: Для получения суммы не примененных оплат, при типе документа оплата и сумме остатка меньше нуля суммируется остаток. Для получения общей суммы продаж при типе счет идет сложение по полю сумма. Для оплаченной суммы для типов счет складываются по строкам сумма-сумма остатка. Вопрос в следующем: в report designer добавляется таблица Cust. Ledger Account, но фактически перед выводом значений в отчет должна применяться описанная логика. Как это реализуется в системе? |
|
11.03.2010, 23:35 | #4 |
Administrator
|
не Customer Ledger Account, а Customer Ledger Entry, наверное.
в этой таблице есть поля Сумма Продажи (Amount) и Сумма Остатка (Remaining Amount), т.е. сумма за вычетом применений, оплат. эти поля физически в таблице не живут, они вычмсляются по другой таблице: Detailed Cust. Ledg. Entry, это детальная книга клиентских операций. как они вычисляются: Amount: Sum("Detailed Cust. Ledg. Entry".Amount WHERE ( Cust. Ledger Entry No.=FIELD(Entry No.), Entry Type=FILTER(... тут много разных типов, кроме типа ПРИМЕНЕНИЯ ...), Posting Date=FIELD(Date Filter))) Remaining Amount: Sum("Detailed Cust. Ledg. Entry".Amount WHERE ( Cust. Ledger Entry No.=FIELD(Entry No.), Posting Date=FIELD(Date Filter))) как видим, фильтра по типам нет, значит в формуле участвуют все типы операций детальной книги, в том числе Применение. в этом их основное различие. на какую сумму было продаж? Calcfields(Amount), где Calcfields это "посчитать вычисляемое поле" какая сумма остающейся задолженности? Calcfields("Remaining Amount") сколько было оплат? Amount-"Remaining Amount" |
|
11.03.2010, 23:46 | #5 |
Участник
|
Спасибо!
|
|
12.03.2010, 00:08 | #6 |
Участник
|
Я понимаю какие поля использовать. Я не понимаю вот что:
фактически в репорт дезайнере я добавляю таблицы Country/Region, Customer, Cust. Ledger Entry. Регион связан с клиентом по коду, клиент с операциями по коду клиента. В итоге в отчете я хочу увидеть числа суммы продаж, оплаченных продаж, не примененные оплаты и сальдо = продано-оплачено - авансы. Фактичетки поле в отчете должно вычисляться с использованием условия по описанной выше логике. Не ясно как я могу вычислять это значение |
|
12.03.2010, 01:17 | #7 |
Administrator
|
у вас в отчете есть секции
например, секция Клиент, в ней как раз расположены поля, да? так вот можно попасть в код (нажав F9) и там написать: CALCFIELDS(Amount, "Remaining Amount"); формула (логика) для вычисления уже заложена в этих полях. осталось только вызвать колдовство запуска этой формулы. |
|