Доброго времени суток, коллеги!

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

Для того, чтобы реализовать запрет на смену статуса Договора, пока он на визировании, необходимо выполнить следующее:

1. На открытие карточки редактирования Договора wnd_ContractEdit по событию OnDatasetAfterOpen необходимо проверить состояние всех виз по ID данной записи (данного договора), например таким образом:

var ID = Dataset.Values('ID');
var Vises = GetSingleItemByCode('ds_ContractVises', 'ForVisesCheck');
EnableDatasetFilters(Vises, false);
ApplyDatasetFilter(Vises, 'ChangeRequestID', ID, true);

Здесь Вы получили датасет Детали[Визы], отфильтрованный по ID Договора.
После чего в цикле необходимо проверить состояние каждой из этих виз, например:

Vises.Open();
Vises.GoToFirst();

while (!Vises.IsEOF) {
                               
   ... //проверка по полю VisingResultTypeID    
             
   Vises.GoToNext();
}            
Vises.Close();

2. В случае, если хотя бы одна виза не находится в состоянии “результат визирования = «Положительный»”, то для поля «Состояние» необходимо установить признак

edtStatusID.IsEnabled = false;

При необходимости, можно задать еще условие на проверку, является ли пользователь Администратором:

if (!Connector.CurrentUser.IsAdmin) {
  edtStatusID.IsEnabled = false;
}

Нравится

Поделиться

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