Рассчитать сумму в скрипте в ABBYY Flexicapture
Я хотел бы выполнить функцию правила Calculate Sum с правилом Script в ABBYY Flexicapture, потому что я хочу выполнять вычисления только на основе оценки оператора if.
Я пробовал следующее в правиле сценария C#:
IFields AllTaxes = Context.Field("cu_location_taxes").Rows;
что дает мне ошибку "Поле не таблица".
Я также пытался
IFields AllTaxes = Context.Field("cu_location_taxes").Children;
что выдает ошибку "Невозможно получить доступ к полям, не указанным в настройках правила". Хотя я добавил повторяющуюся группу cu_location_taxes в правило сценария C#.
Как только я смогу получить их в виде массива, списка или переменной IFields, я бы хотел каким-то образом суммировать значения потомков. Я открыт для этого с JScript или C#.
1 ответ
Причины ошибок, с которыми вы сталкиваетесь, можно найти в справке ABBYY FlexiCapture. В описании класса IField вы можете найти следующие описания свойств:
Строки - набор строк таблицы. Недоступно для не табличных полей.
Что ж, похоже, что cu_location_taxes - это не таблица. Вы сказали, что это повторяющаяся группа.
Дети - дочерние элементы поля (ячейки для таблиц). Недоступно в правилах сценария. Но, как я понимаю, вы в точности используете правила сценария.
Для достижения правильных результатов старайтесь использовать свойство Items именно из полей, которые вы суммируете.
Например, у вас есть повторяющаяся группа, которая содержит числовые поля field_1 и field_2. И вы хотите вычислить сумму всех экземпляров field_1. Затем вы можете использовать следующий код (JScript):
sum = 0
for (i = 0; i < this.Field("field_1").Items.Count; ++i)
{
sum += this.Field("field_1").Items.Item(i).Value
}
Также не забудьте добавить field_1 в доступные поля настроек вашего правила. Надеюсь, это поможет.