Я пытаюсь добавить новую кнопку панели инструментов рядом с «ВЗЯТЬ ДЕЛО» на экране «Дело» (CR306000). Я настроил CRCaseMaint DAC, но кнопка все равно не появляется. Может ли кто-нибудь предложить.
Добавить кнопку на верхнюю панель инструментов на экране «Дело»
Ответы (3)
воспроизвел это, и проблема и решение заключались в том, что PXAction должен быть общедоступным. В примере выше он помечен как частный.
код работает следующим образом:
public class CaseExtension : PXGraphExtension<CRCaseMaint>
{
public PXAction<CRCase> Change2;
[PXButton(CommitChanges=true)]
[PXUIField(DisplayName="Change Me")]
protected virtual void change2()
{
}
}
Вот еще одна причина. В базовом графе есть код
public PXAction<CRCase> takeCase;
[PXUIField(DisplayName = "Take Case", MapEnableRights = PXCacheRights.Update, MapViewRights = PXCacheRights.Select)]
[PXButton]
public virtual IEnumerable TakeCase(PXAdapter adapter)
У самой Acumatica есть кнопка TakeCase, которая блокирует вашу кнопку TakeCase. Вам нужно понять, зачем вам нужна еще одна кнопка Take Case, потому что команда Acumatica уже внедрила ее. Вы уверены, что хотите заменить его?
Вам потребуются следующие шаги:
1. Создайте библиотеку классов (CL).
2. Ссылка на созданные CL dll из папки Acumatica, которые начинаются с PX.*
3. В CL добавьте новый класс CRCaseMaintExt с участник TakeCase вот так:
public class CRCaseMaintExt : PXGraphExtension<CRCaseMaint>
{
private PXAction<CRCase> TakeCase2;
[PXButton]
[PXUIField(DisplayName = "Take Case")]
public virtual IEnumerable takeCase2(PXAdapter adapter)
{
//your custom code
return adapter.Get();
}
}
4. Обратите внимание, что регистр в TakeCase и takeCase имеет значение. Также имеет значение PXAction
5. Создайте CL
6. Добавьте ссылку на CL в свой проект Acumatica.