После сообщения AndyD сделал то, что нужно было сделать с самого начала – посмотрел код по слоям. И обнаружил свинью, подложенную разработчиком.
Итак:
На SYS слое остался оригинальный код (до SP2)
client server static int getLastError()
{
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _getLastError = new DLLFunction(_winApiDLL, 'GetLastError');
_getLastError.returns(ExtTypes:

Word);
return _getLastError.call();
}
На SYP слое SP2 благополучно исправил ошибку – мол между вызовом файловых функций (например копирование) и getLastError Аксапта вызвает ещё кучу всего и таким образом это значение сбивает. Во 2-м SP значение getLastError кэшируется.
client server static int getLastError()
{
// Syp Modifications - SP2 - BEGIN
// DLL _winApiDLL = new DLL('KERNEL32');
// DLLFunction _getLastError = new DLLFunction(_winApiDLL, 'GetLastError');
//
// _getLastError.returns(ExtTypes:

Word);
//
// return _getLastError.call();
return DLL::lastDLLError();
// Syp Modifications - SP2 – END
}
Но на VAR слое наш разработчик ничтоже сумятише вернул в зад эти исправления по какой-то ему одному ведомой причине:
client server static int getLastError()
{
// вернул все назад. а токакой-то криворукий вызов метода класса DDL сделал, а сам метод создать звбыл. повбывав бы!
// Syp Modifications - SP2 - BEGIN
DLL _winApiDLL = new DLL('KERNEL32');
DLLFunction _getLastError = new DLLFunction(_winApiDLL, 'GetLastError');
_getLastError.returns(ExtTypes:

Word);
return _getLastError.call();
// return DLL::lastDLLError();
// Syp Modifications - SP2 - END
}
Вот так-то – удивительные рядом! Впредь буду изучать слой наших разработчиков прежде чем морочить голову отзывчивым людям из AxForum

) .