Была поставлена задача : Что при условии отсутствия обратной связи по визе, т.е. отсутствии реакции визирующего (Положительной или отрицательной) за определенный промежуток времени (3 часа), сменить статус визы на "Нет обратной связи".  

Для этого в справочнике "Состояния визы" добавил новый пункт "Нет обратной связи" и сделал его конечным.

Для этого в БП добавил элемент "Обработка таймера" задал время 3 часа, по истечении которого с помощью элемента "Изменить данные" меняю состояние визы на "Нет обратной связи". По данной логике все работает, состояние соответствующей записи меняется на "Нет обратной связи", однако уведомление о визе на коммуникационной панели не пропадает.  

Кто-нибудь сталкивался с такой проблемой или же может посоветовать решение ?

Нравится

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

Здравствуйте!

 

Данный пункт "Нет обратной связи" - пользовательський и для системы он не имеет должных настроек для взаимодействия с СТІ-панелью (на уровне UX).

 

Данную задачу можно решить только методами разработки.

 

На форуме есть обсуждение, в котором косвенно упоминаются настройки оповещений: https://community.terrasoft.ua/questions/vizirovanie-otobrazhenie-v-uve…

 

К сожалению, готового протестированного решения сейчас пока что нет.

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

Объект - ContractVisa,

Метод- GetNotificationInfo

Ошибка: При формировании визы по договору получаем значение contract.AccountName и contract.ContactName.

Но если для объекта Account и/или Contact изменить поле для отображения то при получении значения contract.AccountName (contract.ContactName) получаем ошибку Undefined.

Нравится

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

В объекте Contract нет отдельного поля AccountName. Это автоматически созданное поле для первичного поля отображения контрагента:

{
  "UId": "b1b39ef5-5550-41b4-9ad9-77f60c847d89",
  "Name": "Account",
  "CreatedInSchemaUId": "897be3e4-0333-467d-88e2-b7a945c0d810",
  "ModifiedInSchemaUId": "897be3e4-0333-467d-88e2-b7a945c0d810",
  "CreatedInPackageId": "1401a881-7126-4c81-86f8-4e9e355b0669",
  "DataValueTypeUId": "b295071f-7ea9-4e62-8d1a-919bf3732ff2",
  "ReferenceSchemaUId": "25d7c1ab-1de0-4501-b402-02e0e5a72d6e",
  "RequirementType": 1,
  "IsIndexed": true,
  "ColumnValueName": "AccountId",
  "DisplayColumnValueName": "AccountName"
},

Соответственно, при изменении первичного поля в настройках объекта Account поле в Contract тоже изменит название. С ContactName всё аналогично.

При смене первичного поля нужно будет везде в коде, где используется старое первичное поле, внести изменения.

 

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

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

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

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

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 комментариев
Показать все комментарии