{*
  Шаблон вычисления "Копировать поле из подтаблицы в основную запись"
*}
{if $record == "all" || $add_value == 'yes'}
$sep = $fix = '';
$field_type = {$cur_field_type};
$res_field = sql_select_array(FIELDS_TABLE, 'id = ', get_field_id({$gen_field.field|substr:1}));
if (in_array($field_type, [6, 9]) || ($field_type == 4 && $res_field['mult_value'])) {
    $sep = "\r\n";
} elseif (in_array($field_type, [5, 7, 14]) && $res_field['mult_value']) {
    $sep = $fix = '-';
} elseif ($field_type == 3) {
    $sep = "{$add_delim}";
}
{/if}
$filter = sql_select_array(FILTERS_TABLE, 'id = ', get_filter_id({$filter|default:0}));
$arr_id = explode('-', trim($line['{$gen_field.link_field_id}']['raw'], '-'));
foreach ($arr_id as $par_id) {
    // выбор данных из бд
    $result = data_select_field($table_id, 'id, {$cur_field}',
        'status = 0 AND ({$gen_field.link_field_id} = ', $par_id, ' OR {$gen_field.link_field_id} LIKE "%-' . $par_id . '-%")' .
        ($event['type'] === 'delete' ? ' AND id != ' . $ID : '') .
        ($filter['value'] ? ' AND (' . filter_tpl_replace($filter['value']) . ')' : '') .
        ' ORDER BY id {if $record == "last"}DESC{/if} {if $record != "all"}LIMIT 1{/if}');
{if $record != "all" and $add_value == 'no'}
    $row = sql_fetch_assoc($result);
    $new_value = $row['{$cur_field}'];
{if $cur_field_type == 6 || $cur_field_type == 9}
    $files = explode("\r\n", $new_value);
    $fieldId = {$cur_field|substr:1};
    $lineId = $row['id'];
    foreach ($files as $fname) {
        if(!$fname) {
            return;
        }
        // Получаем объект поля
        $fieldsRep = \CB\Data\Fields\FieldRepository::getInstance();
        $field = $fieldsRep->get($fieldId); // Находим поле по id поля. Чтобы получить id таблицы

        if (!$field) {
            return;
        }

        $tableId = $field->get('table_id'); // Получаем ID таблицы
        $commonData = \CB\Core::get(\CB\Core::COMMON_DATA); // Получаем объект работы с данными
        $tableModels = $commonData->getTable($tableId); // Получаем объект таблицы

        if (!$tableModels) {
            return;
        }

        if (!$lineId) {
            return;
        }

        $recordObject = $tableModels->getRecord($lineId); // Получаем объект записи

        if (!$recordObject) {
            return;
        }

        $curFilesObject = $recordObject->get('f' . $fieldId); // Получаем объект поля

        if (!$curFilesObject) {
            return;
        }
        save_data_file({$gen_field.field|substr:1}, $par_id, $fname, $curFilesObject->getContent($fname));
    }
{/if}
{else}
{if $add_value == 'yes'}
    $old_value = sql_fetch_row(data_select_field({$gen_field.table}, '{$gen_field.field}', 'id = ', $par_id))[0];
    if (in_array($field_type, [6, 9]) || (in_array($field_type, [4, 5, 7, 14]) && $res_field['mult_value'])) {
        $arr_value = explode($sep, trim($old_value, $sep));
    } else {
        $arr_value = [$old_value];
    }
{else}
    $arr_value = [];
{/if}
    while ($row = sql_fetch_assoc($result)) {
        if (in_array($field_type, [6, 9]) || (in_array($field_type, [4, 5, 7, 14]) && $res_field['mult_value'])) {
            $arr_new_value = explode($sep, trim($row['{$cur_field}'], $sep));
            foreach ($arr_new_value as $one_value) {
                if (in_array($one_value, $arr_value)) continue;
                $arr_value[] = $one_value;
                if (in_array($field_type, [6, 9])) {
                    $fieldId = {$cur_field|substr:1};
                    $lineId = $row['id'];
                if(!$one_value) {
                    return;
                }
                // Получаем объект поля
                $fieldsRep = \CB\Data\Fields\FieldRepository::getInstance();
                $field = $fieldsRep->get($fieldId); // Находим поле по id поля. Чтобы получить id таблицы

                if (!$field) {
                    return;
                }

                $tableId = $field->get('table_id'); // Получаем ID таблицы
                $commonData = \CB\Core::get(\CB\Core::COMMON_DATA); // Получаем объект работы с данными
                $tableModels = $commonData->getTable($tableId); // Получаем объект таблицы

                if (!$tableModels) {
                    return;
                }

                if (!$lineId) {
                    return;
                }

                $recordObject = $tableModels->getRecord($lineId); // Получаем объект записи

                if (!$recordObject) {
                    return;
                }

                $curFilesObject = $recordObject->get('f' . $fieldId); // Получаем объект поля

                if (!$curFilesObject) {
                    return;
                }
                    save_data_file({$gen_field.field|replace:'f':''}, $par_id, $one_value, $curFilesObject->getContent($one_value));
                }
            }
        } elseif ($field_type == 3) {
            $arr_value[] = $row['{$cur_field}'];
        } else {
            $arr_value = $arr_value ?: [$row['{$cur_field}']];
        }
    }
    $new_value = $fix . implode($sep, $arr_value) . $fix;
{/if}
    data_update({$gen_field.table}, EVENTS_ENABLE, ['{$gen_field.field}' => $new_value], 'id = ', $par_id);
}