Вопрос

Объект - 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 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать