D365 Новая кнопка создает ценовую линию с пустой линией - PullRequest
1 голос
/ 07 мая 2019

После добавления логики создания цены для объекта в сетке всегда создается «на одну строку больше», которая является пустой.Таким образом, если необходимо создать две строки, будет создано 3 строки, и одно дополнение будет пустым.

Есть ли что-то, что я пропустил в коде?

   [Control("CommandButton")]
    class AreaActionPaneNew
    {
        void clicked()
        {
            PMCParameters   contractParameters = PMCParameters::find();
            PMETmpRentalObjectArea  groupedAreaList; // Group by area_type and cost_type
            PMERentalObjectPrice    priceList;
            date workingDate = currWorkingDate.dateValue();
            ;
            super();

            // Get grouped area values. Values are summed up by area_type and ancost_type
            groupedAreaList = PMERentalObjectAreaCl::getRentalAreaPrCostType(pmeRentalobject.RentalObjectId, userSetting.validFrom(), userSetting.validTo() , workingDate);

            ttsbegin;
            while select groupedAreaList
            {
                select forupdate firstonly priceList
                    where priceList.RentalObjectId == pmeRentalObject.RentalObjectId &&
                          priceList.RentalCostType == groupedAreaList.RentalCostTypeId &&
                          priceList.AreaType == groupedAreaList.Areatype && priceList.ValidFrom == pmeRentalObject.ValidFrom;

                if (!priceList)
                    priceList.initValue();

                priceList.RentalObjectId = pmeRentalObject.RentalObjectId;
                priceList.RentalCostType = groupedAreaList.RentalCostTypeId;
                priceList.ValidFrom      = pmeRentalobject.ValidFrom;

                priceList.AreaType       = groupedAreaList.Areatype;


   priceList.Amount         = groupedAreaList.Price;
            priceList.Area           = groupedAreaList.AreaValue;
            priceList.Quantity       = groupedAreaList.RentalQty;

            if (!priceList)
                priceList.Period  = contractParameters.ReportPeriod;

            if (priceList)
                priceList.update();
            else
                priceList.insert();
        }
        ttscommit;

        pmeRentalObjectPrice_ds.research();
    }

}

1 Ответ

1 голос
/ 07 мая 2019

Код выглядит так, как будто он обновляется / вставляется только без создания пустой строки.

Из вашего атрибута вы используете Command Button ( см. Здесь ), который может иметьсвязанная команда, такая как New, которая эффективно выталкивает Ctrl+N и объясняет, почему у вас пустая строка.

Самый простой способ проверить это просто создать обычный Button и переопределить метод, по которому щелкнули, затем скопируйте / вставьте свой код и нажмите обе кнопки и посмотрите, имеют ли они другое поведение.

Проверьте свойство Command на кнопке и посмотрите, есть ли что-то там.Попробуйте закомментировать super(); вызов.

Возможно, вам следует рассмотреть просто Button или Menu Item Button со связанным объектом.

...