Интелигентно зареждане на данни и размито търсене

В почти всяка организация един прекрасен ден на шефа му хрумва идеята да улесни живота на обикновените складови стопани. Те, бедните, попълват касови бележки, а на нас ги изпращат по пощата в електронен вид. И те озадачават програмист на пълен работен ден или на свободна практика със задачата да направи зареждането на входящите фактури автоматично. Програмистът се заема със задачата и я решава за кратко време, което може да е по-лесно да вземете файл (обикновено екселски документ) и да преминете през колоните, определяйки колона с името на артикула, количество, цена. Като правило правят проста проверка - намерили са номенклатурата по име - избрали са я, ако не са намерили номенклатурата - създаваме автоматично нова и не ни интересува, че разликата е само в запетая, пак е нова номенклатура. Това води до факта, че справочникът на номенклатурата набъбва и имаме много дубликати на номенклатурата, става по-трудно да изберем правилния и започват проблеми със сортирането, инвентаризацията и други неща. Ако програмистът е по-опитен, той ще покаже диалогова форма, където ще подкани потребителя, който качва данните, да избере правилната номенклатура или да създаде нова. В идеалния случай, ако търсенето е интелигентно и предлага опции, които имат малки отклонения в името на номенклатурата. Нека се опитаме да създадем нещо подобно.

Първо ще създадем обработка в него на основната ни форма, на която ще въведем името на продукта в първата колона, а във второто количество ще живее цената в третата колона.

В основата на системата ще бъде функцията за търсене на артикули, която ще използва следния механизъм:

  1. Първо, търсим точно съвпадение на името
  2. ако не се намери, потърсетеспоред таблицата за съответствие (тази таблица ще съдържа две колони в първата - името на номенклатурата на доставчика във втората номенклатура от нашата база данни.
  3. в случай на неуспех на предходните параграфи, ние използваме размито търсене, ако е намерено и потребителят е избрал една от предложените опции, тогава кореспонденцията „име на доставчик“ - „номенклатура, избрана от потребителя“ се въвежда в таблицата за съответствие. В този ранг получаваме система с елементи на самообучение.
  4. Не трябва да забравяме и възможността за създаване на нова номенклатура.

Общата структура на обработка е следната:

интелигентно

Основната форма изглежда така:

интелигентно

И има следния код:

Както можете да видите, ние не създаваме никакъв документ, ние просто показваме намерената номенклатура под формата на съобщения.

Втората форма е формата за избор на съвпадения между името на номенклатурата на доставчика, с номенклатурата, въведена в базата данни. Например, съзнателно премахнах тирето от името на номенклатурата, размитото търсене намери две позиции на номенклатурата. Изглежда така

зареждане

Кодът на модула е прост:

интелигентно

Ако името T-shirt (col. t.195) SXXL се срещне при следващото зареждане, номенклатурната тениска (номер t.195) S-XXL ще бъде избрана автоматично, този ранг ще бъде система, която запомня избора на потребителя и след това прави същото.

И разбира се кодът на модула:

Ще публикувам файла за обработка в раздела за разработка. Връзка