- Модуль: rpa
- Путь к файлу: ~/bitrix/modules/rpa/lib/model/fieldtable.php
- Класс: BitrixRpaModelFieldTable
- Вызов: FieldTable::mergeSettings
static function mergeSettings(int $typeId, int $stageId, array $fields, string $visibilityType = null): Result
{
$result = new Result();
$skipAdding = [];
$currentSettings = static::getGroupedList($typeId, $stageId, true);
foreach($currentSettings as $visibility => $settings)
{
if(!empty($visibilityType) && $visibility !== $visibilityType)
{
continue;
}
foreach($settings as $field => $setting)
{
if(!isset($fields[$visibility]) || !in_array($field, $fields[$visibility], true))
{
static::delete($setting['ID']);
}
else
{
$skipAdding[$visibility][$field] = $field;
}
}
}
foreach($fields as $visibility => $visibilityFields)
{
foreach($visibilityFields as $field)
{
if(!isset($skipAdding[$visibility][$field]))
{
$addResult = static::add([
'TYPE_ID' => $typeId,
'STAGE_ID' => $stageId,
'FIELD' => $field,
'VISIBILITY' => $visibility,
]);
if(!$addResult->isSuccess())
{
$result->addErrors($addResult->getErrors());
}
}
}
}
return $result;
}