Выступлю в роли некропостера:
Столкнулся с аналогично проблемой совершенно случайным образом: обновили клиента до версии 4.0 SP3 (в планах перехать на sql 2008R2 + терминальный доступ основан на Windows 7). При запуске задания Коррекция с/с (R795) на некоторых товарах уходил в рекурсию (создавал в Т5802 одинаковые неправильные записи типом коррекция). Заитересовавшись подобной необычной ошибкой начал разбираться:
Первое с чем я столкнулся это необычное обновление переменной AverageCostLCY в F30 - оно обновлялось не во всех товарах (в каких то обновлялось правильно, в каких то не правильно, в каких то вообще не обновлялось), по которым существовали остатки. После непродолжительной медитации над кодом кодеюнита 5804 выяснилось:
CALCSUMS("Invoiced Quantity","Cost Amount (Actual)","Cost Amount (Actual) (ACY)");
AverageQty := "Invoiced Quantity";
AverageCost := "Cost Amount (Actual)";
AverageCostACY := "Cost Amount (Actual) (ACY)";
nicht arbeiten вообще.
При этом, расчет этих переменных в цикле а-ля
IF FIND('-') THEN
REPEAT
MESSAGE('%1_________%2_________%3_________%4',"Item No.","Invoiced Quantity",
"Cost Amount (Actual)","Cost Amount (Actual) (ACY)");
AverageQty +="Invoiced Quantity";
AverageCost +="Cost Amount (Actual)";
AverageCostACY +="Cost Amount (Actual) (ACY)";
UNTIL NEXT = 0;
прекрасно работало.
Долго думал, полез сюда подглядеть - ошибку с не корректным расчетом переменных на форме решил путем пересоздания ключей (благо таблички 32 и 5802 относительно не большие).
И вот что удивительное: решилась проблема с рекурсией и, как выяснилось, по части позиций с/с была расчитана некорректно.
Вопрос: кто нибудь когда-нибудь с подобным сталкивался? Может Microsoft что то пишет по этому поводу?
Переход был сделан с версии 3.7 на 4.0SP3, версия sql-сервера Microsoft SQL Server 2000 - 8.00.818 (Intel X86) May 31 2003 16:08:15 Copyright (c) 1988-2003 Microsoft Corporation Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
|