Russian (Русский) - Change language

Правило проверки по базе данных

Проверка значений полей по базе данных заключается в том, что распознанное значение поля сравнивается со значениями из таблицы базы данных и считается правильным, если значение поля найдено среди значений в базе данных. В противном случае выдается сообщение об ошибке правила.

С помощью данного правила можно проверить вхождение требуемого значения в базу данных, обеспечить нечеткий поиск значения в таблице даже при наличии опечаток\ошибок в значении поля, заменить значение поля документа оригинальным значением из базы данных, скопировать в поля документа необходимые значения из базы данных.

Как создать правило проверки по базе данных

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

  1. Откройте диалог свойств поля (контекстное меню, пункт Cвойства...) или диалог свойств определения документа (меню Редактора определения документа, пункт Определение документа → Свойства определения документа...).
  2. Перейдите на вкладку Правила.
  3. Нажмите кнопку Новое правило....
  4. Из списка типов правил выберите Проверка по базе данных и нажмите ОК.
  5. Введите название правила.
  6. При необходимости отключите опцию Показывать название правила в сообщении верификатору. В этом случае ошибка правил выводится в формате "текст ошибки", а не "название правила: текст ошибки".
  7. Укажите строгость правила.
  8. При необходимости настройте условие запуска правила. По умолчанию правило применяется всегда, подробнее см. Настройка условий запуска правил.
  9. Задайте тэги правила.
  10. При необходимости отключите опцию Правило включено. В этом случае правило будет создано, но не будет выполняться до тех пор, пока пользователь не включит данную опцию.
  11. Нажмите Далее >.
  12. В открывшемся окне укажите тип источника данных и параметры подключения для него. Возможен один из следующих типов источника данных:
    • Внешняя база данных (Обычная) — внешняя база данных, подключение к которой настраиваются в определении документа для каждого правила.
    • Внешняя база данных (Переменная) — внешняя база данных, параметры подключения к которой задаются только в свойствах проекта (Свойства проекта → Переменные окружения). Данный тип источника данных может использоваться для нескольких правил одновременно, что позволяет при использовании проекта с другой базой данных переопределить параметры подключения к внешней базе данных только в свойствах проекта, а не во всех правилах.
    • Набор данных — параметры подключения к базе данных, заданные пользователем в свойствах определения документа (Определение документа → Свойства определения документа..., вкладка Наборы данных).
      Совет. В качестве OLE DB Provider рекомендуется выбирать:
    • При экспорте в SQL - OLE DB Provider for ODBC Drivers.
    • При экспорте в Oracle - Oracle Provider for OLE DB (см. Особенности экспорта в базу данных Oracle).
      Замечание. Для того чтобы при подключении к базе данных не запрашивался пароль, отметьте опцию Allow saving password или настройте базу данных таким образом, чтобы подключение осуществлялось без пароля (например, используйте Windows-аутентификацию).
  13. Выберите из списка схему и таблицу базы данных при подключении к внешней базе данных. Либо укажите необходимый набор данных при подключении к источнику типа Набор данных.
    Замечание. Если в качестве схемы выбран пункт Искать во всех схемах и при этом указанная таблица находится не в схеме по умолчанию, то может возникнуть ошибка вида:
    [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name K1. [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared.
    В случае возникновения ошибки нужно явно указать в настройках имя схемы, в которой находится таблица.
  14. Отметьте опцию Не проверять, если все поля пустые для того, чтобы проверка правила не выполнялась в случае отсутствия значений в полях документа, участвующих в сравнении (это позволит сократить время на проверку правил документа).
  15. Установите соответствие между полями определения документа и полями таблицы базы данных (см. раздел Настройка сравнения полей).
  16. С помощью кнопок Добавить..., Правка... и Удалить можно добавлять, редактировать и удалять связи (соответствия) между полями.
  17. Если в качестве источника данных вы выбрали Набор данных, то из выпадающего списка Поле для сохранения идентификатора записи можно выбрать поле, которое будет являться первичным ключом для записи из Набора данных.

Внимание! Доступ к набору данных может напрямую осуществляться из формы данных через элемент управления типа кнопка (меню Редактора определения документа Форма → Вставить элемент управления → Кнопка). При добавлении кнопки на форму автоматически откроется диалог свойств элемента. На вкладке Формат задайте тип действия Поиск в базе данных и выберите созданное ранее правило проверки по базе данных.

Настройка сравнения полей

В группе Соответствие полей на вкладке Задание параметров правила отображается список настроенных вариантов сравнения полей. Правило проверки по базе данных можно настроить как для одного поля, так и для набора полей.

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

  • Поле документа — поле определения документа, которое участвует в сравнении;
  • Поле базы данных — соответствующее поле таблицы базы данных;
  • Поиск — данная опция позволяет выбрать тип сравнения полей, а именно:
    • Точный — значения полей должны точно совпадать (регистр символов при сравнении не учитывается).
    • Нечеткий — значения полей должны совпадать частично. Данный тип сравнения можно использовать только для текстовых полей.

      Особенности нечеткого поиска

При необходимости можно настроить дополнительные опции:

  • Не выполнять поиск, если поле пустое — если поле документа пустое, то его значение не будет сравниваться со значением из базы.
  • Заполнять из базы данных — если с помощью нечеткого сравнения требуемое значение было найдено в базе данных, то оно автоматически будет подставлено в поле документа в одном из следующих случаев:
    • Если значения различаются;
    • Только если поле пустое.
      Замечание. При точном сравнении полей использование опции Заполнять из базы данных не имеет смысла.
  • Разрешить пустые значения в базе данных — в зависимости от результатов сравнения и настроек данная опция может иметь следующее значение:
    • если в базе данных поле оказалось пустым, а в документе — нет, то считаем, что значения совпадают;
    • если в базе данных поле оказалось пустым, а в документе — нет, но при этом настроено автозаполнение из базы данных, в этом случае значение поля документа не будет заполнено пустым значением из базы.

Функциональность первичного ключа в Наборе данных

Если в вашем проекте есть Набор данных (настроенная локальная копия внешней базы данных — справочник), из которого вы хотите подставлять значения при обработке документов, то в правиле проверки по базе данных можно использовать специальную надстройку.

При помощи нее можно задать поле, которое будет ключом, т.е. уникальным идентификатором записи из Набора данных.

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

  • выбрать другую запись из справочника
  • отредактировать существующую

Диалог редактирования / добавления записей вы можете вызвать из контекстного меню поля, нажав по нему правой клавишей мышей и выбрав пункты Редактировать запись в Наборе данных... / Добавить запись в Набор данных....

При удалении (при нажатии клавиши Del в одном из заполненных полей) данные в полях, связанных с правилом, будут также удалены.

После внесения изменений правило будет перепроверено.

Специфика работы первичного ключа:

  1. Если поле-первичный ключ на форме заполнено, то остальные поля не используются для поиска, а просто заполняются из базы данных. Для этого необходимо сделать нередактируемыми поля, связанные с правилом (отмечена галочка Заполнять из базы данных).
  2. Если поле-первичный ключ не заполнено, то рассматриваются остальные поля, для которых при настройке соответствия полей была отмечена галочка Поиск. Если по этим полям находится уникальная запись, то она будет подставлена из базы данных (аналогично пункту 1).

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

Условия для работы первичного ключа:

  • в качестве источника данных выбран Набор данных;
  • в Наборе данных задан первичный ключ (для поля-первичного ключа отмечена галочка Первичный ключ при настройке соответствия столбцов набора данных);
  • поля-первичного ключа нет в списке Соответствие полей (вкладка Задание параметров правила).

Подробнее о Наборах данных на примере проекта по обработке инвойсов можно ознакомиться в разделе Работа с ABBYY FlexiCapture for Invoices:

См. Подключение справочников поставщиков и подразделений компаний.

См. Поиск в базе данных информации о поставщике и подразделении.

Сравнение набора полей

В данном случае осуществляется поиск подходящей строки таблицы для значений из набора полей, каждое значение из набора сопоставляется разным столбцам найденной строки.

В качестве примера рассмотрим следующий случай:

Настроим сопоставление полей Fa, Fb, Fc документа со столбцами Ta, Tb, Tc таблицы базы данных следующим образом:

  • Значение поля Fa точно соответствует значению Ta;
  • Значение поля Fb нечетко соответствует значению Tb;
  • При выполнении заданных условий значение поля Tc копируется в поле Fc.

Проверка полученных результатов будет завершена успешно, если будет найдена строка таблицы, в которой значение столбца Ta точно совпадает со значением поля Fa, значение столбца Tb нечетко совпадает со значением поля Fb. При заданных настройках значение столбца Tc этой строки будет скопировано в поле Fc.

Если же такая строка не будет найдена, то проверка правила завершится неуспешно, хотя, например, было найдено Ta = Fa и Tb = Fb, но в разных строках.

Замечание. Возможны различные комбинации сравнения набора полей: точное/нечеткое/смешанное сопоставление, отсутствие автозаполнения, произвольное количество полей и т. д.

1/14/2021 2:17:24 PM


Please leave your feedback about this article