Вопрос

Если делаю двойной клик по полю Контакты добавленной мной детали, то получаю ошибку.

В разделе Контрагенты создал свою деталь . В гриде этой детали есть поле Контакт.
Если я делаю 1 клик по этому полю, то открывается карточка редактирования контакта. Если делаю двойной клик, то вместо того чтобы перейти в раздел Контакты на отфильтрованную запись этого контакта (так происходит при двойном клике на поле Контакты детали Контакты) получаю разрушительный сбой.

Возможно, я не учел какие-то ньюансы при создании своей детали , подскажите пожалуйста.

С уважением, Дмитрий

Нравится

5 комментариев

Логика перехода в другой раздел по двойному клику на детали реализована в скрипте страницы wnd_ContactsInAccountGridArea в обработчике события двойного клика по реестру grdDataOnDblClick.
Там происходит вызов функции перехода в раздел с нужными параметрами:

	var ContactID = BaseGridArea.GridDataset.Values('ContactID');
	GotoWorkspace('wnd_ContactsWorkspace', ContactID);

Вам в скрипте новой детали нужно реализовать аналогичную логику.

На уровне grdDataOnDblClick заработало. Т.е. при двойном клике на любую колонку в реестре попадаю в раздел Контакты.
Я попытался пойти дальше и детализировать на уровне колонок , т.е. чтобы при нажатии на поле(колонку) контакта попадать в раздел Контакты, а на поле(колонку) воздействия попадать в раздел Воздейстсвия. Я отключил обработчик на уровне grdDataOnDblClick и прописал 2 обработчика на уровне колонок.

function colCampaignIDOnDblClick(Control) {
var CampaignID = BaseGridArea.GridDataset.Values('CampaignID');
GotoWorkspace('wnd_CampaignsWorkspace',CampaignID);
}
*/

function colContactIDOnDblClick(Control) {
var ContactID = BaseGridArea.GridDataset.Values('ContactID');
GotoWorkspace('wnd_ContactsWorkspace', ContactID);
}

У меня этот фокус не прошел - выдаются ошибки. Где нарушена логика? Вообще можно ли на уровне колонок дифференцировоть переходы?

Лучше завязаться на событие OnLookupColumnClick у реестра, туда параметром передаётся и нажатая колонка. Смотрите, тут глобально по всем разделам делают примерно то, что Вам нужно (плюс ещё проверка нажатия Ctrl).

Там другое, там Кравчук предлагает левый клик вообще отменить что смысла не имеет, а параметры нажатой колонки переносятся если она нажата через ctr(для перехода в раздел, просто клик карту поднимает).
Я то хотел, чтобы двойной клик(без всякого SHIFT) открывал раздел Контакты если по колонке контакт, и
чтобы двойной клик (без всякого SHIFT) по аналогии открывал раздел Воздействия если по колонке воздействие. Вот моя деталь:

На уровне grdDataOnDblClick можно прописать для всей области , но тогда куда бы ни кликал в этой области, будешь попадать только в раздел который повесишь на этот обработчик.
А вот отдельно для колонок , на уровне колонок ведь тоже можно прописать? Там есть точно такой же обработчик

и соотв. для воздействия

Я прописал на этом уровне(см. код в пост №2), но ошибка (пытается при этом коде открыть окно карточки редактирования function ShowEditWindowEx) .
Что касается ctr + клик , то это у меня прекрасно работает и окрывает lookup- овский раздел.
Но хочется чтобы и двойной клик точно также работал на каждом lookup у которого есть раздел.

Код с Ctrl дан для примера. Вы можете его переделать без учёта нажатой клавиши.
Если возникают ошибки, можете провести отладку, чтобы понять, почему вместо обработчика двойного клика попадает в обработчик одинарного.
В стандартной конфигурации обработчик двойного клика по ячейке используется в нескольких местах для установки или снятия в логическом поле галочки. Вы можете сравнить работоспособность там со своим разделом.

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