|
|
|
|
#1 |
|
Участник
|
Изменить компанию в форме
AXAPTA 2.5 SP 3RU
Необходимо по выбору пользователя изменить текущую компанию в текущей форме для всех DataSource. Пишу: Table1.company(newCompany) Table1_DS.reseach() Никакой реакции. Запросы по прежнему выполняются по той компании, которая была установлена при инициализации формы. Пока проблема решается через промежуточный класс, который и организует вызов формы. При выборе другой компании форма просто переоткрывается через класс-оболчку. Есть более простое решение? AXAPTA 2.5 SP 3RU |
|
|
|
|
#2 |
|
Участник
|
Столкнулся с подобной задачей.
Нужно открыть эту же форму, только в другой компании. Сделал немного по-другому: Код: #define.company('dat')
Args args; // ?????? ????? Args
FormRun formRun; // ?????? ????? FormRun
int hwnd;
;
super();
hwnd = element.hWnd();
element.close();
appl.setDefaultCompany(#company, false);
SysSecurity::reload(false);
args = new Args();
args.parm(int2str(hwnd));
// args.caller( this );
args.name(formStr(PurchTable));
formRun = ClassFactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
infolog.clear();Хотя, закрывать пытаюсь и в этом методе (простое element.close()); и в init открываемой формы, если передали parm() Код: hwnd = str2int(element.args().parm());
WinAPI::sendMessageEx(hwnd, #WM_SYSCOMMAND, #SC_CLOSE, 0);или, может, кто-то знает хороший способ открытия формы в другой компании? |
|
|
|
|
#3 |
|
Banned
|
Кажется, надо вместо formRun.wait() поставить formRun.detach(). После этого можно уже вызывать caller.close().
А вообще, отличной иллюстраций к обсуждаемой теме является класс TradeInterCompany. Все уже придумано до нас. |
|
|
|
| За это сообщение автора поблагодарили: kashperuk (2). | |
|
|
#4 |
|
Участник
|
Спасибо, EVGL
Уже сам допер, что не закрывалось именно из-за wait() Как раз зашел всем об этом рассказать ![]() X++: formRun.detach();
// formRun.wait();Спасибо. Вопрос снят. PS Класс посмотрю, спасибо |
|
|
|
|
|