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

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

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

Версия 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 не будет опубликован. Обязательные поля помечены *