Следующий BQL должен получить те же результаты, что и ваш SQL-запрос:
PXSelect<INTranSplit,
Where<INTranSplit.docType, Equal<INDocType.receipt>,
And<NotExists<
Select<INTranSplit2,
Where<INTranSplit2.lotSerialNbr, Equal<INTranSplit.lotSerialNbr>,
And<INTranSplit2.docType, Equal<INDocType.receipt>,
And<INTranSplit2.lastModifiedDateTime, Greater<INTranSplit.lastModifiedDateTime>>>>>>>>>.Select(this)
Вам также потребуется создать класс, производный от INTranSplit:
[Serializable]
public class INTranSplit2 : INTranSplit
{
// Re-declare key fields and fields you are using in your BQL
public new abstract class lineNbr : IBqlField
{
}
public new abstract class refNbr : IBqlField
{
}
public new abstract class docType : IBqlField
{
}
public new abstract class splitLineNbr : IBqlField
{
}
public new abstract class lotSerialNbr : IBqlField
{
}
public new abstract class lastModifiedDateTime : IBqlField
{
}
}
Сохранить вИмейте в виду, что если два INTranSplits имеют равные значения LastModifiedDateTime, то эти запросы будут возвращать оба INTranSplits.Если это нежелательно в зависимости от вашего варианта использования, вы можете изменить запрос соответствующим образом.