Делаю функцию, если выделен 1 инцидент, то должна работать кнопка адд, если выделено 0 или больше - ошибка.
var newWindow = Services.GetNewItemByUSI('wnd_IncidentsGridArea');
var SelectedIDs = newWindow.ComponentsByName('grdData').SelectedIDs;
debugger;
var Count = 0;
Count = SelectedIDs.Count;
if (Count == 1){
debugger;
AddSolution();
var Count = 0;
}
else{
ShowWarningDialog('Внимание! Выберите один инцидент.');
return;
}
}
Дело в том, что инциденты выделяю, а счетчик не меняется. Почему так может происходить? Пробовал с родным гридом, почему то счетчик после 1 нажатия устанавливается 1 и не сбрасывается потом. А не должно быть так.
Нравится
Вам надо обращаться к гриду в текущем окне, попробуйте так:
function btnAddOnClick(Control) { debugger; var Count = 0; Count = grdData.SelectedIDs.Count; if (Count == 1){ debugger; AddSolution(); var Count = 0; } else{ ShowWarningDialog('Внимание! Выберите один инцидент.'); return; } }
Дело в том, что кнопка на одном гриде, а выделяю строки в другом.
Прилагаю скрин:
В любом случае вызов GetNewItemByUSI не поможет - он создает новую копию окна.
Вам надо обратиться к существующему.
Если Вы добавляли деталь стандартным образом, то попробуйте так:
1) в функции инициализации детали (в скрипте к разделу) добавьте строку:
SetAttribute(DetailWindow, 'ParentGrid', BaseWorkspace.Grid);
2) количество выделенных записей получить так:
Count = Self.Attributes('ParentGrid').SelectedIDs.Count;
Спасибо за совет.
А почему после того, как я выбираю первую существующую запись счетчик уснанавливается 1 и на 0 не сбрасывается. Как бы решить. Если не понятно выразился, завтра приложу скриншоты.
function InitializeSolutionDetail() { IncidentsWorkspace.SolutionWindow = wndSolutionDetail.Window; IncidentsWorkspace.SolutionWindow.Prepare(); IncidentsWorkspace.SolutionDataset = IncidentsWorkspace.SolutionWindow.ComponentsByName('dlData').Dataset; var DetailWindow = wndSolutionDetail.Window; SetAttribute(DetailWindow, 'ParentGrid', BaseWorkspace.Grid); var Count = Self.Attributes('ParentGrid').SelectedIDs.Count; }
Делаю так, на var Count = Self.Attributes('ParentGrid').SelectedIDs.Count; выскакивает ошибка.
Эта строка должна быть в обработчике кнопки "Добавить", а не в инициализации:
var Count = Self.Attributes('ParentGrid').SelectedIDs.Count;
Спасибо. Осталась последняя проблема, первый раз проверка срабатывает и если не выбирать записи в гриде, то выскакивает сообщение выберите инцидент. Мы выбираем запись в гриде - кнопка работает. Снимаем выделение с грида, кнопка все равно работает, count = 1. Хотя должен быть 0.
Олег, каким образом Вы "снимаете выделение с грида" ? Речь идет о верхнем гриде?
Да. Я выставляю дату в фильтре так, чтобы не было ни одной записи в гриде. Следовательно выбранных записей быть не может.
А что возвращает строчка
Self.Attributes('ParentGrid').SelectedIDs.Count
когда Вы нажимаете на кнопку "Добавить" на детали при отсутствии записей в родительском гриде.?
Должна вернуть ноль.