Поиск значений

Удобный поиск ссылок и простых значений.
Искать можно ВСЕ, в т. ч. ссылки на планы видов характеристик, планы видов расчета, бизнес-процессы, задачи.
Ищет ВЕЗДЕ — даже в регистрах накопления / бухгалтерии / расчетов и в последовательностях!
В поиск включены служебные (предопределенные), общие реквизиты.
Есть возможность прервать поиск.

Обработка выполняет поиск указанных значений в базе данных.

Версия 1.7 от 8 сентября 2014 г.

В обработке не используется типовой механизм поиска ссылок. Для поиска значений обработка анализирует структура метаданных конфигурации, находит реквизиты, имеющие тип искомого значения и строит запросы к таблицам, содержащим эти реквизиты. Отличия от типового механизма:

  • поиск простых значений (числа, строки, даты)*;
  • поиск в регистрах, подчиненных регистратору (в т. ч. в регистрах накопления, бухгалтерии, расчетов);
  • поиск в служебных реквизитах (регистратор, вид расчета, счет и т. п.);
  • для записей регистров бухгалтерии определяется номер субконто, содержащего искомое значение;
  • определение реквизитов, содержащих искомые значения.

Особенности интерфейса

  • отображение найденных ссылок в виде дерева;
  • удобный переход к найденным объектам (в т. ч. к записям регистров) двойным кликом;
  • возможность прервать процесс поиска;
  • обработка может подключаться как внешняя печатная форма.

Известные баги (фичи?)

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

* Теоретически возможно сделать поиск булевого значения, но я эту возможность убрал за ненадобностью.

Новое в версии 1.3

  • Исправлена сортировка документов по дате
  • Добавлена возможность подключения обработки как внешней печатной формы
  • Выведена кнопка «Справка»

Новое в версии 1.4

  • Исправлена ошибка при поиске в справочниках (планах видов характеристик и т. п.), у которых нет ни кода, ни наименования.

Новое в версии 1.5

  • Добавлена возможность сохранения/восстановления настроек.

Новое в версии 1.6

  • Добавлен поиск в общих реквизитах;
  • Добавлен поиск в последовательностях;
  • Обновлены картинки метаданных и сделаны небольшие интерфейсные доработки.

Новое в версии 1.7

  • Исправлена критическая ошибка, из-за которой не производился в некоторых реквизитах объектов;
  • Немного изменены тексты запросов, чтобы избежать возникновения ошибок при совпадении псевдонимов таблиц и реквизитов;
  • Добавлена кнопка проверки наличия обновлений.

Начиная с версии 1.6 обработка работает с платформой не ниже 8.2 (с поддержкой общих реквизитов) в режиме обычного приложения. Для работы с платформой 8.1 используйте версию 1.5.

23 Comments

  1. Helper

    Вопрос — можно ли этой обработкой найти Серийный номер (не Серию), указанный в документе реализации. Попробовал — пригоняет только ссылку на справочник. Может что-то в настройках не верно выставил.

    Reply
  2. sashocq

    Серийный номер — это тоже элемент справочника. Делай поиск по ссылке на элемент этого справочника.

    Reply
  3. elizarovs

    Всё просто, понятно и красиво. Нужная вещь в инструментах.

    Reply
  4. Borisych

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

    В остальном — попользуюсь — отпишусь.

    Кстати поиск строки — только по полному совпадению — попробуй реализовать по частичному вхождению введенной подстроки поиска.

    Возможность открытия формы списка для объектов (хотя бы доков и справочников, естественно с позиционированием на текущем элементе // ПараметрТекущаяСтрока)

    Reply
  5. Borisych

    Да и кнопки «Сохранить/восстановить значение» тоже востребованы

    Reply
  6. Borisych

    Отображение номера строки ТЧ — полезно! (Юзал обработку — искал номенклатуру)

    Reply
  7. sashocq

    (4, 5) Спасибо за полезные предложения, учту.

    Reply
  8. e.kogan

    Повторяю здесь на всякий случай своё пожелание — реализовать подключение обработки как внешней печформы.

    И ещё одно: документы внутри ветки неплохо бы сортировать по дате.

    Reply
  9. sashocq

    Обновлено с учетом пожеланий по просьбам трудящихся 🙂

    Сохранение / восстановление тоже добавлю в ближайшее время.

    P.S. Прошу прощения за задержку

    Reply
  10. stol6

    Глюконат!

    Задаю поиск по простому типу — число. Хрен что ищет, резултат поиска таков:

    {ВнешняяОбработка.ПоискЗначений(251)}: Ошибка при вызове метода контекста (Выполнить): {(1, 52)}: Поле не найдено «Ссылка.Код»

    ВЫБРАТЬ Строка КАК Ссылка,Ссылка КАК Данные,Ссылка.<<?>>Код КАК Представление0,»Строка» КАК ИмяРеквизита,»Изменения» КАК ИмяТабЧасти,НомерСтроки КАК НомерСтроки ИЗ Справочник.ЖурналРегистрацииИзмененияОбъектов.Изменения КАК Таблица ГДЕ Строка В (&Элементы) УПОРЯДОЧИТЬ ПО Ссылка,Данные,ИмяТабЧасти,НомерСтроки,ИмяРеквизита

    Результат = Запрос.Выполнить();

    Reply
  11. sashocq

    (10) Можно уточнить, какая конфигурация? И есть ли у справочника «ЖурналРегистрацииИзмененияОбъектов» Наименование, Код и какое основное представление (Код или Наименование)? Если производить поиск по ссылке, чей тип тоже содержится в реквизите таб. части «Изменения» этого справочника тоже возникает ошибка?

    И, наконец, нормально ли, что таб. часть справочника имеет имя «Изменения». Я с этим ни разу не сталкивался, но ведь Справочник.ИмяСправочника.Изменения — это зарезервированное имя таблицы изменений данного справочника!

    Reply
  12. sashocq

    (10) Ситуация воспроизвелась для справочника, у которого нет ни кода, ни наименования. Пока сделал, чтобы выходило пустое представление «<>». Дойдут руки — сделаю, чтобы что-нибудь человеческое писалось.

    Спасибо за сообщение об ошибке 🙂

    Reply
  13. sashocq

    (10) И, кстати, странно: конфигуратор дал создать табличную часть с именем «Изменения» и зарегистрировать этот справочник в плане обмена.

    В этом случае запрос «ВЫБРАТЬ * ИЗ Справочник.ИмяСправочника.Изменения КАК Спр» выдает данные именно табличной части. Т.е. обратиться к таблице изменений в этом случае нельзя!

    Reply
  14. husky

    Респект!

    Reply
  15. EugenLiquor

    Нужные функции, надо будет протестировать эту обработку!

    Reply
  16. Nebiros777

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

    Reply
  17. gull22

    А можно сюда фильтр прикрутить, чтобы искать только но интересующим объектам метаданных?

    Reply
  18. sashocq

    (18) gull22, есть такое в планах. Но только для УФ. Сейчас разрабатываю для себя с расширенным функционалом. Но сроки назвать не могу.

    Reply
  19. sommid

    спасибо. помогло разобраться — не мог понять, почему поиск ссылок показывал документы, а в них я в упор никак нимог найти ту ссылку, которая там якобы была. Оказалось причина в последовательности, к которой относились эти документы и уже в последовательности были ссылки на искомый объект.

    Правда на ошибку свалилось 🙂

    Конфигурация УТ 11

    «Ошибка выполнения запроса по таблице РегистрСведений.ТаблицыГруппДоступа:

    {ВнешняяОбработка.ПоискЗначений.МодульОбъекта(382)}: Ошибка при вызове метода контекста (Выполнить)

    Выборка = Запрос.Выполнить().Выбрать();

    по причине:

    {(1, 182)}: Неоднозначное поле «Таблица.ТипТаблицы»

    ВЫБРАТЬ Таблица.ТипТаблицы КАК Ссылка,Таблица.Таблица КАК Ключ0,Таблица.ГруппаДоступа КАК Ключ1,»ТипТаблицы» КАК ИмяРеквизита ИЗ РегистрСведений.ТаблицыГруппДоступа КАК Таблица ГДЕ <<?>>Таблица.ТипТаблицы В (&Элементы) УПОРЯДОЧИТЬ ПО Ссылка,Ключ0,Ключ1,ИмяРеквизита

    Текст запроса: ВЫБРАТЬ Таблица.ТипТаблицы КАК Ссылка,Таблица.Таблица КАК Ключ0,Таблица.ГруппаДоступа КАК Ключ1,»ТипТаблицы» КАК ИмяРеквизита ИЗ РегистрСведений.ТаблицыГруппДоступа КАК Таблица ГДЕ Таблица.ТипТаблицы В (&Элементы) УПОРЯДОЧИТЬ ПО Ссылка,Ключ0,Ключ1,ИмяРеквизита»

    Видимо пересеклись псевдонимы реального реквизита и вашего служебного

    Reply
  20. sashocq

    (20) sommid, спасибо за сообщение. Опубликовал новую версию 1.7. Думаю, алиас «_Т_а_б_л_и_ц_а_» уже ни с чем не будет конфликтовать. Попутно исправил одну критическую ошибку (из-за нее не во всех реквизитах производился поиск). Обязательно скачайте эту новую версию.

    Reply
  21. sommid

    (21) маней не так много, а повторное скачивание к сожалению так же их списывает как и первое :(.

    но будем иметь ввиду.

    Reply
  22. hakerxp

    sashocq, а как быстр ваш механизм поиска ссылок по сравнению с функцией НайтиПоСсылкам()?

    Reply
  23. sashocq

    (23) hakerxp, точно не знаю. Думаю, почти так же. Для поиска производится анализ метаданных и для каждого из объектов, где может встретиться ссылка, выполняется по одному запросу. Стандартный метод подвешивает систему и она не отвиснет, пока метод не отработает. В моей обработке отображается текущее состояние (в какой таблице производится поиск) и поиск можно прервать. Главное, стандартный НайтиПоСсылкам() показывает не все, что мне хотелось бы видеть. Например, если ссылка на что-то есть в последовательности, то стандартная функция вернет просто ссылку на документ. Моя обработка покажет последовательность и значения ключа измерений.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *