Доброго времени суток. Стоит такая задача. На определенном этапе бизнес-процесса открывается 2 окна (карточки редактирования): счет и задача "Подтвердить счет". У пользователя два варианта: либо изменить дату начала/завершения задачи и сохранить задачу, либо подтвердить счет, при этом задача "Подтвердить счет" становится выполненной.
Вопрос такой. У задачи статус "Выполнена", но при этом остается висеть окно задачи с неактуальными данными. Хочу его автоматически закрывать. Возможно ли это?
Если нужно обратиться в объекту окна, и вызвать его метод Close(), сделайте так:
Window.Close();
Спасибо за ответ, Павел. Но в том то и проблема, что ссылки на объект окна у меня нет. Существует ли какая-нибудь возможность, например получить форму редактирования задачи зная ID задачи (если есть открытая форма, то получить ее) или список всех открытых окон экземпляра Террасофт Клиент (я бы их перебрал и по содержимому Attributes нужное окно нашел)?
Или все-таки придется городить огород с сохранением ссылок на все окна в какой-то коллекции?
Может проще не выводить два окна редактирования? а обойтись диалоговым окном с возможностью либо выбрать что делать дальше (задача или счет). Либо собственное окно с возможностью закрыть задачу либо подтвердить счет, пользователю же необязательно видеть всю карточку и счета, и задачи?
"Александр Кудряшов" написал:Может проще не выводить два окна редактирования? а обойтись диалоговым окном с возможностью либо выбрать что делать дальше (задача или счет).
Сейчас уже не проще. Бизнес-процесс спроектирован так, что каждый его этап сопровождается выводом формы редактирования задачи, связанной с этим этапом (это фундаментальное требование). Плюс, для этапов, связанных с оформлением доментов, еще выводится форма редактирования этого документа. Ваше предложение предполагает переделывание кучи БП, а в данном случае я хотел обойтись малой кровью.
поковыряться. Не подскажете, можно ли об этом механизме почитать поподробнее?
Ну и судя по этому куску кода из функции ShowEditWindowEx сервиса scr_WindowUtils
if((!Services.AlwaysGetLastItemVersion)&&(IsUndefined(UseCache)|| UseCache)){// здесь пропущены проверки
var EditWindow = WinCache_Get(EditWindowUSI, RecordID);if(!Assigned(EditWindow)){return;}}else{
var EditWindow = Services.GetNewItemByUSI(EditWindowUSI);}
с выключенным кэшированием сервисов я таким образом окна получать не смогу?