Создание бизнес-правила (ошибка)

Всем привет!
В карточке договора у меня есть поле выбора контраента. Хочу в списке для выбора показывать не
всех контрагентов, а только, принадлежащих одной заранее определенной отрасли.
Создал замещающий объект, добавил бизнес-правило:

rules: {
          "UsrOSAGOPolicyEnsCompany": {
            "FiltrationEnsCompanyByIndustry": {
              "ruleType": BusinessRuleModule.enums.RuleType.FILTRATION,
              "autocomplete": false,
              "baseAttributePath": "Industry",
              "comparisonType": this.Terrasoft.ComparisonType.EQUAL,
              "type": BusinessRuleModule.enums.ValueType.CONSTANT,
              "value": "ffbf1e56-f36b-1410-c493-00155d043205"
          }
  }
}

Проверяю. Правило не работает (пустой список). В консоли браузера обнаружил сообщение об ошибке:

POST https://myhost/1/DataService/json/SyncReply/SelectQuery 500 (ArgumentNullOrEmptyException)

При выполнении запроса возникла ошибка
        статус ответа: 500 (ArgumentNullOrEmptyException)
        url запроса: ../DataService/json/SyncReply/SelectQuery
        метод: POST
        данные запроса: {"rootSchemaName":"Account","operationType":0,"filters":{"items":{"searchFilter":{"items":{"94caf548-a573-4404-84df-4e20f3ae94cd":{"items":{"undefined...
       
Uncaught Значение аргумента "columnPath" не может быть пустым или неопределенным

Где допустил ошибку?

Нравится

4 комментария

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

Вы некорректно используете бизнес правила. Ваш код должен быть приблизительно следующим:

rules: {
                "UsrOSAGOPolicyEnsCompany": {
                    FiltrationEnsCompanyByIndustry: { 
                        ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,
                        autocomplete: true,
                        autoClean: true,
                        baseAttributePatch: "Industry",
                        comparisonType: Terrasoft.ComparisonType.EQUAL,
                        type: BusinessRuleModule.enums.ValueType.ATTRIBUTE,
                        attribute: "Id"
                    }

В случае использования этого кода, значение поля Industry объекта UsrOSAGOPolicyEnsCompany будет сравниваться с значением поля Id объекта Industry.

Более подробно об использовании бизнес правил Вы можете прочитать здесь.

"Демьяник Алексей Олегович" написал:
В случае использования этого кода, значение поля Industry объекта UsrOSAGOPolicyEnsCompany будет сравниваться с значением поля Id объекта Industry.

Дело в том, что мне не нужен биндинг к объекту Industry. Мне просто нужно сделать доступными для выбора только записи с определенным значениемм поля IndustryId.

Попробуйте сделать так:

rules: {
          "UsrOSAGOPolicyEnsCompany": {
            FiltrationEnsCompanyByIndustry: {
              ruleType: BusinessRuleModule.enums.RuleType.FILTRATION,
              autocomplete: false,
              baseAttributePatсh: "Industry", /*здесь пропущена буква*/
              comparisonType: this.Terrasoft.ComparisonType.EQUAL,
              type: BusinessRuleModule.enums.ValueType.CONSTANT,
              value: "ffbf1e56-f36b-1410-c493-00155d043205"
          }
  }
}

Точно!
Алексей, спасибо большое! Теперь все получилось (ох, уж эти опечатки) :)

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