Как обновить поля таблицы расширения Kit Assembly после выпуска Kit Assembly?

На экране сборки комплекта, как только я выпущу сборку комплекта, я никогда не смогу обновить INKitAssembly,

Но я должен разрешить обновление полей таблицы расширения KitAssembly. как я могу разрешить обновлять настраиваемые поля, добавленные в таблицу расширения INRegister (InKitAssembly)?

Есть ли способ обновить поля таблицы расширения InKitAssembly по завершении операции Release, есть ли у вас какой-либо делегат обратного вызова после завершения длительной операции Release kitAssembly?


person user_mat    schedule 07.05.2020    source источник
comment
Какие типы полей вы хотите обновить? простые поля при отпускании или расчеты?   -  person KRichardson    schedule 08.05.2020
comment
Речь идет об обновлении настраиваемого поля, расположенного в расширении INRegister DAC. Решение состоит в том, чтобы снова включить поля в событии RowSelected и, в худшем случае, отключить шаги автоматизации, которые отключают поля. Есть похожие вопросы, общие рекомендации, такие как настройка AllowUpdate=true, можно найти в этом ответе: stackoverflow.com/questions/46004556/   -  person Hugues Beauséjour    schedule 08.05.2020
comment
Другой ответ на ту же тему: stackoverflow.com/a/46436074/7376238   -  person Hugues Beauséjour    schedule 08.05.2020
comment
Этот связанный ответ посвящен этапам автоматизации: stackoverflow.com/a/46450281/7376238   -  person Hugues Beauséjour    schedule 08.05.2020
comment
Снова та же тема: stackoverflow.com/a/45177649/7376238   -  person Hugues Beauséjour    schedule 08.05.2020
comment
Спасибо @Hugues, сэр, за помощь. В случае сборки комплекта, когда я обновляюсь после выпуска, я получаю сообщение об ошибке: серийный номер «SRF000» для элемента «ABC001» уже получен. любой комментарий по этому поводу?   -  person user_mat    schedule 11.05.2020
comment
Что вы имеете в виду под обновлением? Это происходит, когда вы вызываете метод обновления?   -  person Hugues Beauséjour    schedule 11.05.2020
comment
Обновление означает, что при вызове метода сохранения. при вызове Base.Document.Update(inRegObj); затем вызовите метод Base.Persist().   -  person user_mat    schedule 11.05.2020


Ответы (1)


Обновление значений расширения в INReleaseProcess persist должно работать. Что-то вроде этого:

public class INReleaseProcessExte : PXGraphExtension<INReleaseProcess>
{
    [PXOverride]
    public virtual void Persist(Action del)
    {
        foreach (INTran row in Base.intranselect.Cache.Updated)
        {
            if (row?.DocType != INDocType.Production || row.Released != true)
            {
                continue;
            }

            // update your extension here
            var inTranExt = PXCache<INTran>.GetExtension<INTranMyExtension>(row);
            inTranExt.MyField = "X";
            Base.intranselect.Update(row);
        }

        del?.Invoke();
    }
}
person Brendan    schedule 27.05.2020