Ошибка при двойном нажатии

Доброго времени суток!
При добавлении дополнительной информации в карточку звонка, столкнулся с проблемой. Необходимая информация отображается корректно, но при двойном клике выдает ошибку. При отладке ругается на следующие строки кода:

function GetCanReadTableGroup(Dataset) {
var Result = true;
if ((Dataset.ServiceTypeCode != 'MemoryDataset') && !Connector.CurrentUser.IsAdmin) {
var Module = System.ExtractUSIModule(Dataset.USI);
Result = System.GetHasLicense(Module);
if (Result) {
var TableGroup = GetParentTableGroup(Dataset);
if (TableGroup){
Result = Connector.CurrentUser.GetCanReadTableGroup(TableGroup);
}
}
}
return Result;
}

Именно на "ServiceTypeCode".
Версия приложения 3.3.2.311.
В чем может быть проблема?
И каким образом можно отменить событие по двойному нажатию?

Нравится

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

скорее всего, у вас в функцию не передается Dataset

А каким образом можно отменить событие по двойному нажатию?
Пробовал на деталях событие OnDblClick оставлять пустым, результат тот же.
Редактировать деталь мне нет необходимости, просто нужно отображать данные.

Здравствуйте.
Необходимо переопределить событие grdDataOnDblClick элемента grdData окна wnd_CallGridArea. Для этого открываем сервис wnd_CallGridArea, выбираем визуальный элемент grdData.
Переходим на события элемента и двойным кликом мыши нажимаем на событие grdDataOnDblClick
После чего будет создана функция :
function grdDataOnDblClick(Control) {
//TODO
}
Сохраняем сервисы scr_CallGridArea, wnd_CallGridArea

После чего будет создана функция :
function grdDataOnDblClick(Control) {
//TODO
}
Сохраняем сервисы scr_CallGridArea, wnd_CallGridArea

Деталь загружается, вместе со звонком. Это конечно не критично, но лучше бы данную информацию подгружать по желанию пользователя, т.е. допустим по нажатию на определенную кнопку, выдавалось окно данной детали с данными. Возник новый вопрос, как можно передать ContactID из dldata и отфильтровать по нему, в новом окне, данные (окне детали)?

А как открываете окно, с помощью ShowEditWindowEx?

Тогда примерно так. В окне, где кнопка:

var ContactID = dlData.Dataset('ContactID');
...
var Attributes = GetNewDictionary();
...
Attributes.Add(ContactID',ContactID);
...
ShowEditWindowEx(EditWindowUSI, Attributes, DefaultValues);

В окне, которое открывается:

var ContactID = GetAttribute(Self, 'ContactID');

И затем по нему фильтруем.

Александр, редактировать данные мне не нужно. Эти данные только для отображения, дополнительная информация по абоненту из других таблиц. В этих таблицах есть ContactID, по которому будет осуществляться фильтрация. Если я правильно понял, var ContactID = GetAttribute(Self, 'ContactID') добавлять на событие OnPrepare?

Этого недостаточно, нужно ещё наложить фильтр. Не пробовал, но примерно так:

ApplyDatasetFilter(dlData.Dataset, 'ContactID', ContactID, true);

Но надо проверить, как обычно делают такую фильтрацию на открытии.

Александр, все получилось. Спасибо за помощь.

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