Скрипты
Разработка

Проблема с счетчиком

Делаю функцию, если выделен 1 инцидент, то должна работать кнопка адд, если выделено 0 или больше - ошибка.

function btnAddOnClick(Control) {
        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 и не сбрасывается потом. А не должно быть так.

Нравится

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

Вам надо обращаться к гриду в текущем окне, попробуйте так:
[javascript]
function btnAddOnClick(Control) {
debugger;
var Count = 0;
Count = grdData.SelectedIDs.Count;
if (Count == 1){
debugger;
AddSolution();
var Count = 0;
}
else{
ShowWarningDialog('Внимание! Выберите один инцидент.');
return;
}
}
[/javascript]

Дело в том, что кнопка на одном гриде, а выделяю строки в другом.
Прилагаю скрин:

http://www.community.terrasoft.ru/system/files/add.jpg

В любом случае вызов GetNewItemByUSI не поможет - он создает новую копию окна.
Вам надо обратиться к существующему.
Если Вы добавляли деталь стандартным образом, то попробуйте так:
1) в функции инициализации детали (в скрипте к разделу) добавьте строку:
[javascript]
SetAttribute(DetailWindow, 'ParentGrid', BaseWorkspace.Grid);
[/javascript]

2) количество выделенных записей получить так:
[javascript]
Count = Self.Attributes('ParentGrid').SelectedIDs.Count;
[/javascript]

Спасибо за совет.
А почему после того, как я выбираю первую существующую запись счетчик уснанавливается 1 и на 0 не сбрасывается. Как бы решить. Если не понятно выразился, завтра приложу скриншоты.

[javascript]
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;
}
[/javascript]
Делаю так, на var Count = Self.Attributes('ParentGrid').SelectedIDs.Count; выскакивает ошибка.

Эта строка должна быть в обработчике кнопки "Добавить", а не в инициализации:
[javascript]
var Count = Self.Attributes('ParentGrid').SelectedIDs.Count;
[/javascript]

Спасибо. Осталась последняя проблема, первый раз проверка срабатывает и если не выбирать записи в гриде, то выскакивает сообщение выберите инцидент. Мы выбираем запись в гриде - кнопка работает. Снимаем выделение с грида, кнопка все равно работает, count = 1. Хотя должен быть 0.

Олег, каким образом Вы "снимаете выделение с грида" ? Речь идет о верхнем гриде?

Да. Я выставляю дату в фильтре так, чтобы не было ни одной записи в гриде. Следовательно выбранных записей быть не может.

А что возвращает строчка
[javascript]
Self.Attributes('ParentGrid').SelectedIDs.Count
[/javascript] когда Вы нажимаете на кнопку "Добавить" на детали при отсутствии записей в родительском гриде.?
Должна вернуть ноль.

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