Добрый день.
До недавнего времени был реализован такой функционал:
if (Assigned(OpportunityDefs)) {
return OpportunityDefs;
}
OpportunityDefs = new Object();
OpportunityDefs.TypeID='{2BFFE3FC-C07B-4398-A709-8B160975592B}'; // Корпоративная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
return OpportunityDefs;
}
Но сейчас появилась группа частных продаж и необходимо, чтоб система определяла, пользователь входит в группу частные или корпоративные продажи и в зависимости от этого выставляла стандартные данные.
Необходимо добавить условие:
{
OpportunityDefs.TypeID='{2BFFE3FC-C07B-4398-A709-8B160975592B}'; // Корпоративная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
if(Пользователь в группе Частная продажа)
{
OpportunityDefs.TypeID='{4A64A1FD-C7D9-422A-AB37-1C49D49D7D97}'; // Частная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
Вот как задать такое условие я не могу понять. Пробовал объявить dataset и проверять по id группы, но почему-то не получается
Нравится
[javascript]
var DatasetGroups = Services.GetSingleItemByUSI('ds_Group');
DatasetGroups.Open();
DatasetGroups.Edit();
var CorpSales = DatasetGroups.Values('ID');
CorpSales = '{A5D835EE-8A96-4677-B9BA-85A9BB43918E}';
var Sales = DatasetGroups.Values('ID');
Sales = '{809BF7A8-FFED-4A7B-9283-9354ABB13874}';
if(CorpSales){
OpportunityDefs.TypeID='{2BFFE3FC-C07B-4398-A709-8B160975592B}'; // Корпоративная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
if(Sales){
OpportunityDefs.TypeID='{4A64A1FD-C7D9-422A-AB37-1C49D49D7D97}'; // Частная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
[/javascript]
Думал так сделать, но оно почему то не фильтрует как надо
[javascript]
OpportunityDefs = new Object();
var DatasetGroups = Services.GetSingleItemByUSI('ds_Group');
DatasetGroups.Close();
EnableDatasetFilters(DatasetGroups, false);
ApplyDatasetFilter(DatasetGroups, 'TypeID', true);
DatasetGroups.Open();
DatasetGroups.Edit();
var CorpSales = DatasetGroups.Values('ID');
CorpSales == '{A5D835EE-8A96-4677-B9BA-85A9BB43918E}';
var Sales = DatasetGroups.Values('ID');
Sales == '{809BF7A8-FFED-4A7B-9283-9354ABB13874}';
if(CorpSales){
OpportunityDefs.TypeID='{2BFFE3FC-C07B-4398-A709-8B160975592B}'; // Корпоративная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
else if(Sales){
OpportunityDefs.TypeID='{4A64A1FD-C7D9-422A-AB37-1C49D49D7D97}'; // Частная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
[/javascript]
Так не получается, как понимаю неверный фильтр
[javascript]
EnableDatasetFilters(DatasetGroups, false);
ApplyDatasetFilter(DatasetGroups, 'TypeID', true);
[/javascript]
Олег, не понял, что у Вас происходит в скрипте выше.
Затык в определении принадлежности пользователя к группе?
Да. Я хочу чтобы скрипт определил в какой группе находится пользователь работающий в данный момент. И уже в зависимости от этого выполнялись условия.
Попробуйте использовать что-то вроде функции:
[javascript]
function UserInGrop(ContactID, AdminGroupID) {
var Dataset = GetSingleItemByCode('ds_UserInGroup', 'UserInGrop');
EnableDatasetFilters(Dataset, false);
ApplyDatasetFilter(Dataset, 'GroupID', AdminGroupID, true);
ApplyDatasetFilter(Dataset, 'ContactID', ContactID, true);
RefreshDataset(Dataset);
if (Dataset.IsEOF) {
Dataset.Close();
return false;
}
Dataset.Close();
return true;
}
[/javascript]
где ContactID - ID контакта, AdminGroupID - ID группы в таблице tbl_AdminUnit
Это не то немного.
Есть 2 функции:
[javascript]
function SetDefaultDatasetValues(Dataset) {
var Today = GetTodayDate();
var EstimatedStartDate = Today.getVarDate();
var EstimatedCloseDate = AddDateDays(Today, 7).getVarDate();
Dataset.DisableEvents();
try {
Dataset.ValAsDateTime('EstimatedStartDate') = EstimatedStartDate;
Dataset.ValAsDateTime('EstimatedCloseDate') = EstimatedCloseDate;
Dataset.ValAsDateTime('StartDate') = EstimatedStartDate;
Dataset.Values('OwnerID') = Connector.CurrentUser.ContactID;
var OpportunityDefs = GetOpportunityDefs();
var StatusID = OpportunityDefs.StatusID;
if (!IsEmptyGUID(StatusID)) {
Dataset.Values('StatusID') = StatusID;
}
var AccountID = CurrentUser.Attributes('AccountID');
if (!IsEmptyGUID(AccountID)) {
Dataset.Values('SupplierID') = AccountID;
}
var RatingID = OpportunityDefs.RatingID;
if (!IsEmptyGUID(RatingID)) {
Dataset.Values('RatingID') = RatingID;
}
var TypeID = OpportunityDefs.TypeID;
if (!IsEmptyGUID(TypeID)) {
Dataset.Values('TypeID') = TypeID;
}
}
finally {
Dataset.EnableEvents();
}
}
[/javascript]
[javascript]
function GetOpportunityDefs() {
if (Assigned(OpportunityDefs)) {
return OpportunityDefs;
}
OpportunityDefs = new Object();
var Dataset = GetSingleItemByCode('ds_UserInGroup', 'UserInGrop');
Dataset.Open();
var Sales = Dataset.Values('GroupID');
if(Sales == '{A5D835EE-8A96-4677-B9BA-85A9BB43918E}'){
OpportunityDefs.TypeID='{2BFFE3FC-C07B-4398-A709-8B160975592B}'; // Корпоративная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
if(Sales == '{809BF7A8-FFED-4A7B-9283-9354ABB13874}'){
OpportunityDefs.TypeID='{4A64A1FD-C7D9-422A-AB37-1C49D49D7D97}'; // Частная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
return OpportunityDefs;
}
[/javascript]
2й скрипт не работает так как надо. Надо как то текущую группу пользователя определять, а я вообще по группе делаю проверку.
[javascript]
function GetOpportunityDefs(AdminGroupID) {
if (Assigned(OpportunityDefs)) {
return OpportunityDefs;
}
OpportunityDefs = new Object();
var Dataset = Services.GetSingleItemByUSI('ds_UserInGroup');
Dataset.Open();
Dataset.Edit();
var GroupID = Connector.CurrentUser.ContactID;
Dataset.ValAsGUID('GroupID') = GroupID;
if(GroupID == '{A5D835EE-8A96-4677-B9BA-85A9BB43918E}'){
OpportunityDefs.TypeID='{2BFFE3FC-C07B-4398-A709-8B160975592B}'; // Корпоративная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
if(GroupID == '{809BF7A8-FFED-4A7B-9283-9354ABB13874}'){
OpportunityDefs.TypeID='{4A64A1FD-C7D9-422A-AB37-1C49D49D7D97}'; // Частная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
return OpportunityDefs;
}
[/javascript]
По идее должно работать, но не работает, что не так подскажите
"Зголич Олег Александрович" написал:var GroupID = Connector.CurrentUser.ContactID;
Олег, Вы получаете ID контакта текущего пользователя и сравниваете с ID
"Зголич Олег Александрович" написал:if(GroupID == '{A5D835EE-8A96-4677-B9BA-85A9BB43918E}'){
Это ID контакта или группы? Что если пользователь входит в несколько групп?
GroupID это ID группы, пользователь может входить только в одну из двух данных групп
и ниже у меня ведь Dataset.Values('GroupID') = GroupID;
Вот функция возвращающая true\false входит ли пользователь UserID в группу GroupID
[javascript]
function IsUserInGroup(UserID, GroupID){
var ds_UserInGroup = Services.GetNewItemByUSI('ds_UserInGroup');
ApplyDatasetFilter(ds_UserInGroup, 'UserID', UserID, true);
ApplyDatasetFilter(ds_UserInGroup, 'GroupID', GroupID, true);
ds_UserInGroup.Open();
var Result = !ds_UserInGroup.IsEmptyPage;
ds_UserInGroup.Close();
return Result;
}
[/javascript]
пример использования
[javascript]
...
var test = IsUserInGroup(Connector.CurrentUser.ID, '{1EBA8CA3-D7D5-4B12-9352-F527A38CBB90}');
...
[/javascript]
смотрим входит ли текущий пользователь в группу с указанным ID
подходит?
Спасибо огромное за функцию. Вот конечный результат, все работает просто замечательно.
[javascript]
function IsUserInGroup(UserID, GroupID){
var ds_UserInGroup = Services.GetNewItemByUSI('ds_UserInGroup');
ApplyDatasetFilter(ds_UserInGroup, 'UserID', UserID, true);
ApplyDatasetFilter(ds_UserInGroup, 'GroupID', GroupID, true);
ds_UserInGroup.Open();
var Result = !ds_UserInGroup.IsEmptyPage;
ds_UserInGroup.Close();
return Result;
}
function GetOpportunityDefs(UserID, GroupID) {
if (Assigned(OpportunityDefs)) {
return OpportunityDefs;
}
OpportunityDefs = new Object();
var CorpSalesID = IsUserInGroup(Connector.CurrentUser.ID, '{A5D835EE-8A96-4677-B9BA-85A9BB43918E}');
var SalesID = IsUserInGroup(Connector.CurrentUser.ID, '{809BF7A8-FFED-4A7B-9283-9354ABB13874}');
if(CorpSalesID){
OpportunityDefs.Title='Корпоративная продажа';
OpportunityDefs.TypeID='{2BFFE3FC-C07B-4398-A709-8B160975592B}'; // Корпоративная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
if(SalesID){
OpportunityDefs.Title='Частная продажа';
OpportunityDefs.TypeID='{4A64A1FD-C7D9-422A-AB37-1C49D49D7D97}'; // Частная продажа
OpportunityDefs.StatusID='{ACE0A224-A004-47FD-A6DA-4E1D2D3C375A}'; // В работе
OpportunityDefs.RatingID='{541B04FC-D81B-404B-A965-827CDF2976C4}'; // Обычный
}
return OpportunityDefs;
}
[/javascript]