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

Дополнительные условия поиска для Repeating Group

В диалоге свойств элемента Repeating Group есть две вкладки для задания дополнительных условий – Advanced и Advanced for All Instances. На вкладке Advanced*** можно задать дополнительные условия поиска для отдельных экземпляров группы, а на вкладке Advanced for All Instances - для всей коллекции.

Показать диалог Properties

, вкладка Advanced for All Instances

В разделе External Fields for All Instances можно использовать все методы, доступные обычной группе. В том числе можно описывать отношения с уже найденными экземплярами, например:

// Каждый следующий экземпляр ниже предыдущего
if SearchElements.RepeatingGroup.HasInstances then {
  Below: SearchElements.RepeatingGroup.LastFound, 0 * dot;
}
    

В разделе Advanced pre-search relations for all instances можно использовать методы:

  • MinRepetitions
  • MaxRepetitions
  • PaginalMode
  • MinRepetitionsOnPage
  • MaxRepetitionsOnPage

В разделе Post-search relations можно давать оценку очередному экземпляру группы, а в разделе Post-search relations for all instances - всем найденным экземплярам.

Пример для Post-search relations:

// Проверка гипотез подэлементов StaticText1 и StaticText2 внутри повторяющейся группы. Используется последний найденный экземпляр.
if StaticText1.Width() < 200dt and StaticText2.Width() < 200dt then Quality: 0.98;
    

Пример для Post-search relations for all instances:

if InstancesCount() < 5 and LastFound.Pages.End <= 2 then Quality: 0.98;
    

Обращение к экземплярам элемента

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

  • LastFound - последний найденный экземпляр;
  • CurrentInstance - текущий экземпляр при поиске внутри повторяющегося элемента;
  • Instance ( n ) – экземпляр номер n;
  • AllInstances - все экземпляры.

Обращение к подэлементам Repeating Group возможно, даже если подэлемент ниже по дереву. Для работы с экземплярами в языке описания FlexiLayout также используются методы:

  • HasInstances - проверка, нашлись ли уже экземпляры;
  • InstancesCount - количество найденных экземпляров.

Условие окончания поиска экземпляров элемента

Поиск экземпляров прекращается (в данной ветке перебора), если мы наталкиваемся на пустую гипотезу группы (т.е. группы, имеющую пустой регион) или мы не можем сгенерировать больше гипотезу (в области поиска нет гипотез вообще). В случае использования постраничного режима это правило применяется к поиску на одной странице, после окончания поиска на очередной странице, переходим на следующую страницу. На генерацию гипотез также влияют MinRepetitionsOnPage, MaxRepetitionsOnPage, MinRepetitions, MaxRepetitions.

Можно вмешаться в стандартную схему следующими способами:

  1. Последний найденный экземпляр должен быть последним:
    if SearchElements.RepeatingGroup.HasInstances and then DontFind;
    Условие пишется в Advanced pre-search relations for all instances.
  2. Последний найденный экземпляр (для которого и пишем отношения) "плохой", и предыдущий экземпляр должен быть последним (если не найдется другого "хорошего" варианта).
    if then Quality: 0;
    Условие пишется в Advanced post-search relations for all instances.

См. также

Язык описания FlexiLayout

12/1/2020 7:04:05 AM


Please leave your feedback about this article