Незважаючи на те, що повнотекстовий пошук на платформі 8.3 був анонсований розробниками досить давно (з платформи 8.3.5), в типових конфігураціях активно він не застосовувався. В останніх релізах Бухгалтерії підприємства 3.0 в багатьох списках розробники включили повнотекстовий пошук. Для моїх користувачів це виявилося шоком - програма перестала шукати.
Звичайно, повнотекстовий пошук працює, але користувачі, не бачачи вікна "Знайти" плутаються. Звичайний сценарій використання: Починають введення з клавіатури, в процесі введення з'являється вікно "Знайти", де вказано поле, в якому буде здійснено пошук, шуканий текст і режим пошуку "По частині рядка".
При натисканні на кнопку введення список фільтрується, над списком з'являється рядок стану пошуку. Користувач сам визначає, в якому поле і що він шукає. Новий пошук починає працювати відразу ж при введенні і діє на всі поля, відображені в списку. Окреме вікно не з'являється, кольором підсвічуються всі збіги пошукових слів.
Кілька днів ми жили з новим пошуком. Користувачі мучилися, скаржилися, саботували. Скарги не припинялися, керівництвом було поставлено завдання "зробити все як було".
З чого почати? Потрібно зрозуміти, чим відрізняються форми один від одного. Вивантажив вихідні коди конфігурації з новим поведінкою пошуку і зі старим і порівняв вихідні форм.
За функціональність нового повнотекстового пошуку відповідає доповнення елемента форми з типом "Рядок пошуку". Стало зрозуміло, що шукати. Знайшов статтю на ІТС 7.3.1.5. Пошук в динамічному списку. Вивчення цієї статті призвело до висновку, що новий варіант роботи пошуку залежить від двох чинників: 1. У форми повинно бути вищевказане доповнення елемента форми, 2. Динамічний список на формі повинен мати властивість "ПоложеніеСтрокіПоіска" нерівний "Ні".
За ідеєю, досить при створенні на сервері форми привласнити властивості списку "ПоложеніеСтрокіПоіска" значення "ПоложеніеСтрокіПоіска.Нет", проте не з усіма формами це спрацьовувало, в деяких випадках новий пошук продовжував працювати. Програмно видалити не створює програмно елементи форми ми не можемо, однак можна управляти видимістю. Якщо у елемента форми "ДополненіеСтрокаПоіска" прибрати видимість, повнотекстовий новий пошук так само перестає працювати. В ході експериментів народився наступний код, який я помістив в загальному модулі:
В процедуру "ОтключеніеНовогоПоіскаВСпісках" потрібно передати виправляти форму. Але як же це зробити для всіх форм відразу?
Друге рішення - при відкритті форми викликати процедуру, яка буде програмно відключати новий пошук. Процедуру можна викликати з будь-якої іншої процедури, запуск якої вже прописаний у всіх формах, в цьому випадку при подальших оновленнях нам потрібно буде тільки стежити за цією процедурою - щоб вона не змінилася. Я вибрав ОбщійМодуль.УправленіеПечатью, в якому є:
Ця процедура викликається при створенні на сервері форми для заповнення команд друку. У цій процедурі пишемо код, що викликає нашу функцію відключення нового пошуку в списках:
Бухгалтера насолоджуються старим пошуком, а ми готуємося до того моменту, коли режим сумісності "Бухгалтерія підприємства 3.0" дозволить нам перенести цей функціонал в розширення.