Вопрос или проблема
Возможно ли добавить пользовательские действия в выпадающее меню массовых действий в общем запросе? Я создал пользовательское действие “Утвердить” для экрана поставщика (AP.30.30.00) с помощью рабочих процессов; однако оно не отображается в выпадающем меню массовых действий. Буду очень признателен за любую помощь.
Я попробовал следующее, но продолжал получать ошибку.
using PX.Data;
namespace PX.Objects.AP
{
public class VendorMaint_Extension : PXGraphExtension<VendorMaint>
{
public override void Initialize()
{
Approve.IsMass = true;
}
public PXAction<Vendor> Approve;
[PXButton]
[PXUIField(DisplayName = "Утвердить")]
public void Approve()
{
throw new PXException("Утвердить !");
}
}
}
Ответ или решение
Для добавления пользовательского действия к выпадающему списку массовых действий на экране общего запроса в Acumatica ERP, вам необходимо учесть несколько ключевых моментов. Поскольку вы уже создали действие "Одобрить" для экрана поставщика (AP.30.30.00) через рабочие процессы, но оно не отображается в меню массовых действий, необходимо внести определенные изменения в ваш код.
Подход к решению проблемы
-
Актуализация Кода: Убедитесь, что вы добавили необходимый атрибут
[PXMassAction]
к вашему действию "Approve". Хотя вы объявили действие как массовое с помощьюApprove.IsMass = true;
, этого может быть недостаточно, если не указан соответствующий атрибут. -
Обновление класса расширения: Обновите ваш класс расширения
VendorMaint_Extension
, добавив атрибуты для работы с массовыми действиями. Ниже представлен пример обновленного кода:
using PX.Data;
namespace PX.Objects.AP
{
public class VendorMaint_Extension : PXGraphExtension<VendorMaint>
{
public PXAction<Vendor> Approve;
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Approve")]
[PXMassAction] // Обязательно добавьте этот атрибут
public IEnumerable approve(PXAdapter adapter)
{
foreach (Vendor vendor in adapter.Get<Vendor>())
{
// Логика одобрения поставщика
// Включите здесь вашу бизнес-логику
throw new PXException("Approved vendor: " + vendor.VendorID);
}
return adapter.Get();
}
public override void Initialize()
{
// Присваивание свойства "IsMass" не требуется
}
}
}
Объяснение изменений
-
Атрибут
[PXMassAction]
: Этот атрибут указывает на то, что метод можно использовать как массовое действие, обеспечивая его отображение в выпадающем списке массовых действий. Это ключевой элемент, позволяющий вашему действию появляться в интерфейсе. -
Параметр
PXAdapter
: ИспользованиеPXAdapter
в методе массового действия позволяет обрабатывать несколько записей одновременно, что именно и требуется для действий массового одобрения. -
Логика обработки данных: Добавьте вашу бизнес-логику внутри циклов, где вы можете обрабатывать каждую запись, принимая решения о ее одобрении.
Проверка и отладка
После обновления кода рекомендуется выполнить следующие действия:
-
Сборка и размещение: Соберите проект и разместите его в среде Acumatica, где вы делаете тестирование.
-
Проверка функционала: Зайдите на экран поставщика и проверьте выпадающий список массовых действий, чтобы убедиться, что действие "Одобрить" отображается.
-
Тестирование: Проверьте, работает ли функционал правильно, и нет ли ошибок при выполнении.
Заключение
Следуя приведенным выше шагам и рекомендациям, вы сможете успешно добавить собственное действие "Одобрить" в выпадающий список массовых действий для поставщиков в Acumatica. Важно тестировать все изменения в тестовой среде, чтобы избежать влияния на рабочие процессы на продуктивной системе. Если будут возникать дополнительные проблемы или ошибки, всегда можно обратиться к документации Acumatica или сообществу разработчиков для получения дальнейшей помощи.