Пользовательские справочники

При помощи Пользовательские сущности вы можете организовать хранение и использование пользовательских справочников, данные которых хранятся, например, в других системах (приложениях). Обновление данных справочника можно реализовать при помощи скриптовой автоматизации, которая будет запускаться по расписанию, либо в ручном режиме.

Пример обновления справочника из XML

В этом примере мы работаем с пользовательской сущностью, с уже настроенными атрибутами.

В настройках проекта, в разделе Пользовательские действия, создаем новое действие для нашей пользовательской сущности:

В качестве параметра указываем поле XML типа "текстовое поле", отмечаем галочкой признак того, что данное пользовательское действие будет применяться для создания строк справочника.

На вкладке PHP-скрипт размещаем скрипт, который парсит переданный XML и формирует строки справочника на основе данных из XML:

$doc = new \DOMDocument("1.0", APP_ENCODING);
$doc->loadXML($it->get('xml'));

$text = "";
foreach(libxml_get_errors() as $error) {
    $text .= $error->message;
}
if ( $text != '' ) getFactory()->error($text);
                
$custom = getFactory()->getObject('custom_ChangeNotifications');
foreach ($doc->firstChild->childNodes as $child) 
{
    if (! $child instanceof \DOMElement) continue;
    
    getFactory()->mergeEntity($custom, [
            'Caption' => $child->getAttribute("Обозначение"),
            'Author' => $child->getAttribute("Автор"),
            'MainCode' => $child->getAttribute("УникальныйИдентификатор")
        ], 
        ['MainCode']
    );
}

здесь предполагается следующее:

  • ссылочное имя параметра для пользовательского действия: xml
  • название таблицы для пользовательской сущности: custom_ChangeNotifications
  • у пользовательской сущности созданы доп. атрибуты: Author и MainCode, причем MainCode является уникальным полем, позволяющим реализовать обновление данных, если ранее такая строка уже была добавлена.

Переходим в пользовательский справочник и запускаем пользовательское действие:

В журнале событие можно отслеживать историю обновления справочника и возможные проблемы, которые могут возникать при работе скрипта.