Ошибка при запуске раздела Итоги

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

Возникает ошибка при попытке зайти в раздел Итоги от системного администратора Supervisor.
В ходе исследования проблемы, было обнаружено, что не запускается окно «Продажи на текущий месяц».
Появляется ошибка: Exception Message: Incorrect syntax near the keyword 'AND'.
Ошибка возникает в методе InitScriptExecute в строке select.Condition.Add(queryCondition).
Т.е. если ее закомментировать, то ошибки нет, но и фильтрации нет.
Если запускать отладчик C# и смотреть через него, то программа слетает в методе PageLoadCompleteScriptTaskExecute в строке Page.DataSource.LoadRows().

Версия BPM 5.4.0.317

Нравится

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

Александра, если логика окна «Продажи на текущий месяц» не изменялась, для устранения ошибки следует заменить код скрипта InitScript на:

Page.DataSource.PrepareFilters += delegate(object sender, DataSourceEventArgs e) {
         Page.ThrowEvent("PrepareFilters");          
};
Page.DataSource.Loading += delegate(object sender, DataSourceEventArgs e) {
         var startMonthDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);
         var endMonthDate = startMonthDate.AddMonths(1).AddSeconds(-1);  
         var select = e.SelectQuery;
         var queryCondition = new QueryCondition(select);
         if (select.Condition.Count != 0)
                        queryCondition.LogicalOperation = LogicalOperation.And;
            else
                        queryCondition.LogicalOperation = LogicalOperation.None;
         queryCondition.Exists(new Select(UserConnection).Column(Column.Asterisk())
                                               .From("Invoice")
                                               .Where("Invoice", "OpportunityId").IsEqual("Opportunity", "Id")
                                               .And("Invoice", "OwnerId").IsEqual(Column.Parameter(UserConnection.CurrentUser.ContactId))
                                               .And("Invoice", "PaymentStatusId").Not().IsEqual(Column.Parameter(new Guid("698d39fd-52e6-df11-971b-001d60e938c6")))
                                               .And("Invoice", "DueDate").IsBetween(Column.Parameter(startMonthDate)).And(Column.Parameter(endMonthDate))
         .And("Opportunity", "OwnerId").IsEqual(Column.Parameter(UserConnection.CurrentUser.ContactId))
                   );
         select.Condition.Add(queryCondition);
};
 
return true;

Спасибо, все работает!

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