Epicor ERP: можно ли вызывать функцию Epicor в пользовательской настройке?
Epicor ERP 10.2.500 был недавно выпущен с добавлением функций Epicor. Их можно вызывать из директив метода и данных.
Кто-нибудь смог сделать это с помощью настройки формы в Epicor?
4 ответа
Это возможно с помощью вызова REST к API вашей функции. В этом случае у меня была функция, которая отправляла электронное письмо с некоторых входов.
private void epiButtonC1_Click(object sender, System.EventArgs args)
{
//API Key is included in the query param in this example.
var request = (HttpWebRequest)WebRequest.Create("https://{appserver}/{EpicorInstance}/api/v2/efx/{CompanyID}/{LibraryID}/{functionName}/?api-key={yourAPIKey}");
request.Method = "POST";
//All REST v2 requests also sent with authentication method (Token, Basic)
//This should be Base64 encoded
string username = "userName";
string password = "passWord";
string encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));
request.Headers.Add("Authorization", "Basic " + encoded);
//Add body to correspond to request signature
request.ContentType = "application/json";
using(var writer = new StreamWriter(request.GetRequestStream()))
{
var values = new Dictionary<string, string>;
{
{"toEmailAddress", "someEmail@email.com"},
{"fromEmailAddress","someOtherEmail@email.com"},
{"body","This is the body"},
{"subject","Hello from Client Code!"}
};
string json = JsonConvert.SerializeObject(values);
writer.Write(json);
}
using (var response = request.GetResponse())
using (var reader = new StreamReader(response.GetResponseStream()))
{
var result = reader.ReadToEnd();
epiTextBoxC1.Text = result.ToString();
}
}
Если вы создаете свою собственную DLL, которая вызывает EpicorFunction, вы можете использовать ее в настройках. Все еще ищу способ позвонить им напрямую.
Не сделал это сам лично, но, глядя на первые ноты после выпуска о ней здесь заставляет меня верить, что нет из раствора коробки, но в этой версии / первоначального выпуска.
Однако я уверен, что вы могли бы выполнить HTTP-запрос из настройки Epicor, если в вашей среде включен REST API.
Конечная точка REST — это рекомендуемый способ выполнения вызова функции, как указано a-moreng.
Если по какой-то причине вы не можете использовать это, вы можете использовать сквозной метод для любого серверного BO через Адаптер настройки. Например, создайте обновляемый BAQ, который можно вызывать из настройки с помощью DynamicQueryAdapter.
- Выберите произвольную таблицу и поле для сохранения BAQ.
- Создайте три строковых параметра для хранения имени библиотеки функций, имени функции и списка параметров с разделителями.
- В методе GetList создайте базовую директиву обработки.
- Разделите список параметров с разделителями и преобразуйте их в соответствующие типы данных.
- Используйте полученные переменные для вызова вашей функции.
- При желании вы можете передать возвращаемые переменные в ttResults BAQ.