Ориентация при большом количестве открытых окон

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

Нравится

3 комментария

Здравствуйте.

Из "дочернего" окна можно узнать, есть ли у него родительское:

Self.Attributes('NotifyObject')

Из "родительского" посчитать кол-во "дочерних" окон в коробке нельзя.
Но ничто Вам не мешает при нажатию на кнопку создания нового заказа записывать в атрибут окна "Звонок" окно "Заказа":

ZakazWindow.Prepare();
ZakazWindow.Show();
Self.Attributes('ChildForms').push(ZakazWindow);

где

Self.Attributes('ChildForms') = [];

Вроде бы получилось.
Используется аттрибут окна заказа PerformedForms
При открытии окна заказа
wndSandBurn = ShowEditWindowEx(EditWindowUSI, Attributes, DefaultValues);
присваивается +
wndSandBurn.Attributes('PerformedForms') ='+';
При закрытии окна заказа присваивается -
Self.Attributes('PerformedForms') = '-';
...
wnd_BaseDBEditOnCloseQuery(Window, CanClose);

В окне звонка со своими дочерними окнами можно связаться:

в wnd_CallEditScript
var Skolko = getPermission('wnd_OpportunityOrderEdit','wnd_CallEdit',Self.InstanceID);
if(Skolko > 0)
......

function getPermission(USI, USI2, RecordID) {
var Item;
for (var i = 0; i < WinCache_Windows.length; i++) {
Item = WinCache_Windows[i];
if (Item.USI == USI && Item.Instance.Attributes('NotifyObject').InstanceID == RecordID && Item.Instance.Attributes('PerformedForms') == '+')
return 1;

}
return 0;
}

Несколько модифицировав функцию, можно получать количество дочерних окон или конкретные данные из объекта.
Вопрос в чем: нет ли в таком подходе каких-то "подводных камней". При тестировании все нормально - окно видит свои дочерние окна и правильно реагирует, но мало ли...

Добрый день.

Сложно сказать. Такого функционала как сделали Вы в "коробке" нет, а значит он не тестировался.
Чисто визуально - вроде бы всё ок, проблем быть не должно.

Показать все комментарии