Цитата:
Сообщение от
mazzy
2. пожалуйста, зарегистрируйте багу. лучше от лица клиента. да, регистрация - это гемор. И очень сильный гемор. но эту - зарегистрируйте. пожалуйста.
Никогда не сталкивался с процессом регистрации и проект сейчас в стадии запуска, так что немного не до этого. Но если кто-то желает помочь с этим и займется - я не возражаю и только всячески приветствую.
Цитата:
Сообщение от
mazzy
а можно попросить у вас еще и код, который у вас приводит к подобному "результату"?
Сам код разбросан по кускам разных классов, которые в силу NDA я не имею права выкладывать. Но в целом идея такая:
- Создаете в таблице YourTableName поле типа контейнер PackedData
- Заполняете структуру значениями в обычном исполняемом коде и через .pack() сохраняете его в таблицу. Например так:
X++:
YourTableName yourTableName;
Struct struct;
struct = new Struct();
struct.add('ScenarioHistoryRecId', someRecId);
struct.add('ResponseCode' , someText);
struct.add('InvoiceDateDispute' , someDateTime);
struct.add('OrigInvoiceDueDate' , anotherDateTime);
struct.add('OutstandingAmount' , someRealValue);
struct.add('DateReminderSent' , oneMoreDateTime);
struct.add('NewDueDateRemind' , someDate);
yourTableName.clear();
yourTableName.PackedData = struct.pack();
yourTableName.insert()
- Создаете наследника RunBaseBatch, в методе run() десереализируете сохраненную структуру через create() и запускаете один раз просто так, а второй раз в пакете.
X++:
YourTableName yourTableName = YourTableName::find(yourTableRecId);
Struct dataStruct = yourTableName.PackedData
? Struct::create(yourTableName.PackedData)
: new Struct();
Counter i;
info(strFmt("Record id: %1", yourTableName.RecId));
for (i = 1; i <= dataStruct.fields(); i++)
{
info(strFmt("%1: %2", dataStruct.fieldName(i), dataStruct.value(dataStruct.fieldName(i))));
}
- Удивляетесь увиденному

Похоже, что в AX ключи следуют в порядке их добавления, а в CIL в алфавитном порядке. Мне вот абсолютно на порядок плевать, но хотелось бы, раз они меняют порядок ключей, то чтобы и порядок значений изменился соответствующим образом. У нас R2, проверьте кто-нибудь в R3, может уже исправили.