Запрет на смену статуса Договора, пока он на визировании
Доброго времени суток, коллеги!
Вот, вполне логичное поведение приложения: запретить обычным пользователям (менеджерам компании) не имеющим право визировать договор, менять его статус.
Для того, чтобы реализовать запрет на смену статуса Договора, пока он на визировании, необходимо выполнить следующее:
1. На открытие карточки редактирования Договора wnd_ContractEdit по событию OnDatasetAfterOpen необходимо проверить состояние всех виз по ID данной записи (данного договора), например таким образом:
var Vises = GetSingleItemByCode('ds_ContractVises', 'ForVisesCheck');
EnableDatasetFilters(Vises, false);
ApplyDatasetFilter(Vises, 'ChangeRequestID', ID, true);
Здесь Вы получили датасет Детали[Визы], отфильтрованный по ID Договора.
После чего в цикле необходимо проверить состояние каждой из этих виз, например:
Vises.GoToFirst();
while (!Vises.IsEOF) {
... //проверка по полю VisingResultTypeID
Vises.GoToNext();
}
Vises.Close();
2. В случае, если хотя бы одна виза не находится в состоянии “результат визирования = «Положительный»”, то для поля «Состояние» необходимо установить признак
При необходимости, можно задать еще условие на проверку, является ли пользователь Администратором:
edtStatusID.IsEnabled = false;
}