Тонкости работы сценария "Поиск РКК"

6 4

В этой статье, пойдет речь о том, какие механизмы используются в работе сценария "Поиск РКК", как связанны реквизиты карточки справочника РКК и сценарий "Поиск РКК", а так же будут приведены рекомендации по модификации сценария. 

Сперва, давайте разберемся, как работают механизмы создания РКК и заполнения соответствующих реквизитов. А далее посмотрим, как работает сценарий "Поиск РКК".

1. Создание карточки РКК. 

Когда пользователь создает новую карточку в справочнике РКК, он видит множество различных реквизитов, которые ему предстоит заполнить. Однако пользователь не догадывается, что у РКК ещё существует немало скрытых от его глаз, реквизитов. Например, пользователь видит реквизит "Группы Документов"(системное имя: LongString2), заполняет его, и в этот момент, в скрытый реквизит "Группа документов"(системное имя: ГруппаДок) записываются, выбранные пользователем, группы.

Событие заполнения скрытого реквизита происходит в соответствии с кодом вычисления, который можно посмотреть в компоненте "Типы справочников", на закладке реквизиты, в графе "Вычисление" для реквизита LongString2.

2. Поиск РКК глазами пользователя. 

Когда пользователь запускает сценарий "Поиск РКК", он видит перед собой форму, на которой перечислены различные реквизиты карточки, среди которых - графа "Группа документов". Пользователь считает, что это и есть тот самый реквизит с карточки РКК "Группы Документов"(системное имя: LongString2). Однако, это разные реквизиты: в поиске участвует скрытый реквизит карточки РКК "Группа документов"(системное имя: ГруппаДок), а реквизит "Группы Документов"(системное имя: LongString2), напрямую в поиске - не участвует.

Теперь, рассмотрим принцип работы сценария "Поиск РКК".

3. Принцип работы сценария "Поиск РКК".

Сценарий использует очень интересный механизм, а именно: в  сценарии всего одна строчка - вызов функции КНЦРККПоиск(;"РКК"). Эта функция работает со справочником "Система поиска РКК"(код справочника: ПРК. Далее в тексте: "ПРК"), следующим образом: 

  • проверяет, есть ли в этом справочнике запись с именем текущего пользователя + строчка, которую передали в функцию (в нашем случае - это «РКК»);
  • если запись есть, то открывает ее карточку;
  • если записи нет, то создает ее.

Таким образом, когда пользователь запускает сценарий "Поиск РКК" - открывается карточка справочника "ПРК".



Далее, пользователь редактирует карточку, сохраняет значения в соответствующих реквизитах, и жмет на кнопку Поиск. Кода на этой кнопке тоже не очень много - в результате вызывается сценарий с кодом "ExecuteRRCSearch", который в свою очередь, сводиться к вызову функции КНЦРККПоискСписокДоп(). Вся разгадка кроется в этой функции. В ней формируются SQL-запросы, в результате которых возвращаются записи РКК. Функция содержит переменную NameReqRRC, в которой указаны реквизиты карточки ПРК. Эта переменная используется при формировании Where части SQL запроса для поиска РКК на основании указанных в ней реквизитов.

 

Из всего вышесказанного, вытекают следующие рекомендации по модификации сценария "Поиск РКК":

1. Если карточка РКК была модифицирована, убедитесь, что все скрытые реквизиты, которые участвуют в поиске РКК, корректно заполняются в процессе создания новой карточки РКК.

2. Если на карточку РКК добавлен новый реквизит (например "LongString4"), чтобы добавить возможность поиска по новому реквизиту карточки РКК в сценарии "Поиск РКК" - выполните следующие шаги:

  1. С помощью компоненты "Типы справочников", откройте справочник "ПРК".
  2. На закладке "реквизиты", добавьте реквизит, который был добавлен на карточку РКК - "LongString4".
  3. С помощью кнопки Форма откройте форму карточки, и вынесите на форму новый реквизит. Сохраните изменения.
  4. Дополните переменную NameReqRRC в функции КНЦРККПоискСписокДоп примерно в 19 строке, следующим образом, если реквизит справочного типа:

& "|<системное имя реквизита справочника ПРК>"

Если реквизит имеет тип "строка", следует добавить признак строкового реквизита: ..S

Пример:

  & "|LongString4..S"

Сохраните изменения. Теперь возможно осуществлять поиск по новому реквизиту.

Материал написан для системы DIRECTUM версии 4.6.1. 

Пока комментариев нет.

Авторизуйтесь, чтобы написать комментарий