Інтелектуальне завантаження даних та нечіткий пошук
Практично в кожній організації одного прекрасного дня начальникові спадає на думку полегшити життя простим комірникам. Вони, бідні набивають прибуткові накладні, в той час, як їх надсилають нам поштою в електронному вигляді. І спантеличують штатного або позаштатного програміста завданням зробити завантаження прибуткових накладних автоматичним. Програміст береться за справу і вирішує її в короткий термін, що може бути простіше взяти файл (як правило, це документ екселя) і пробігтися колонками визначаючи колонку з найменуванням номенклатури, кількістю, ціною. Як правило роблять просту перевірку - знайшли номенклатуру за найменуванням - вибрали, якщо не знайшли номенклатуру - створюємо нову автоматично і начхати що відмінність тільки в комі, все одно це нова номенклатура. Це призводить до того, що довідник номенклатури роздмухується, і у нас з'являється безліч дублів номенклатури, вибрати правильну стає важче і починаються проблеми з пересортицею, інвентаризацією та іншим. Якщо програміст більш досвідчений, він виведе форму діалогу, де запропонує користувачеві, який завантажує дані, вибрати правильну номенклатуру або створити нову. Ідеально, якщо пошук при цьому буде інтелектуальним і запропонує варіанти, які мають незначні відхилення в назві номенклатури. Спробуймо створити щось подібне.
Спочатку створимо обробку в ній нашу основну форму, на якій Поле табличного документа в першу колонку ми вноситимемо найменування товару, а в другу кількість, ціна житиме в третій колонці.
Основою системи буде функція пошуку номенклатури, вона використовуватиме наступний механізм:
- Спочатку шукаємо точну відповідність найменування
- якщо не знайшли, шукаємоза таблицею відповідностей (дана таблиця міститиме дві колонки у першій найменування номенклатури постачальника до другої номенклатури з нашої бази).
- у разі невдачі попередніх пунктів задіємо нечіткий пошук, якщо знайшли і користувач вибрав один із запропонованих варіантів, то відповідність «назва постачальника» - «номенклатура обрана користувачем» заноситься в таблицю відповідностей. Таким чином, у нас виходить система з елементами самонавчання.
- Не слід забувати також про можливість створення нової номенклатури.
Загальна структура обробки така:

Основна форма виглядає так:

І має такий код:
Як бачите, ми не створюємо жодного документа, ми просто виводимо знайдену номенклатуру у вигляді повідомлень.
Друга форма це форма вибору відповідностей назви номенклатури постачальника з номенклатурою, внесеною до бази. Наприклад я спеціально прибрав дефіс з назви номенклатури, нечіткий пошук знайшов дві позиції номенклатури. Виглядає так

Код модуля простий:

Якщо при наступному завантаженні трапиться найменування Футболка (кол. т.195) SXXL номенклатура Футболка (кол. т.195) S-XXL буде обрана автоматично, таким чином у нас буде система, яка запам'ятовує вибір користувача і потім аналогічно.
І звичайно код модуля:
Файл обробки викладу у рубриці розробки. Посилання