11.06.2009, 18:09 | #1 |
Участник
|
Вот возник вопрос, по поводу которого сходу ответа-решения не нашёл.
Из-за малого времени экспериментировать не стал и переделал код. Но вопрос остался - например мы имеем код: IF "Bill-to Customer No." <> xRec."Bill-to Customer No." THEN BEGIN SalesLine.SETRANGE("Document Type",SalesLine."Document Type"::Order); SalesLine.SETRANGE("Document No.","No."); SalesLine.CALCSUMS("Outstanding Amount","Shipped Not Invoiced"); "Amount Including VAT" := SalesLine."Outstanding Amount" + SalesLine."Shipped Not Invoiced"; END; Вопрос: CALCSUMS("Outstanding Amount") работает только по 1 строке или для всех строк, попадающих в фильтр? Тоесть если у меня несколько строк попали в фильр, то система посчитает по каждой строке для каждой строки или суммарно по группе строк, но выведет инфу в 1 строку?? |
|
11.06.2009, 18:19 | #2 |
Участник
|
из хелпа:
Use this function to total columns in a table. This function operates only on records that meet the conditions of any filters associated with the record. отсюда можно предположить, что для каждой. проверила. обновляются все строки. |
|
11.06.2009, 18:34 | #3 |
MCTS
|
Цитата:
В чем заключалась проверка? Чистое любопытсво. |
|
11.06.2009, 18:37 | #4 |
Administrator
|
допустим, в фильтр попали 3 строки:
normal .......................... flowfield Outstanding Amount ...... Reserved Qty. (Base) 100 ............................. 5 150 ............................. 2 20 ............................... 4 CALCSUMS("Outstanding Amount") посчитает 270, потому что он кальк СУМЗЗЗЗЗЗЗ а CALCFIELDS("Reserved Qty. (Base)") вернет не 11, а 5 (ну или какая там строка стоит), потому что он кальк ФИЛДЗЗЗЗЗЗЗ |
|
11.06.2009, 19:53 | #5 |
Участник
|
Цитата:
Сообщение от Sancho
допустим, в фильтр попали 3 строки:
normal .......................... flowfield Outstanding Amount ...... Reserved Qty. (Base) 100 ............................. 5 150 ............................. 2 20 ............................... 4 CALCSUMS("Outstanding Amount") посчитает 270, потому что он кальк СУМЗЗЗЗЗЗЗ а CALCFIELDS("Reserved Qty. (Base)") вернет не 11, а 5 (ну или какая там строка стоит), потому что он кальк ФИЛДЗЗЗЗЗЗЗ |
|
11.06.2009, 21:46 | #6 |
Administrator
|
да
это неочевидно, поэтому очень опасно |
|
11.06.2009, 22:56 | #7 |
MCTS
|
|
|
12.06.2009, 11:19 | #8 |
Участник
|
Это не то, чтобы "неочевидно", а "нелогично и неразумно.." (старый анекдот про студента-любовника). Но мы с Вами догадываемся нашей логикой. А вот документ по помощи ничего про это не говорит..
По CALCFIELDS хоть про записать говорят... Поэтому я и вынес такое на обсуждение - хотел узнать Ваше, уважаемые коллеги, мнение. Угу, так проще типа программить и что угодно можно делать с кодом.. Хотя на секундочку представте как будет работать ядро, если кто-то его случайно совсем (я уже молчу про умышленно) "перегрузит" в какой-нибудь функции.. Вобщем у меня почти холодный пот от этой мысли. |
|