Альтернативный быстрый поиск. 1C 8.3 управляемое приложение.





Быстрый поиск справочников в управляемом приложении, как альтернатива стандартному механизму.

Маленькая преамбула… Заказчик захотел исключить из списка найденного элементы справочника, которые помечены на удаление. Стандартный механизм быстрого поиска не предусматривает вмешательства извне, поэтому пришлось придумывать что-то свое.

Используется, конечно же, стандартное событие модуля менеджера справочника

ОбработкаПолученияДанныхВыбора(...)

В представленной тестовой базе показана возможность реализации собственного быстрого поиска, который расширяет возможности по сравнению со стандартным.

Основные преимущества:

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

 Как недостаток:

  • Наверное бОльшая ресурсоемкость (меньшая скорострельность), нежели у стандартного. Хотя пользователь этого даже не почувствует.

Из нерешенных проблем:

  • При выборе помеченного на удаление элемента система не переспрашивает: «А действительно ли выбирать помеченный?» (решено)

 Так же, параллельно с представленным механизмом осталась возможность использования стандартного поиска. Для этого достаточно в любом месте редактируемого поля набрать например «//» (две косые)

В текущей базе есть только два справочника: Номенклатура и Клиенты. В справочнике Номенклатура помеченные на удаление элементы из поиска полностью исключены. В Клиентах помеченные на удаление в поиск попадают, но при этом отображаются как «помеченные». В номенклатуре возможен поиск по артикулу и по любому из наименований.

В клиентах — по любому из наименований и по ОКПО.

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

Если еще немного поколдовать над ним, то на основе этого возможно сделать и универсальный механизм, который смог бы определять, например, на основе метаданных, по каким реквизитам требуется производить поиск + в простом виде указание имен дополнительных реквизитов, по которым нужно искать.

 

 

10 Comments

  1. Evg-Lylyk

    http://infostart.ru/public/89892/

    К сведению в 8.3 к сожалению не выводит картинки списка

    Reply
  2. Evg-Lylyk

    «Заказчик захотел исключить из списка найденного элементы справочника, которые помечены на удаление.»

    Это можно сделать через «Параметры выбора»

    Reply
  3. kentavr27

    (1) Evg-Lylyk, не понял… что значит «не выводит картинки списка»? То что вы видите на скринах — это из 8.3. Таки наверное выводит? Изначально делал «по-простому» без заморочек, видел и эту публикацию. Но больше всего меня не устроило то, что «по-простому» (равно как и в публикации) в найденном нет выделения тех блоков, которые набраны пользователем. А выделение — это очень удобно. Если не ошибаюсь, то такая возможность появилась начиная только с 8.3.

    (2) Evg-Lylyk, то, что можно сделать через параметры подозреваю, но в СП описано только в общем, нет деталей и примеров. Что пихать в ключ «Отбор» не совсем понятно. Да и ключи нужно прописывать ВСЕ. Запросом геморроя меньше, результат тот же. А главное, что получилось это дело нормально визуализировать + ничем не ограниченные возможности настройки вывода

    Reply
  4. Evg-Lylyk

    (3)

    «То что вы видите на скринах — это из 8.3. Таки наверное выводит?»

    Раньше пробовал на 8.3 (Такси) не выводил, сразу забросил т.к. без картинок в 8.3 и так все отлично. Сейчас все ОК. Исправили.

    «Что пихать в ключ «Отбор» не совсем понятно.» да вроде все понятно. Для того чтобы исключить помеченные на удаление Отбор.ПометкаУдаления = Ложь

    В коде все равно писать тоже самое

    Reply
  5. Evg-Lylyk

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

    Reply
  6. kentavr27

    (5) Evg-Lylyk, а как Вы задаете картинку? Только что попробовал и в классическом виде УФ, и в Такси. Все выводится, и не важно какой объект МД в списке. Но я картинку подставляю из библиотеки картинок.

    Reply
  7. Evg-Lylyk

    (6) «Evg-Lylyk, а как Вы задаете картинку?» добавляю в конфу… потом когда генерирую список подставляю ее.

    Вы делаете только для справочников для них вроде все ок. Попробуйте для других объектов МД

    вот моя обработка

    Reply
  8. kentavr27

    (7) никаких проблем не нашел. Все картинки выводится, за исключением перечислений (на них нет картинок) и бизнес-процессов (не определено событие в модуле менеджера) 1С:Предприятие 8.3 (8.3.4.437)

    вот: Скрин

    Кроме того (попутно) немножко непонятное поведение поиска справочника (и пр.): если набирать «ути мир», то Путин находится, если набрать «мир ути», то ничего не найдено. Это так задумано?

    И по поиску номера документа, если набрать например «0000» то выводится очень длинный пустой список. А зачем? Либо выводить несколько первых найденных, либо ничего не выводить, либо одно значение типа ПустаяСсылка а представление «…уточните условия поиска» .

    Но это все так, к слову… 🙂

    Reply
  9. kentavr27

    (7) Да… еще одна небольшая проблемка. Лично для себя ответа не нашел. Не хорошо плодить в конфигурации миллион картинок, если можно использовать одну картинку (ну или несколько) типа «коллекция». Но как выдернуть нужное изображение из этой коллекции, я не нашел.

    Reply
  10. Evg-Lylyk

    (8) Да действительно сейчас все ОК (просто заморочился что в старых платформах не работало).

    «Кроме того (попутно) немножко непонятное поведение поиска справочника (и пр.): если набирать «ути мир», то Путин находится, если набрать «мир ути», то ничего не найдено. Это так задумано?»

    Спасибо. Разберусь.

    «И по поиску номера документа, если набрать например «0000» то выводится очень длинный пустой список. А зачем?» это ошибка

    (9) Согласен неудобно плодить, но как «выдернуть» не знаю

    Reply

Leave a Comment

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