Показать сообщение отдельно
Старый 29.04.2011, 09:06   #4  
AlexSD is offline
AlexSD
Microsoft Dynamics
Сотрудники Microsoft Dynamics
 
257 / 302 (11) ++++++
Регистрация: 14.10.2003
1. Вместо 11 шага, что бы не ставить SYS коды, я пользовался вариантом замены значения свойства service c FormletterService на InventItemService. Далее по списку.
2. Необходимо подправить место интересующего ухода в IL, так, что бы исполнение туда не уходило. Например, в методе \Classes\SysDictClass\invokeObjectMethod необходимо сделать правочку, что бы исполнение всегда проваливалось на веточку х++.

Таких мест по приложению раскидано достаточно много. Можно поискать по ключевым словам, типа, XppILExecutePermission или runAs. Но, достаточно дебагером найти нужную точку перехода исполнения в IL и временно слегка подправить ее в нужную сторону. Например, тут \Data Dictionary\Tables\PurchTable\Methods\initFromVendTable
заменить
X++:
    xppILExecutePermission = new XppILExecutePermission();
    xppILExecutePermission.assert();
    purchTableContainer = runTableMethodIL(tableStr(PurchTable),
                        tableStaticMethodStr(PurchTable, initFromVendTableIL),
                        [buf2Con(this, true), buf2Con(_vendTable, true)]);
    CodeAccessPermission::revertAssert();
на
X++:
    purchTableContainer = PurchTable::initFromVendTableIL([buf2Con(this, true), buf2Con(_vendTable, true)]);

Последний раз редактировалось AlexSD; 29.04.2011 в 09:17.
За это сообщение автора поблагодарили: Logger (3).