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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.02.2007, 11:47   #1  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
Report 798 Date Compress Item Ledger Компрессия Книги Товаров NAVW13.60
Необходимо было осуществить модификацию данного отчёта с целью учёта им наличия самостоятельно добавленных полей в таблицы 32 и 5802. В ходе тестирования выявил, что сжатия не происходит в случае, если отмечено сохранение поля Источник Но. (Source No.). В ходе выяснения причин натолкнулся на следующий фрагмент кода в функции CompressValueEntries
<div class='CALtop'>C/AL</div><div class='CAL'>
IF NOT ValueEntry."Expected Cost" THEN BEGIN
IF ValueEntry."Gen. Bus. Posting Group" <> "Gen. Bus. Posting Group" THEN
EXIT(FALSE);
IF ValueEntry."Gen. Prod. Posting Group" <> "Gen. Prod. Posting Group" THEN
EXIT(FALSE);
IF ValueEntry."Inventory Posting Group" <> "Inventory Posting Group" THEN
EXIT(FALSE);
IF RetainNo(FIELDNO("Document No.")) AND (ValueEntry."Document No." <> "Document No.") THEN
EXIT(FALSE);
IF RetainNo(FIELDNO("Source Type")) AND (ValueEntry."Source Type" <> "Source Type") THEN
EXIT(FALSE);
IF RetainNo(FIELDNO("Source No.")) AND (ValueEntry."Source No." = "Source No.") THEN
EXIT(FALSE);
IF RetainNo(FIELDNO("Source Posting Group")) AND (ValueEntry."Source Posting Group" = "Source Posting Group") THEN
EXIT(FALSE);
IF RetainNo(FIELDNO("Salespers./Purch. Code")) AND (ValueEntry."Salespers./Purch. Code" = "Salespers./Purch. Code") THEN
EXIT(FALSE);
IF ValueEntry."Entry Type" = "Entry Type"::Rounding THEN
EXIT(TRUE);</div>
Т.е. если установлено сохренение поля Document No., проверяется на неравенство, а для Source No. на равенство. Как я понимаю, всвязи с тем, что часто сравнивается значинеия одних и тех же записей таблицы 5802 (об этом чуть ниже), происходит выход из функции со значением FALSE и в результате этого компрессия запущуная на тестовой базе удалила 280035 записей и создало ровно столько же. Если проследить код назад, то видно, что поля ValueEntry сравниваются с полями ValueEntry2. В функцию передаётся параметром ItemLedgEntryNo номер операции по таблице 32 и таким кодом устанавливается фильтр на ValueEntry
<div class='CALtop'>C/AL</div><div class='CAL'>
ValueEntry.RESET;
ValueEntry.SETCURRENTKEY("Item Ledger Entry No.");
ValueEntry.SETRANGE("Item Ledger Entry No.",ItemLedgEntryNo);
ValueEntry.FIND('-');
</div>

Сама функция вызывается в триггере OnAfterGetRecord() единственного датаитема отчёта по 32 таблице таким кодом <div class='CALtop'>C/AL</div><div class='CAL'>CompressValueEntries("Entry No.",TRUE)</div>, а переменная ValueEntry2 есть гобальная и задаётся чуть выше вызова функции CompressValueEntries кодом
<div class='CALtop'>C/AL</div><div class='CAL'>
ValueEntry2.RESET;
ValueEntry2.SETCURRENTKEY("Item Ledger Entry No.");
ValueEntry2.SETRANGE("Item Ledger Entry No.",ItemLedgEntry2."Entry No.");
ValueEntry2.FIND('-');
</div>, где ещё чуть выше
<div class='CALtop'>C/AL</div><div class='CAL'>
ItemLedgEntry2 := "Item Ledger Entry";
</div> ("Item Ledger Entry" есть датаитем).

После того как я в функции CompressValueEntries заменил сомнительные = на <> стало сжиматься при сохранении номера источника. Это глюк стандартного функционала или я врубился лишь поверхностно и не понимаю сути той задумки, которую они хотели осуществить?
Старый 28.02.2007, 13:07   #2  
Cheb is offline
Cheb
Участник
Лучший по профессии 2017
 
138 / 13 (1) ++
Регистрация: 22.09.2002
Адрес: Ростов-на-Дону -> Москва
В NAV4.0SP1 стоит знак "<>".
Старый 28.02.2007, 13:42   #3  
grif is offline
grif
Участник
Аватар для grif
 
236 / 10 (1) +
Регистрация: 31.08.2006
спсб значит похоже что это глюк
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:32.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.