• Модуль: 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;
}