Параметры парсера импортируемых файлов


НАЧАЛО >> Синхронизация записей >> Параметры парсера импортируемых файлов📄 Скачать в DOCX


При импорте из каталога Syncer читает файл из входного пути и передает его содержимое функции-парсеру, заданной в настройках синхронизации:

Функция вызывается с двумя аргументами:

array func($syncOptionsRecord, $fileContents)

$syncOptionsRecord - это запись настроек текущей синхронизации после инициализации управляемых переменных. Через этот объект парсер получает не только стандартные поля Syncer, но и дополнительные параметры, если они добавлены в запись настроек или читаются из ее полей напрямую.

Например, парсер может использовать имя целевой базы, входной каталог и собственный параметр отбора. В примере 8^L - условное дополнительное подполе записи настроек, зарезервированное внедрением:

function Exec($syncOptionsRecord, $fileContents)
{
    $targetDb = $syncOptionsRecord->dbname;
    $sourcePath = $syncOptionsRecord->inPath;
    $importMode = $syncOptionsRecord->GetSubField(8, 1, 'L');

    return array(
        'recid' => $this->ReadIdentifier($fileContents, $importMode),
        'targetDb' => $targetDb,
        'sourcePath' => $sourcePath,
    );
}

Такой подход позволяет хранить параметры конкретного обмена рядом с остальными настройками Syncer и не создавать отдельные версии парсера для каждого варианта загрузки.

1. Что должен вернуть парсер

Парсер должен вернуть массив с данными, по которым Syncer найдет или создаст целевую запись:

Если mfn и recid не заполнены, при запуске через action Syncer/Sync создается новая запись и дальше передается в функцию слияния.

2. Связь с функцией слияния

После разбора файла Syncer вызывает функцию слияния, заданную полями inModule и inFunction. В нее передается база, найденная или новая запись и весь массив, который вернул парсер:

func($db, $record, $data)

Поэтому парсер может передать в $data не только найденный идентификатор, но и параметры обработки, разобранные значения и служебные признаки. Функция слияния сохраняет запись, если возвращает успешный результат.

3. Практические правила