Epicor 10 - Изменение растения для текущей сессии

Мы начинаем использовать Epicor 10 и хотим использовать библиотеки DLL / службы для общения с Epicor. Таким образом, мы можем добавлять / обновлять информацию из пользовательского приложения. Пока все идет хорошо, но мы столкнулись с проблемой, когда хотели, скажем, добавить работу для определенного завода. Кажется, что всегда нужно сохранить на заводе, на котором пользователь последний раз входил через клиентское приложение.

Так, например - допустим, последним заводом пользователя был завод «А». Я хочу, чтобы мое пользовательское приложение вошло в Epicor (создание сеанса) и создало задание для завода «B». Я могу добавить задание нормально, но оно поместит его под завод «А», а не «Б», даже если я вошел в завод «Б», когда создавал сеанс.

Мы вызываем SetPlant и передаем нужный нам завод, но Epicor, кажется, всегда отменяет то, как его сохранить. Кто-нибудь еще сталкивался с этим делом? У нас также есть эта проблема с Компанией. SetCompany, похоже, вообще не работает.

Подробнее: - Мы используем сервис net.tcp: ///ERP/ICE/Lib/SessionMod.svc. - Мы можем нормально войти в систему с помощью Login () и получить обратно SessionId - Даже вызов GetValues ​​() для объекта Session говорит о том, что мы вошли в систему «B», даже если Epicor по-прежнему будет использовать завод «A».

Единственная работа, которую мы можем придумать, но которую мы не хотим делать, - это иметь пользователя приложения для компании и завода, чтобы мы могли гарантировать, в какой компании и на каком заводе будут сохранены данные. Это будет работать, но это не идеально.

У кого-нибудь есть предложения, как заставить систему принять новую компанию или завод?


person Travyguy9    schedule 08.02.2017    source источник
comment
Я знаю, что это основной вопрос, но иногда это простые вещи, которые нам задают. Вы проверяли, что у пользователя, которого вы используете, есть разрешение на доступ к обеим компаниям? Выньте код из уравнения, войдите в систему как этот пользователь и посмотрите, сможете ли вы обновить записи в обеих компаниях.   -  person Des Horsley    schedule 17.02.2017
comment
Да, у пользователя есть доступ к компаниям и предприятиям.   -  person Travyguy9    schedule 17.02.2017


Ответы (3)


Как указывает user463132, вы можете обернуть свое служебное соединение временным контекстом сеанса:

using (CallContext.Current.TemporarySessionCreator.SetCompanyID("YourCompanyHere").SetPlantID("B").Create())
{
}

Справочник по статье Haso Keric

Я также добавлю, что если вы используете адаптеры пользовательского интерфейса, вы можете просто получить сеанс из экземпляра объекта oTrans и установить здесь свойства, которые определяют, как oTrans взаимодействует с вашими данными.

Ice.Core.Session s1 = (Ice.Core.Session)this.oTrans.Session;
s1.CompanyID = "YourCompanyHere";
s1.PlantID = "B";
person JosephMoeller    schedule 03.06.2019

PlantID можно обновить в сеансе с помощью метода SetPlant (). Он должен вызываться после SetCompany ():

sessionModImpl = NetTcp_Helper.ClassAttributHelper.CreateBusObj<SessionModImpl>(Guid.Empty, SessionModImpl.UriPath, Settings);

sessionId = sessionModImpl.Login();

sessionModImpl.SessionID = sessionId;

sessionModImpl.SetCompany(epicorCompanyID, out companyName, out plantID, out plantName, out workstationID, out workstationDescription, out employeeID,
                                        out countryGroupCode, out countryCode, out tenantID);

sessionModImpl.SetPlant(newSiteID, out plantName);
person Zimo    schedule 04.12.2019

Первое, что нужно понять, это то, что сеанс сервера - это не отдельный экземпляр, а скорее стек экземпляров сеанса .NET. Переменная CallContext.Current.Session - это просто указатель на верхнюю часть стека. В большинстве случаев в стеке CallContext есть только один экземпляр Session. Но когда вам нужно перебрать компании, чтобы обработать что-то, стек сеансов выталкивается и всплывает. Вот тут-то и пригодятся «TemporarySessions».

Прочтите об этом по адресу: https://www.linkedin.com/pulse/snippet-epicor-change-companyplantuser-bpm-haso-keric/

person user463132    schedule 19.06.2018