• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/copy/implement/children/field.php
  • Класс: BitrixListsCopyImplementChildrenField
  • Вызов: Field::getFieldsToCopy
private function getFieldsToCopy($iblockId, $copiedIblockId)
{
	$fields = [];

	$object = new CList($iblockId);

	foreach($object->getFields() as $fieldId => $field)
	{
		$copiedField = [
			"ID" => $fieldId,
			"NAME" => $field["NAME"],
			"SORT" => $field["SORT"],
			"MULTIPLE" => $field["MULTIPLE"],
			"IS_REQUIRED" => $field["IS_REQUIRED"],
			"IBLOCK_ID" => $copiedIblockId,
			"SETTINGS" => $field["SETTINGS"],
			"DEFAULT_VALUE" => $field["DEFAULT_VALUE"],
			"TYPE" => $field["TYPE"],
			"PROPERTY_TYPE" => $field["PROPERTY_TYPE"],
		];

		if (!$object->is_field($fieldId))
		{
			if ($field["TYPE"] == "L")
			{
				$copiedField["VALUES"] = $this->getEnumValues($fieldId);
			}

			$copiedField["CODE"] = $field["CODE"];
			$copiedField["LINK_IBLOCK_ID"] = $field["LINK_IBLOCK_ID"];
			if (!empty($field["PROPERTY_USER_TYPE"]["USER_TYPE"]))
				$copiedField["USER_TYPE"] = $field["PROPERTY_USER_TYPE"]["USER_TYPE"];
			if (!empty($field["ROW_COUNT"]))
				$copiedField["ROW_COUNT"] = $field["ROW_COUNT"];
			if (!empty($field["COL_COUNT"]))
				$copiedField["COL_COUNT"] = $field["COL_COUNT"];
			if (!empty($field["USER_TYPE_SETTINGS"]))
				$copiedField["USER_TYPE_SETTINGS"] = $field["USER_TYPE_SETTINGS"];
		}
		$fields[] = $copiedField;
	}

	return $fields;
}