В этой статье, пойдет речь о том, какие механизмы используются в работе сценария "Поиск РКК", как связанны реквизиты карточки справочника РКК и сценарий "Поиск РКК", а так же будут приведены рекомендации по модификации сценария.
Сперва, давайте разберемся, как работают механизмы создания РКК и заполнения соответствующих реквизитов. А далее посмотрим, как работает сценарий "Поиск РКК".
Когда пользователь создает новую карточку в справочнике РКК, он видит множество различных реквизитов, которые ему предстоит заполнить. Однако пользователь не догадывается, что у РКК ещё существует немало скрытых от его глаз, реквизитов. Например, пользователь видит реквизит "Группы Документов"(системное имя: LongString2), заполняет его, и в этот момент, в скрытый реквизит "Группа документов"(системное имя: ГруппаДок) записываются, выбранные пользователем, группы.
Событие заполнения скрытого реквизита происходит в соответствии с кодом вычисления, который можно посмотреть в компоненте "Типы справочников", на закладке реквизиты, в графе "Вычисление" для реквизита LongString2.
Когда пользователь запускает сценарий "Поиск РКК", он видит перед собой форму, на которой перечислены различные реквизиты карточки, среди которых - графа "Группа документов". Пользователь считает, что это и есть тот самый реквизит с карточки РКК "Группы Документов"(системное имя: LongString2). Однако, это разные реквизиты: в поиске участвует скрытый реквизит карточки РКК "Группа документов"(системное имя: ГруппаДок), а реквизит "Группы Документов"(системное имя: LongString2), напрямую в поиске - не участвует.
Теперь, рассмотрим принцип работы сценария "Поиск РКК".
Сценарий использует очень интересный механизм, а именно: в сценарии всего одна строчка - вызов функции КНЦРККПоиск(;"РКК"). Эта функция работает со справочником "Система поиска РКК"(код справочника: ПРК. Далее в тексте: "ПРК"), следующим образом:
Таким образом, когда пользователь запускает сценарий "Поиск РКК" - открывается карточка справочника "ПРК".
Далее, пользователь редактирует карточку, сохраняет значения в соответствующих реквизитах, и жмет на кнопку Поиск. Кода на этой кнопке тоже не очень много - в результате вызывается сценарий с кодом "ExecuteRRCSearch", который в свою очередь, сводиться к вызову функции КНЦРККПоискСписокДоп(). Вся разгадка кроется в этой функции. В ней формируются SQL-запросы, в результате которых возвращаются записи РКК. Функция содержит переменную NameReqRRC, в которой указаны реквизиты карточки ПРК. Эта переменная используется при формировании Where части SQL запроса для поиска РКК на основании указанных в ней реквизитов.
Из всего вышесказанного, вытекают следующие рекомендации по модификации сценария "Поиск РКК":
1. Если карточка РКК была модифицирована, убедитесь, что все скрытые реквизиты, которые участвуют в поиске РКК, корректно заполняются в процессе создания новой карточки РКК.
2. Если на карточку РКК добавлен новый реквизит (например "LongString4"), чтобы добавить возможность поиска по новому реквизиту карточки РКК в сценарии "Поиск РКК" - выполните следующие шаги:
& "|<системное имя реквизита справочника ПРК>"
Если реквизит имеет тип "строка", следует добавить признак строкового реквизита: ..S
Пример:
& "|LongString4..S"
Сохраните изменения. Теперь возможно осуществлять поиск по новому реквизиту.
Материал написан для системы DIRECTUM версии 4.6.1.
Авторизуйтесь, чтобы написать комментарий