на ВМ где все работает как надо, запись в MCRSalesTable создается когда пользователь нажимает кнопку Submit (это MCRSalesOrderRecap.SubmitOrder()). Call stack с ВМ где запись создается - на скриншоте внизу.
MCRSalesTable.Insert() делается на Salestable.update():
X++:
public class SysExtensionSerializerMap extends common
{
/* .................... */
/// <summary>
/// Updates / inserts the packed extension table record after the base table record is updated.
/// </summary>
/// <remarks>
/// This method should be called immediately after super() of base table's <C>update</C> method.
/// </remarks>
public void postUpdate()
{
SysExtensionSerializerExtensionMap currentExtensionTable;
SysExtensionSerializerExtensionMap extensionTableToUpdate;
SysExtensionSerializerExtensionMap extensionTableInUse;
int i;
boolean checkForLinkedExtensionTables;
container newPackedExtensions;
boolean updated;
Array extensionTableArray = new Array(Types::Record);
container extensionTableTableIdList;
TableId currentExtensionTableTableId;
container hasLinkedExtensionTableCon;
boolean hasLinkedExtensionTable;
if (this.RecId && this.PackedExtensions != conNull())
{
for (i = 1; i <= conLen(this.PackedExtensions); i++)
{
currentExtensionTable = con2Buf(conPeek(this.PackedExtensions, i));
extensionTableArray.value(i, currentExtensionTable);
currentExtensionTableTableId = currentExtensionTable.TableId;
// if buffer is not form DS there is no need to check for extension table on client
checkForLinkedExtensionTables = checkForLinkedExtensionTables || FormDataUtil::isFormDataSource(this);
extensionTableTableIdList += [currentExtensionTableTableId];
}
if (checkForLinkedExtensionTables)
{
hasLinkedExtensionTableCon = SysExtensionSerializerFormRunHelper::hasExtensionTable(this, extensionTableTableIdList);
}
ttsbegin;
for (i = 1; i <= extensionTableArray.lastIndex(); i++)
{
updated = false;
currentExtensionTable = extensionTableArray.value(i);
/* ............................ */
// If it is not an existed record, insert it.
if (updated == false)
{
currentExtensionTable.BaseRecId = this.RecId;
currentExtensionTable.insert(); //<<-----------------------------
}
newPackedExtensions += [buf2Con(currentExtensionTable, true)];
}
ttscommit;
this.PackedExtensions = newPackedExtensions;
}
}