Стандартизация ФИО

2

Разработчик: Алексеев Алексей

Установлено: Менее 50

Обновлено: 06.03.2025

Адаптирован под мобильные устройства

Совместим с редакциями Битрикс: «Первый сайт» / «Старт» / «Стандарт» / «Малый бизнес» / «Бизнес» / «Энтерпрайз» / «Корпоративный портал» / «Интернет-магазин + CRM» /

Модуль позволяет определить, какая часть в ФИО является именем, фамилией и отчеством.

Модуль позволяет собирать, размечать и стандартизировать ФИО существующих пользователей главного модуля(main) и модуля Интернет-магазина(sale) локально, без запросов по API к сторонним сервисам.

Доступно улучшение определения ФИО с помощью собственных правил определения ФИО.

Есть возможность загрузить собственные наборы данных для более точного определения и стандартизации.
Разработчик модуля предоставляет услугу установки набора данных. Ознакомиться со стоимостью и приобрести код доступа к услуге можно по ссылке.

Опционально:
  1. Расстановка ФИО в полях пользователя главного модуля(main) при добавлении и изменении.
  2. Установка пола пользователя главного модуля(main)
  3. Восстановление третьей части ФИО, которая теряется при использовании штатного компонента оформления заказа.
  4. Исправление ошибок ввода ФИО пользователей.
Модуль можно использовать совместно с API DaData "Стандартизация ФИО":
  1. Результат определения ФИО модулем можно представить в виде результатов от API DaData.
  2. API DaData можно использовать как правило определения ФИО модулем.
Модуль можно использовать совместно с API Ahunter "Стандартизация ФИО":
  1. Результат определения ФИО модулем можно представить в виде результатов от API Ahunter.
  2. API Ahunter можно использовать как правило определения ФИО модулем.
Установка

Установка решения имеет два шага. Первый обязательный, второй необязательный. На втором шаге устанавливается набор данных. Для установки набора данных потребуется код доступа к услуге.

Установка набора данных - не обязательное условие работы модуля. В ознакомительных целях предоставляется код доступа DEMO с ограниченным набором данных.

После установки идет переход к странице импорта собственных наборов данных в формате .jsonl. Со страницы импорта можно вернуться ко второму шагу установки.



Настройка

По умолчанию вся опциональная функциональность модуля отключена.
Перейдите в настройки модуля через боковое меню в административной панели: Сервисы > Стандартизация ФИО > Настройки.
На первой вкладке включите опции функционала, которые вам нужны.

На второй вкладке отображаются правила определения ФИО. Показывается информация о порядке применения правил, какую часть ФИО определяет правило. Часть из них опциональные. Например, правило "Фамилия определена через API DaData".

Третья вкладка доступа стандартная. Фактически сейчас уровни доступа: есть/нет



Сценарии использования модуля

  • Нет наборов данных, нет программиста, есть много времени. Переходим Сервисы > Стандартизация ФИО > Неизвестные имена. В дополнительных действиях к кнопке "Обработать" выбираем "Найти неизвестные имена". Найденные имена размечаем с помощью действий для списка. Например, фильтруем "%ова", выбираем все найденные, отмечаем, что это женские фамилии. После разметки ставим отметку о добавлении в локальную базу имён через групповые действия и нажимаем "Обработать". Размеченные данные попадают в таблицы локальной базы имён и используются правилами определения ФИО.
  • Есть наборы данных, нет программиста. Переходим Сервисы > Стандартизация ФИО > Импорт. Загружаем набор данных в локальную базу имён, в соответствующую таблицу.
  • Нет наборов данных, есть программист. Добавляем с помощью события формирования списка правил собственные правила определения ФИО.
Общие действия для всех сценариев. Переходим Сервисы > Стандартизация ФИО > Стандартизация. Здесь можно запустить процесс исправления ФИО существующих пользователей главного модуля(main), ознакомиться с локальной базой стандартных форм имён и отладочной информацией. Отладочная информация показывает какие данные заходили на вход, какие вышли, какие правила применились, в каком контексте выполнялось определение.


Сценарии использования для программиста:
1. Использование события для добавления своего правила.
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler(
    "alekseev.fio",
    "OnDetectorRulesListBuild",
    "buildMyRuleList"
);
function buildMyRuleList($event) {
    return new \Bitrix\Main\EventResult(
        \Bitrix\Main\EventResult::SUCCESS,
        [
            (new \Alekseev\Fio\Detector\Rules\BuildRule(
                "\My\Module\MyCustomRule"
            ))
            ->setSort(500)
            ->setFile("/local/modules/my.module/lib/custom.php"),
        ]
    );
}
2. Свое правило в /local/modules/my.module/lib/custom.php
namespace My\Module {
    use Alekseev\Fio\Detector;
// Создаем опциональное правило
    class MyCustomRule extends Detector\Rules\OptionalRule {
        // Должно возвращать одну из трех констант Detector\Score::F\I\O
        public function getScoreFlag(): int
        {
            // Определяет отчества.
            return Detector\Score::O;
        }

        public function getCode(): string
        {
            return "MY_CUSTOM_RULE";
        }

        public function getTitle(): string
        {
            return "Мое правило определения ФИО";
        }

        /**
         * Примеры реализации метода в готовых правилах
         * \bitrix\modules\alekseev.fio\lib\detector\rules
         */
        public function resolve(): Detector\Rules\Result
        {
            // Ничего не делаем. Пустой результат.
            return new Detector\Rules\Result();
        }
    }
}
3. Определение ФИО
use Alekseev\Fio\Detector\Resolver;
use Alekseev\Fio\Detector\DaDataResult;

\Bitrix\Main\Loader::includeModule("alekseev.fio");

$detector = new Resolver("Иванович Иван Иванов");

// Массив с полями как тут dadata.ru/api/clean/name/
$array = (new DaDataResult($detector))->asArray();

$lastName = $detector->getLastName();
// И т.д. примеры смотри в исходниках.
// Например, в файле /bitrix/modules/alekseev.fio/eventhandlers/mainuser.php

Свои реализации правил можете присылать на почту alekseev.aleksey.in@gmail.com. После проверки добавлю в поставку модуля.