Версия: 3.3.1.67 / MSSQL

Помогите пожалуйста разобраться:
Есть реестр раздела(ну любой в принципе). В нем выделены некоторые элементы (CTRL+Click) :

Var ParentItemIDs = GetAttribute(Self, 'ParentItemIDs');
var IDs = ParentItemIDs.CommaText.split(',');

Вот они у нас в массиве IDs.

ВОПРОС!
Как находясь в скрипте scr_AccessGridArea интерпретировать следующую задачу:

ЕСЛИ пользователь имеет права назначать или удалять или менять права доступа
ТО {
Назначить права доступа к элементам массива IDs значение, противоположное значению DataField.Name; Если было true -> false и наоборот.

Только для пользователя или группы, на чьем имени был кликнут тот или инной DataField (галочка) Изменить. Читать, Удалять
}

Нравится

1 комментарий

Игорь, реализовать данный функционал Вы можете доработав функцию dlDataOnDatasetDataChange скрипта scr_AccessGridArea.

function dlDataOnDatasetDataChange(DataField) {
          if ((DataField.Name == 'CanRead') || (DataField.Name == 'CanWrite') ||
                    (DataField.Name == 'CanDelete') ||
                    (DataField.Name == 'CanChangeAccess')) {
                    var Dataset = DataField.ParentDataFields.ParentDataset;
                    Dataset.Post();                 
     // begin               
var AdminUnitID = Dataset('AdminUnitID');
                    var ParentItemIDs = GetAttribute(Self, 'ParentItemIDs');
                    if (ParentItemIDs.Count > 1) {
                              var RightsDataset = GetItemRightDataset(AccessGridArea.TableUSI);
                              RightsDataset.FetchRecordsCount = -1;
                              RightsDataset.AutoRefresh = false;
                              RightsDataset.DisableEvents();                        
                              try {
                                       var ParentItemID;
                                       for (var i = 0; i <= ParentItemIDs.Count - 1 ; i++) {
                                                 ParentItemID = ParentItemIDs.Items(i);
                                                 if (AccessGridArea.RecordID == ParentItemID) {
                                                           continue;
                                                 }
                                                 ApplyDatasetFilter(RightsDataset, 'RecordID', ParentItemID, true);
                                                 ApplyDatasetFilter(RightsDataset, 'AdminUnitID', AdminUnitID, true);
                                                 RightsDataset.Open();
                                                 RightsDataset.GotoFirst();
                                                 while (!RightsDataset.IsEOF) {
                                                           RightsDataset.Edit();                                                          
                                                           RightsDataset(DataField.Name) = DataField.Value;
                                                           RightsDataset.Post();
                                                           RightsDataset.GotoNext();
                                                 } 
                                                 RightsDataset.Close();
                                       }
                              } finally {
                                       RightsDataset.EnableEvents();
                              }
                    }
// end
                    Dataset.Edit();
          }
}
Показать все комментарии