> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/guide/kursy/istochniki/kursy-iz-faila.md).

# Курсы из файла

Раздел **«Курсы из файла»** позволяет получать курсы валют, криптовалют и платёжных систем из внешнего файла по прямой ссылке. iEXExchanger загружает файл, находит настроенные пары и сохраняет их значения для дальнейших расчётов.

Этот способ подходит, если курсы формирует ваша система, партнёр или отдельный сервис, который предоставляет данные в TXT, CSV, JSON или XML.

Подключённые курсы можно использовать непосредственно в направлениях обмена или включать в выражения в разделе **«Курсы по формуле»**.

Для начала работы перейдите в **«Парсер курсов» — «Курсы из файла»**. Откроется страница **«Курсы обмена из файлов»**.

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2F0sqEKdZaYZZjUC9c6YRm%2Fimage.png?alt=media&amp;token=874563d7-10ac-4772-8509-115874336291" alt=""><figcaption></figcaption></figure>

### Источник, пара и направление обмена

В настройке участвуют три отдельные сущности.

| Сущность           | Что содержит                                                       | Для чего используется                        |
| ------------------ | ------------------------------------------------------------------ | -------------------------------------------- |
| Источник           | Название, ссылку на файл и тип файла                               | Определяет, откуда загружать данные          |
| Пара               | Название пары, выбранный источник, статус и параметры записи курса | Определяет, какое значение получать из файла |
| Направление обмена | Настройки конкретного обмена на сайте                              | Использует выбранный курс при расчёте        |

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

Одну настроенную пару можно использовать в нескольких направлениях обмена и нескольких формулах.

{% hint style="info" %}
Добавление источника не создаёт автоматически все пары из файла. Добавление пары не привязывает её к направлениям обмена. Источник, пары и привязки настраиваются последовательно.
{% endhint %}

### Как проходит обновление

Работа с файлом состоит из нескольких этапов:

1. Вы размещаете подготовленный файл по прямой ссылке.
2. Добавляете источник в iEXExchanger.
3. Создаёте необходимые пары и проверяете, что система находит для них значения.
4. Система загружает и сохраняет курсы при автоматическом обновлении.
5. Включаете пары и подключаете их к направлениям или формулам.
6. Проверяете, какой источник фактически использует направление и какой результат получает клиент.

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

Новый курс применяется после загрузки данных и последующего расчёта направления. Время обновления зависит от расписания, доступности источника и работы фоновых задач.

### Что нужно подготовить

Перед настройкой убедитесь, что:

* у вас есть доступ к разделу **«Курсы из файла»**;
* файл доступен серверу обменного пункта по прямой ссылке;
* известны названия пар и смысл их значений;
* данные соответствуют одному из поддерживаемых форматов;
* на сервере работают фоновые задачи обновления курсов.

Для управления разделом используется право **«Разрешить управление файлами курсов в админпанели»**. Для изменения направлений и работы с формулами также необходим доступ к соответствующим разделам.

Если нужный раздел недоступен, обратитесь к администратору, который управляет правами вашей группы пользователей.

## Подготовка файла

### Поддерживаемые форматы

<table><thead><tr><th width="148.44140625">Формат</th><th>Представление данных</th><th>Когда использовать</th></tr></thead><tbody><tr><td>TXT</td><td>Текстовые строки с парами и значениями или выражениями</td><td>Если файл удобно составлять и редактировать вручную</td></tr><tr><td>CSV</td><td>Таблица с данными в колонках</td><td>Если источник выгружает курсы в табличном виде</td></tr><tr><td>JSON</td><td>Объекты и массивы с парами и значениями</td><td>Если файл формирует программа или внешний сервис</td></tr><tr><td>XML</td><td>Элементы с кодами валют, курсами или значениями <code>in</code> и <code>out</code></td><td>Если поставщик предоставляет XML-файл курсов</td></tr></tbody></table>

При создании источника можно выбрать конкретный формат или оставить **«Авто»**.

В режиме **«Авто»** система определяет формат файла при чтении. Прямая ссылка может не содержать расширение.

Если формат выбран явно, содержимое должно ему соответствовать. Например, выбор **«XML»** не позволит обработать JSON по той же ссылке.

### Требования к ссылке

В поле источника указывается ссылка, которая возвращает непосредственно содержимое файла.

Пример:

```
https://example.com/rates.txt
```

Это учебный адрес. При настройке укажите действующую ссылку вашего источника.

Для загрузки подходят публичные HTTP- и HTTPS-адреса. Файл должен открываться с сервера обменного пункта без входа в личный кабинет и без действий в браузере.

Учитывайте следующие требования:

* ссылка должна вести на сам файл, а не на страницу его просмотра;
* адрес должен возвращать файл напрямую, без перенаправления;
* локальные и внутренние адреса сети не подходят;
* авторизация через логин и пароль внутри адреса не поддерживается;
* по ссылке должен возвращаться файл курсов, а не HTML-страница ошибки или форма входа.

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

{% hint style="info" %}
Доступность файла в вашем браузере не подтверждает его доступность серверу iEXExchanger. Проверка при сохранении источника выполняется со стороны сервера обменного пункта.
{% endhint %}

### Требования к содержимому

Файл должен быть непустым, иметь корректную структуру и содержать хотя бы одну пару с допустимым положительным курсом.

Используйте кодировку UTF-8. Не добавляйте в файл HTML-разметку страницы, двоичные данные или постороннее содержимое.

В стандартной конфигурации максимальный размер загружаемого файла составляет **64 МБ**. На конкретном сервере ограничение может быть изменено.

Для десятичной части в примерах ниже используется точка.

Название пары записывается в понятном виде:

```
USD - RUB
BTC - USDT
USDT_TRC20 - RUB_CARD
```

Каждая часть названия должна начинаться с латинской буквы. Допускаются латинские буквы, цифры и подчёркивание. Длина каждой части — от 1 до 32 символов.

Система нормализует регистр и оформление названия. Например, запись `usd-rub` приводится к виду `USD - RUB`. Однако разные коды остаются разными: `USDT`, `USDTTRC20` и `USDT_TRC20` не заменяют друг друга автоматически.

{% content-ref url="/pages/KONR7qm5JXawJJSC679u" %}
[Форматы файлов и правила подготовки данных](/guide/kursy/istochniki/kursy-iz-faila/formaty-failov-i-pravila-podgotovki-dannykh.md)
{% endcontent-ref %}

### Примеры файлов

Во всех примерах используются учебные значения:

* `USD - RUB` — 90;
* `BTC - USDT` — 60000.

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

{% tabs %}
{% tab title="TXT" %}

```
USD - RUB : 90
BTC - USDT : 60000
```

Слева указывается пара, справа после двоеточия — её значение.
{% endtab %}

{% tab title="CSV" %}

```csv
USD - RUB,90
BTC - USDT,60000
```

В этом примере первая колонка содержит пару, вторая — курс. Разделитель колонок — запятая.
{% endtab %}

{% tab title="JSON" %}

```json
{
  "USD - RUB": "90",
  "BTC - USDT": "60000"
}
```

Ключ содержит название пары, значение — курс.
{% endtab %}

{% tab title="XML" %}

```xml
<?xml version="1.0" encoding="UTF-8"?>
<rates>
  <item>
    <from>USD</from>
    <to>RUB</to>
    <in>1</in>
    <out>90</out>
  </item>
  <item>
    <from>BTC</from>
    <to>USDT</to>
    <in>1</in>
    <out>60000</out>
  </item>
</rates>
```

Для записей с `in` и `out` курс рассчитывается как `out / in`.

Например, значения `in = 100` и `out = 9000` также дают курс 90.
{% endtab %}
{% endtabs %}

### Какие данные можно использовать

Кроме готовых чисел, система поддерживает вычисляемые значения.

| Возможность                | Что позволяет сделать                                         | Что учитывать                                                       |
| -------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------------- |
| Целые и дробные числа      | Передать готовый курс                                         | Результат должен быть положительным                                 |
| Арифметические выражения   | Использовать сложение, вычитание, умножение, деление и скобки | Выражение должно корректно вычисляться                              |
| Проценты                   | Изменить значение на заданный процент                         | Синтаксис и порядок расчёта нужно проверять по правилам формата     |
| Ссылки на другие пары      | Рассчитать значение через данные этого же файла               | Все зависимости должны разрешаться без циклов                       |
| Обратные курсы             | Получить обратное соотношение валют                           | Для XML действуют отдельные правила наличия пары                    |
| Несколько пар в строке TXT | Применить одно выражение к нескольким парам                   | Такая запись относится к TXT                                        |
| Алиасы в TXT               | Дать обозначение паре или выражению                           | Объявление алиаса само по себе не создаёт настроенную пару в панели |
| Пары с городом             | Различать курсы одной валютной пары для разных городов        | Город входит в полное название пары                                 |

Выражения внутри файла и формулы в разделе **«Курсы по формуле»** настраиваются по разным правилам. Теги вида `[fileparser_...]` используются в формулах iEXExchanger; ссылки на пары внутри файла описаны в отдельной статье о форматах.

### Какие данные не получится использовать как курс

Система не сможет получить корректный курс из пустого значения, произвольного текста, деления на ноль, неразрешимой ссылки или циклической зависимости.

Нулевой и отрицательный результаты не подходят для рабочего курса.

Также нельзя рассчитывать на произвольный выбор одной записи, если в файле несколько разных определений одной и той же пары. Такие определения могут создать конфликт.

Ошибка отдельной пары не всегда мешает обработать остальные корректные пары. Однако повреждение структуры всего файла, например некорректный XML, может сделать недоступным весь источник.

{% hint style="warning" %}
Не считайте ошибочную запись безопасно проигнорированной. Если она используется настроенной парой, обновление этой пары может завершиться ошибкой, а связанное направление или формула — остаться без доступного источника.
{% endhint %}

## Добавление источника

### Создание источника из списка

Откройте **«Парсер курсов» — «Курсы из файла»**.

{% stepper %}
{% step %}

#### Откройте список источников

Нажмите **«Источники»**.

В окне **«Список источников»** нажмите **«Добавить источник»**.
{% endstep %}

{% step %}

#### Укажите название

В поле **«Название»** введите понятное название, по которому сможете отличить этот файл от остальных.

Название отображается в списке источников, вкладках и полях выбора. Оно также участвует в формировании кодов создаваемых пар.

Используйте разные названия для разных источников. Названия, которые после нормализации совпадают, могут быть отклонены как повторяющиеся.
{% endstep %}

{% step %}

#### Вставьте ссылку

В поле **«Ссылка на файл»** укажите прямой адрес файла.

Проверьте, что это конечный адрес содержимого, а не ссылка с перенаправлением или страница просмотра.

Один и тот же адрес не нужно добавлять повторно для каждой пары: создайте один источник и подключайте к нему нужные пары.
{% endstep %}

{% step %}

#### Выберите тип файла

В поле **«Тип файла»** доступны:

* **«Авто»**;
* **«TXT»**;
* **«CSV»**;
* **«JSON»**;
* **«XML»**.

Оставьте **«Авто»**, если требуется автоматическое определение. Выберите конкретный тип, если формат источника заранее известен.
{% endstep %}

{% step %}

#### Сохраните источник

Нажмите **«Сохранить»**.

Система проверит адрес, загрузит файл и попробует обработать его в выбранном формате.

При успешной проверке источник появится в списке и станет доступен при создании пар. Если возникнет ошибка, исправьте ссылку, формат или содержимое и повторите сохранение.
{% endstep %}
{% endstepper %}

### Поля источника

| Поле             | Что указывать                | Особенности                       |
| ---------------- | ---------------------------- | --------------------------------- |
| «Название»       | Название источника           | Обязательное поле, до 191 символа |
| «Ссылка на файл» | Прямой HTTP- или HTTPS-адрес | Обязательное поле, до 191 символа |
| «Тип файла»      | «Авто» или конкретный формат | По умолчанию используется «Авто»  |

В текущей форме нет отдельного переключателя включения источника. Доступность пары для использования регулируется её собственным статусом.

### Создание источника из формы пары

Источник можно добавить непосредственно при создании пары:

1. Нажмите **«Добавить пару»**.
2. Откройте поле **«Источник»**.
3. Выберите действие добавления источника.
4. Заполните название, ссылку и тип файла.
5. Сохраните источник.
6. Выберите его в поле **«Источник»** и продолжите настройку пары.

Созданный таким способом источник становится общим: его можно использовать и для других пар.

***

## Добавление и проверка пары

### Создание пары

Откройте **«Парсер курсов» — «Курсы из файла»** и нажмите **«Добавить пару»**.

{% stepper %}
{% step %}

#### Выберите источник

В поле **«Источник»** выберите файл, из которого нужно получать курс.

Если источников много, воспользуйтесь поиском.

Проверьте название источника: одинаковая пара может присутствовать в нескольких файлах с разными значениями.
{% endstep %}

{% step %}

#### Выберите или введите название пары

В поле **«Название»** укажите пару, которую нужно получать.

Для выбора из файла нажмите **«Выбрать из доступных пар»**. Найдите нужную запись через поиск по каталогу и выберите её.

Название также можно ввести вручную.

После выбора или ввода проверьте нормализованное имя и результат проверки по источнику.
{% endstep %}

{% step %}

#### Проверьте найденное значение

Дождитесь завершения блока **«Проверка пары по файловому источнику»**.

Убедитесь, что найдена нужная пара и показан ожидаемый сформированный курс.

Если файл содержит варианты по городам, выберите нужный вариант и дождитесь повторной проверки.
{% endstep %}

{% step %}

#### Укажите количество знаков

В поле **«Количество знаков после запятой»** допускается целое число от 0 до 18. Начальное значение — 10.

Особенность применения этого поля описана ниже.
{% endstep %}

{% step %}

#### Установите статус

В поле **«Статус»** выберите **«Включено»**, если пара должна быть доступна для использования в расчётах.

По умолчанию новая пара имеет статус **«Отключено»**.

Можно сначала сохранить отключённую пару, дождаться загрузки курса, проверить значение и затем включить её в таблице.
{% endstep %}

{% step %}

#### Добавьте пару

Нажмите **«Добавить»**.

Пара появится в списке. Проверьте её источник и статус, затем дождитесь сохранения курса при автоматическом обновлении.

После этого можно переходить к привязке направления или настройке формулы.
{% endstep %}
{% endstepper %}

### Выбор из доступных пар

Каталог **«Выбрать из доступных пар»** помогает найти пары, которые удалось прочитать из выбранного файла.

Используйте его, чтобы:

* выбрать точное обозначение валют или платёжных систем;
* отличить похожие коды;
* найти вариант с нужным городом;
* уменьшить вероятность ошибки при ручном вводе.

Каталог загружается частями. Если нужная запись не видна сразу, используйте поиск.

Выбор записи переносит название в форму и запускает проверку. Он не создаёт пару до нажатия **«Добавить»** и не импортирует остальные записи файла.

Если запись отсутствует в каталоге, проверьте файл, выбранный формат и корректность самой записи.

### Название пары

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

Например:

```
USD - RUB
```

означает пару USD к RUB.

```
RUB - USD
```

— отдельную обратную пару.

Система нормализует допустимое оформление названия, но не подбирает вместо указанного кода похожую валюту или платёжную систему.

В пределах одного источника нельзя создать две одинаковые нормализованные пары. В разных источниках одинаковые названия допустимы: это будут отдельные записи с разными кодами и значениями.

{% hint style="info" %}
Название пары из файла не обязано совпадать с полным названием направления на сайте. При привязке вы сами выбираете подходящую пару. Сверяйте валюты, платёжную систему, сеть и направление пересчёта.
{% endhint %}

### Пары с городом

Если источник различает курсы по городам, полное название может содержать третью часть:

```
CASHRUB - USDTTRC20 - MSK
```

В этом случае `MSK` является частью идентификатора пары.

Записи с разными городами считаются разными парами. Пара без города также не заменяет автоматически все городские варианты.

Если после проверки отображается блок **«Доступные варианты»**, найдите нужный город и нажмите на соответствующую запись. Выбранное полное название будет перенесено в форму.

Код города в паре помогает выбрать данные из файла. Он не создаёт город в настройках обменного пункта и не настраивает автоматически городские правила направления.

### Прямой и обратный курс

При работе с обратными парами учитывайте формат источника.

Для TXT, CSV и JSON система может получить отсутствующую прямую пару через найденную обратную пару с пересчётом `1 / курс`.

Для XML требуется наличие записи запрошенной пары. Наличие `USD - RUB` само по себе не означает, что XML-источник предоставляет `RUB - USD`.

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

Не используйте одну запись для противоположного направления только потому, что в её названии присутствуют те же две валюты. Создайте и проверьте обратную пару либо настройте соответствующий расчёт через формулу.

### Что показывает предварительная проверка

Проверка запускается автоматически после выбора источника и изменения названия пары. Отдельно запускать её кнопкой не требуется.

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2FZuZwu7AljWNGzmzql1ro%2Fimage.png?alt=media&amp;token=87872333-c66e-4ae6-a14f-3ab7f6561c75" alt="" width="563"><figcaption></figcaption></figure>

В блоке **«Проверка пары по файловому источнику»** отображаются результат поиска и доступные данные найденной записи.

| Данные                    | Что означают                                       | Когда отображаются                         |
| ------------------------- | -------------------------------------------------- | ------------------------------------------ |
| Сообщение о результате    | Удалось ли прочитать источник и получить курс пары | После завершения проверки                  |
| «Пара в источнике»        | Пара, фактически прочитанная из файла              | Если такая запись найдена                  |
| «in — исходное значение»  | Исходная сумма, указанная поставщиком              | Если запись содержит `in`                  |
| «out — исходное значение» | Выходная сумма, указанная поставщиком              | Если запись содержит `out`                 |
| «Исходное значение»       | Число или выражение из записи                      | Если оно доступно                          |
| «Сформированный курс»     | Результат обработки найденных данных               | Если курс удалось вычислить                |
| «Доступные варианты»      | Подходящие варианты, в том числе с городом         | Если источник предоставляет такие варианты |

Не все поля присутствуют у каждой записи. Например, простой TXT с готовым числом не обязан содержать `in` и `out`.

Номер строки в текущей проверке не выводится.

{% hint style="warning" %}
Предварительная проверка читает актуальные данные источника, но не записывает полученное значение в рабочий курс пары. После сохранения дождитесь автоматического обновления и проверьте значение в таблице.
{% endhint %}

Сохранение самой пары также не подтверждает, что курс успешно загружен. Поэтому не пропускайте проверку перед сохранением и проверку рабочего значения после обновления.

### Как работает статус

Статус определяет доступность пары для использования.

| Статус      | Использование в расчётах                                           | Автоматическое обновление |
| ----------- | ------------------------------------------------------------------ | ------------------------- |
| «Включено»  | Пара может использоваться при наличии корректного доступного курса | Выполняется               |
| «Отключено» | Пара исключается из использования как доступный источник           | Продолжает выполняться    |

Отключение пары не удаляет её и не снимает существующие привязки.

Если пара уже используется направлением или формулой, её отключение влияет на доступность этого источника при следующих расчётах.

### Количество знаков после запятой

Поле **«Количество знаков после запятой»** сохраняется в настройках пары и допускает значения от 0 до 18.

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

Поэтому изменение числа в этом поле не следует использовать как способ округления рабочего курса.

Если требуется получить определённое округлённое значение, задайте его при подготовке файла или используйте соответствующий расчёт в разделе **«Курсы по формуле»**.

## Привязка курса к направлению обмена

### Выбор способа подключения

Курс из файла можно подключить двумя способами.

| Способ          | Что выбирается в направлении       | Когда подходит                                                                    |
| --------------- | ---------------------------------- | --------------------------------------------------------------------------------- |
| Прямая привязка | Пара в поле «Курс обмена из файла» | Нужно использовать загруженное значение как источник курса                        |
| Через формулу   | Формула в поле «Курс по формуле»   | Нужно изменить значение, объединить источники или выполнить дополнительный расчёт |

Для одного направления в поле **«Курс обмена из файла»** выбирается одна пара.

Если необходимо использовать несколько файловых курсов в одном расчёте, создайте формулу с нужными тегами.

### Прямая привязка

Перед привязкой убедитесь, что пара включена и в списке отображается проверенное положительное значение.

{% stepper %}
{% step %}

#### Откройте направление обмена

Перейдите в **«Основное» — «Направление обмена» — «Список направлений»**.

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2FnCvlSpmA6Mm5iOrh8FNH%2Fimage.png?alt=media&amp;token=79ef53f2-11b8-4f48-98c4-b5d5a7675582" alt=""><figcaption></figcaption></figure>

Найдите направление, для которого нужно настроить курс, и откройте его редактирование.
{% endstep %}

{% step %}

#### Откройте настройки курса

В редакторе направления выберите **«Обмен» — «Курс обмена»**.

Откроется страница **«Настройка курса обмена»**.
{% endstep %}

{% step %}

#### Выберите пару из файла

Откройте поле **«Курс обмена из файла»**.

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2F3Q6pQLYXZbZd4UzWziHr%2Fimage.png?alt=media&amp;token=74b41291-5796-4761-ae4a-b21e78123b91" alt=""><figcaption></figcaption></figure>

Найдите пару по названию, коду или названию источника. Список группируется по источникам и показывает значения курсов.

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

Для нового выбора доступны включённые пары. Ранее выбранная, но впоследствии отключённая запись может оставаться видимой в поле — это не означает, что она доступна для расчёта.
{% endstep %}

{% step %}

#### Проверьте остальные источники направления

На этой же странице могут быть настроены **«Курс из источников»**, **«Ручной курс обмена»**, **«Курс по формуле»** и **«Курс конкурента»**.

У направления также могут действовать настройки BestChange.

Выбор файловой пары не отменяет эти настройки. Если направление должно рассчитываться от файла, проверьте, что другой источник не получает преимущество в вашей схеме расчёта.
{% endstep %}

{% step %}

#### Сохраните привязку

Нажмите **«Сохранить»**.

После сохранения проверьте, что выбранная пара осталась в поле **«Курс обмена из файла»**.

Сама привязка не создаёт новое значение курса и не заменяет автоматическое обновление источника.
{% endstep %}

{% step %}

#### Проверьте результат

Вернитесь в список направлений и проверьте курс после очередного расчёта.

Откройте **«Как сформирован курс»**, чтобы убедиться, какой источник используется.

Затем откройте это направление на сайте и проверьте расчёт для контрольной суммы. Для такой проверки не требуется оплачивать заявку.
{% endstep %}
{% endstepper %}

### Как проверить фактически используемый источник

В списке направлений рядом с курсом доступна кнопка **«Как сформирован курс»**.

Откройте её. В окне **«Формирование курса»** можно посмотреть:

* курс, отображаемый в списке;
* значение, сохранённое для расчёта;
* подключённые источники и их доступность;
* источник с отметкой **«Используется»**;
* причины, по которым другие источники не используются;
* настройки, уже применённые к курсу;
* правила, которые могут дополнительно изменить курс или сумму на сайте.

Если сведения нужно перечитать, нажмите **«Обновить детали»**. Эта кнопка обновляет информацию в окне; она не запускает загрузку внешнего файла.

{% hint style="info" %}
Наличие привязки и использование источника — разные состояния. Пара может быть выбрана в направлении, но калькулятор использует другой доступный источник с более высоким приоритетом.
{% endhint %}

### Почему курс направления отличается от файла

Значение в таблице файловых пар — исходный курс этого источника.

Курс направления и итоговая сумма для клиента могут отличаться, если:

* калькулятор выбрал другой источник;
* используется формула с надбавкой или другим преобразованием;
* к направлению применяются прибыль, комиссии или ограничения;
* действуют правила по сумме, городу или другим условиям обмена;
* курс отображается в обратном представлении;
* файл уже изменился, но обновление пары или расчёт направления ещё не завершились.

Для проверки сначала сравните сформированный курс в предварительной проверке с сохранённым значением пары. Затем проверьте источник и применённые настройки в окне **«Формирование курса»**.

### Одна пара в нескольких направлениях

Одну файловую пару можно привязать к нескольким направлениям.

Для каждого направления отдельно:

1. Откройте редактирование.
2. Перейдите в **«Обмен» — «Курс обмена»**.
3. Выберите ту же пару в поле **«Курс обмена из файла»**.
4. Сохраните настройки.
5. Проверьте фактически используемый источник и результат расчёта.

Изменение значения общей пары влияет на все направления, которые используют её в расчётах. Собственные комиссии и остальные настройки каждого направления при этом продолжают действовать.

### Просмотр привязанных направлений

Откройте **«Парсер курсов» — «Курсы из файла»**.

В строке пары под названием отображается:

* **«Не привязаны направления»**, если прямых привязок нет;
* **«Направления (N)»**, если прямые привязки есть.

Нажмите **«Направления (N)»**, чтобы открыть список **«Привязанные направления»**. Нажатие на название направления открывает его настройки курса.

{% hint style="warning" %}
Этот список показывает только прямые привязки через поле «Курс обмена из файла». Использование тега пары в формулах сюда не входит.

Надпись «Не привязаны направления» не подтверждает, что пару можно удалить без последствий.
{% endhint %}

### Замена выбранной пары

Чтобы переключить направление на другую файловую пару:

1. Добавьте и проверьте новую пару.
2. Убедитесь, что она включена и получила рабочий курс.
3. Откройте настройки курса нужного направления.
4. В поле **«Курс обмена из файла»** выберите новую запись.
5. Нажмите **«Сохранить»**.
6. Проверьте источник в окне **«Формирование курса»** и расчёт на сайте.

Если старая пара использовалась в нескольких направлениях, замените её в каждом нужном направлении отдельно.

### Снятие прямой привязки

Чтобы убрать файловую пару из направления:

1. Откройте направление и перейдите в **«Обмен» — «Курс обмена»**.
2. Откройте поле **«Курс обмена из файла»**.
3. Нажмите **«Очистить»**.
4. Выберите другой источник курса, если он нужен для дальнейшей работы направления.
5. Нажмите **«Сохранить»**.
6. Проверьте результат расчёта.

Снятие привязки не удаляет пару из раздела **«Курсы из файла»**.

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

***

## Использование курса в формулах

### Код файловой пары

После создания пара получает код для использования в формулах. В таблице он отображается под названием в квадратных скобках.

Например:

```
[fileparser_main_usd-rub]
```

Нажмите на отображаемый тег, чтобы скопировать его.

Используйте код именно из вашей таблицы. Название источника, название пары и особенности ранее созданной записи могут влиять на его написание.

Квадратные скобки являются частью записи тега в формуле.

### Создание формулы на основе файла

Откройте **«Парсер курсов» — «Курсы по формуле»**.

{% content-ref url="/pages/WQ7Sr26pHTEFr2jwAscq" %}
[Формулы](/guide/kursy/formuly.md)
{% endcontent-ref %}

{% stepper %}
{% step %}

#### Добавьте формулу

Нажмите **«Добавить формулу»**.

В поле **«Название»** укажите понятное название результата, чтобы затем найти его в настройках направления.
{% endstep %}

{% step %}

#### Вставьте тег пары

В поле **«Формула»** вставьте скопированный код файловой пары.

Можно воспользоваться блоком **«Подсказки по тегам»**: на вкладке **«Переменные»** выберите источник в поле **«Источник курсов»**, найдите запись через **«Поиск кода курса»** и вставьте нужный тег.
{% endstep %}

{% step %}

#### Добавьте необходимые вычисления

Если требуется использовать исходное значение без преобразования, оставьте только тег.

Если нужен дополнительный расчёт, добавьте соответствующее выражение.

Не переносите в формулу код из учебного примера без замены на существующий тег вашей пары.
{% endstep %}

{% step %}

#### Проверьте результат

Дождитесь автоматической проверки.

Проверьте результат формулы и значения использованных тегов. Исправьте неизвестные теги, ошибки выражения и недоступные зависимости.

Создание формулы доступно после успешной проверки текущего выражения.
{% endstep %}

{% step %}

#### Завершите настройку формулы

Укажите требуемое количество знаков после запятой и включите **«Статус»**, если формула должна использоваться в расчётах.

Нажмите **«Добавить»**.

Убедитесь, что формула появилась в списке, включена и имеет корректное значение.
{% endstep %}
{% endstepper %}

### Пример формулы

Предположим, в вашей системе существует пара с тегом:

```
[fileparser_main_usd-rub]
```

и её сохранённый курс равен 90.

Чтобы увеличить это значение на 2%, можно использовать:

```
[fileparser_main_usd-rub] * 1.02
```

Результат:

```
90 × 1.02 = 91.8
```

Это учебный пример преобразования исходного курса. Итоговый расчёт направления дополнительно зависит от его собственных настроек.

Для объединения нескольких источников вставьте в выражение их действительные теги и проверьте результат.

### Привязка формулы к направлению

После создания формулы:

1. Перейдите в **«Основное» — «Направление обмена» — «Список направлений»**.
2. Откройте редактирование нужного направления.
3. Выберите **«Обмен» — «Курс обмена»**.
4. В поле **«Курс по формуле»** найдите созданную формулу по названию.
5. Выберите её и нажмите **«Сохранить»**.
6. Проверьте фактически используемый источник в окне **«Формирование курса»**.
7. Проверьте расчёт направления на сайте.

В такой схеме зависимость выглядит следующим образом:

```
Файл → файловая пара → формула → направление обмена
```

Дополнительно выбирать исходную пару в поле **«Курс обмена из файла»** для работы этой формулы не требуется.

Если в направлении уже настроены другие источники, проверьте их приоритет и назначение.

### Что требуется для работы формулы

Работа формулы зависит от всех используемых ею источников.

Для файловой пары проверьте:

* запись существует;
* тег в выражении совпадает с текущим кодом;
* пара включена;
* сохранено корректное положительное значение;
* источник не отклонён из-за ошибки обновления или проверки актуальности.

Успешная проверка формулы в момент создания не гарантирует доступность её источников в дальнейшем.

Отключение или удаление файловой пары, изменение её кода и ошибки обновления могут повлиять на все формулы, которые от неё зависят.

### Использование через формулу в страховке курса

Формулу на основе файловой пары можно использовать и как источник страхового курса направления.

Для этого в редакторе направления откройте **«Обмен» — «Страховка курса»**, выберите получение страхового курса из формулы и укажите её в поле **«Курс из формулы»**.

Условия срабатывания, пороги и действия страховки настраиваются на этой странице отдельно.

Такая связь задаёт контрольный курс для страховки. Основной источник расчёта направления по-прежнему настраивается в **«Обмен» — «Курс обмена»**.

Прямого выбора файловой пары в текущей форме страховки нет: для этого сценария используется формула.

## Автоматическое обновление и актуальность

### Как обновляются настроенные пары

При обработке источника система читает файл и получает значения для созданных в панели пар.

Не требуется создавать отдельный источник для каждой строки одного файла.

При этом:

* новые записи внешнего файла не добавляются автоматически в таблицу пар;
* отключённые пары также могут получать обновлённые значения;
* ошибка одной пары не обязательно мешает обновить остальные;
* изменение формулы или значения внутри файла применяется после очередной успешной обработки.

Если файл содержит резерв, минимальную сумму, максимальную сумму или другие дополнительные сведения, этот раздел не переносит их автоматически в настройки направления. Здесь настраивается получение курса.

### Где изменить периодичность

Перейдите в **«Настройки» — «Общие настройки»**.

Откройте **«Дополнительно» — «Планировщик задач»** и найдите блок **«Обновление основных курсов»**.

{% content-ref url="/spaces/aXdtHio8tZWa9JLE6Wnj/pages/nvY00tzPPrh1SgxCH2zC" %}
[Планировщик обновлений](/knowledge-base/obsluzhivanie/scheduler.md)
{% endcontent-ref %}

В нём используются поля:

| Поле                  | Назначение                                              |
| --------------------- | ------------------------------------------------------- |
| «Режим обновления»    | Определяет способ выбора периодичности                  |
| «Как часто обновлять» | Задаёт интервал в режиме с фиксированной периодичностью |

В режиме **«Вручную»** администратор задаёт фиксированную периодичность. Название этого режима не означает, что каждую загрузку файла нужно запускать вручную.

Режим **«Автоматически»** использует автоматический подбор периодичности.

После изменения настроек нажмите **«Сохранить»**.

Отдельного интервала обновления для каждой файловой пары в её форме нет.

{% hint style="info" %}
Блок «Обновление файлов курсов и направлений» относится к формированию выходных файлов обменного пункта. Для получения курсов из внешних источников используется «Обновление основных курсов».
{% endhint %}

Изменение расписания имеет смысл только при работающих фоновых задачах сервера.

### Проверка срока актуальности

Перейдите в **«Настройки» — «Общие настройки»** и откройте **«Курсы и расчёты» — «Калькулятор»**.

{% content-ref url="/pages/mv3h4YVxN0BgJ1DyXPOL" %}
[Настройки расчётов](/guide/nastroiki/obshie-nastroiki/nastroiki-raschyotov.md)
{% endcontent-ref %}

Параметр **«Проверять срок актуальности курсов»** управляет проверкой возраста данных.

В стандартной конфигурации эта проверка выключена. При её включении стандартный допустимый возраст файлового курса составляет 24 часа; серверная конфигурация может задавать другой срок.

Проверка возраста не заменяет остальные условия доступности. Отключённая пара или источник с известной ошибкой обновления не становится допустимым только потому, что проверка срока выключена.

### Что происходит при ошибке обновления

Ошибка может возникнуть, если:

* файл перестал открываться;
* изменился адрес или формат ответа;
* нужная пара исчезла;
* появилось несколько конфликтующих определений;
* выражение перестало вычисляться;
* сформированное значение не подходит для курса.

При неудачном обновлении ранее сохранённое числовое значение может остаться в таблице. Одновременно пара отмечается системой как источник с ошибкой.

Поэтому старое положительное число в колонке **«Курс обмена»** не подтверждает, что этот источник сейчас пригоден для расчёта.

Калькулятор может использовать другой настроенный доступный источник. Если подходящих источников нет, направление не получает корректный расчёт.

{% hint style="warning" %}
После исправления файла дождитесь успешного фонового обновления пары. Одной успешной предварительной проверки недостаточно, чтобы восстановить её рабочее состояние.
{% endhint %}

### Как понимать дату обновления

Колонка **«Обновлено»** показывает дату изменения записи.

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

Проверяйте дату вместе со значением, результатом чтения источника и состоянием источника в расчёте направления.

## Работа со списком пар

### Вкладки источников

Вкладка **«Все»** показывает пары всех источников.

Вкладка конкретного источника ограничивает список его парами. Число рядом с названием относится к созданным в панели парам этого источника, включая отключённые.

Это число не равно количеству всех записей внешнего файла и не является счётчиком только исправных курсов.

Другие фильтры могут дополнительно сокращать показанный список.

### Поиск и фильтры

Для поиска по названию используйте поле **«Пара»**.

Через **«Добавить фильтр»** и **«Открыть фильтры»** можно настроить дополнительные условия.

| Фильтр         | Что позволяет найти                               |
| -------------- | ------------------------------------------------- |
| «Пара»         | Записи по названию пары                           |
| «Код пары»     | Запись по коду, который используется в формулах   |
| «Источник»     | Пары выбранных источников                         |
| «Статус»       | Включённые или выключенные пары                   |
| «Курс»         | Значения, соответствующие числовому условию       |
| «Формат курса» | Записи с заданным количеством знаков в настройках |

Для текстовых полей доступны условия поиска по содержимому, точному совпадению и началу строки. Для числовых полей можно использовать сравнение и диапазон.

Если запись не находится, проверьте выбранную вкладку и все активные фильтры.

### Сортировка и колонки

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

Через **«Настроить колонки»** выберите, какие данные показывать в таблице.

Внизу списка отображаются **«Всего записей»**, выбор **«На странице»** и кнопки перехода между страницами.

Сортировка и настройка колонок меняют представление списка. Они не меняют приоритет источника в калькуляторе.

### Включение и отключение

Для одной пары измените переключатель в колонке **«Статус»**.

Изменение сохраняется сразу — отдельная кнопка сохранения для переключателя не требуется.

Перед отключением рабочей пары проверьте её прямые привязки и использование в формулах. Отключение не удаляет зависимости, но влияет на доступность курса.

### Массовые действия

Отметьте нужные строки флажками.

Флажок в заголовке выбирает строки текущей страницы. Он не выбирает автоматически все записи на остальных страницах.

После выбора появляется панель **«Действия с выбранными строками»** со счётчиком **«Выбрано: N»**.

Доступны:

* **«Включить»**;
* **«Отключить»**;
* **«Знаки после запятой»** в меню **«Другие действия»**;
* **«Удалить»** в меню **«Другие действия»**;
* **«Снять выбор»**.

Для массового изменения количества знаков откройте **«Знаки после запятой»**, укажите значение от 0 до 18 и нажмите **«Применить»**.

Ограничения применения этого параметра остаются такими же, как при редактировании одной пары: он не округляет загружаемый рабочий курс.

Перед массовым действием проверьте состав выбранных строк. После обновления списка выбор может быть сброшен.

## Изменение и удаление настроек

### Редактирование пары

В таблице нажмите название пары.

Откроется форма редактирования. В текущем интерфейсе её заголовок — **«Изменить источник»**, хотя в этой форме изменяются параметры выбранной пары.

Можно изменить:

* **«Источник»**;
* **«Название»**;
* **«Количество знаков после запятой»**;
* **«Статус»**.

После изменения источника или названия дождитесь новой предварительной проверки и нажмите **«Сохранить»**.

Если у пары уже есть прямые привязки к направлениям, редактирование этой же записи сохраняет такие связи. Однако направления начнут получать данные по новым настройкам пары.

До следующего обновления в записи может оставаться прежнее значение. Проверьте новый рабочий курс перед дальнейшим использованием.

### Изменение кода пары

Код связан с названием источника и нормализованным названием пары.

При сохранении формы пары он формируется заново. После смены источника, переименования пары или сохранения старой записи с прежним оформлением код может измениться.

После такого изменения:

1. Скопируйте текущий тег из таблицы.
2. Найдите формулы со старым тегом.
3. Замените в них ссылку.
4. Проверьте каждую изменённую формулу.
5. Проверьте направления и другие настройки, использующие эти формулы.

Текст формул автоматически не переписывается.

Переименование самого источника не заменяет сразу коды всех существующих пар. Учитывайте это при последующем редактировании пар этого источника.

{% hint style="warning" %}
Сохранённая прямая привязка к записи пары и ссылка на её тег в формуле работают по-разному. Прямая связь может сохраниться после переименования, а старый тег в выражении — перестать находиться.
{% endhint %}

### Удаление пары

Перед удалением проверьте, где используется запись.

Если у пары есть прямые привязки к направлениям, удаление будет заблокировано. Сначала замените или очистите поле **«Курс обмена из файла»** в этих направлениях и сохраните изменения.

Отдельно проверьте формулы. Отсутствие прямых привязок не означает отсутствия ссылок на тег.

После проверки:

1. Найдите пару в таблице.
2. Откройте действие удаления в её строке.
3. Проверьте, что удаляется нужная запись.
4. Подтвердите удаление.

Удаление записи не удаляет строку во внешнем файле.

### Массовое удаление

Выберите пары и откройте **«Другие действия» — «Удалить»**.

В подтверждении **«Удалить выбранные курсы?»** проверьте выбранные записи.

Если среди них есть пара с прямой привязкой к направлению, массовое удаление будет отклонено. Сначала устраните такие привязки.

Перед подтверждением также проверьте использование тегов в формулах. Восстановление удалённых записей через корзину этого раздела не предусмотрено.

### Сведения об источниках

Нажмите **«Источники»**, чтобы открыть **«Список источников»**.

Для источника отображаются название, ссылка, тип файла и сведения о последнем полученном содержимом.

| Сведения       | Что означают                                              |
| -------------- | --------------------------------------------------------- |
| Тип файла      | Выбранный или определённый формат                         |
| «Записей»      | Количество распознанных записей при обработке содержимого |
| «Размер файла» | Размер полученного файла                                  |
| Ссылка         | Адрес, по которому система получает данные                |

Показатель **«Записей»** не равен количеству подключённых пар. Он также не гарантирует, что все записи уникальны и пригодны для расчёта.

Если значение отсутствует, вместо него может отображаться `—`. Это не то же самое, что ноль.

Открытие списка источников показывает сохранённые сведения и само по себе не подтверждает текущую доступность внешнего файла.

### Поиск и порядок источников

В списке источников доступен поиск по названию, ссылке или типу файла.

Порядок источников можно менять перетаскиванием. Для этого очистите поиск и завершите открытое редактирование.

Новый порядок сохраняется и используется при отображении источников и их вкладок.

Перестановка источников не меняет их приоритет в расчётах направлений.

### Редактирование источника

В окне **«Список источников»** найдите источник и нажмите **«Изменить»**.

Измените название, ссылку или тип файла и сохраните настройки. При сохранении система повторно проверяет источник.

Смена ссылки или формата влияет на все пары, связанные с этим источником.

Если в нём есть включённые пары, после сохранения изменений ставится задача обновления. Фактическое выполнение зависит от работы фоновых задач.

После изменения источника:

1. Проверьте несколько используемых пар, особенно пары с выражениями и городами.
2. Убедитесь, что их названия присутствуют в новом содержимом.
3. Дождитесь рабочего обновления.
4. Проверьте связанные направления и формулы.

Если изменение нужно только одной паре, сначала убедитесь, что редактируете её выбор источника, а не общие параметры файла для всех пар.

### Удаление источника

Источник нельзя удалить, пока с ним связана хотя бы одна настроенная пара. Отключённые пары также учитываются.

Чтобы удалить источник:

1. Проверьте использование всех его пар.
2. Перенесите нужные пары в другой источник либо удалите их после снятия зависимостей.
3. Убедитесь, что у источника не осталось пар.
4. Откройте **«Источники»**.
5. Найдите источник и подтвердите его удаление.

Удаление источника из iEXExchanger не удаляет сам файл на стороне поставщика.

## Проверка настройки и устранение проблем

### Проверка перед использованием

После завершения настройки проверьте всю цепочку:

1. Источник сохранён с правильной ссылкой и форматом.
2. Предварительная проверка находит нужную пару и ожидаемое значение.
3. Пара создана, включена и получила рабочий курс.
4. В направлении выбрана эта пара или формула, которая её использует.
5. Настройки направления сохранены.
6. В окне **«Формирование курса»** подтверждён фактически используемый источник.
7. На сайте правильно рассчитывается контрольная сумма с учётом настроек направления.

Если используется формула, дополнительно проверьте её статус, результат и значения всех зависимостей.

### Источник не сохраняется

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

Затем проверьте прямую ссылку:

* возвращает ли она файл без перенаправления;
* доступна ли с сервера;
* не требует ли входа;
* соответствует ли ответ выбранному формату;
* есть ли в файле хотя бы одна корректная пара с положительным курсом.

Исправьте причину и повторите сохранение.

### Файл открывается, но пара не найдена

Откройте каталог доступных пар и проверьте точное обозначение.

Сверьте порядок валют, коды платёжных систем, сеть и город. Убедитесь, что выбран нужный источник.

Для XML проверьте наличие именно запрошенной пары. Обратная запись не заменяет её автоматически.

Если название верное, проверьте выражение, зависимости и дубликаты в файле.

### Предварительная проверка верная, а в таблице старый курс

Предварительная проверка не сохраняет рабочее значение.

Дождитесь автоматического обновления. Если значение не меняется, проверьте расписание **«Обновление основных курсов»** и работу фоновых задач.

После изменения названия или источника пары учитывайте, что до обновления в записи может сохраняться прежнее число.

### Пара не появляется в выборе направления

Убедитесь, что пара создана в панели, а не только присутствует во внешнем файле.

Проверьте её статус: для нового выбора нужна включённая запись.

Очистите поисковый запрос, проверьте группу источника и заново откройте поле выбора.

### Привязка сохранена, но направление использует другой курс

Откройте **«Как сформирован курс»** в списке направлений.

Проверьте источник с отметкой **«Используется»** и причину пропуска файлового курса.

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

Если источник выбран правильно, проверьте применённые к направлению настройки расчёта.

### Формула перестала работать

Сравните тег в выражении с текущим кодом пары.

Проверьте, не была ли пара переименована, перенесена в другой источник, отключена или удалена.

После исправления файла дождитесь успешного обновления пары, затем проверьте формулу и её использование в направлении.

### Не удаётся удалить пару или источник

Для пары проверьте прямые привязки через **«Направления (N)»**.

Для источника проверьте наличие связанных пар, включая отключённые.

Сначала замените или удалите зависимости, сохраните изменения в соответствующих настройках и повторите удаление.

### Что раздел не делает автоматически

При настройке учитывайте границы функции:

* файл подключается по ссылке; отдельной загрузки файла с компьютера в этой форме нет;
* все пары внешнего файла не импортируются автоматически;
* валюты, платёжные системы, города и направления по данным файла не создаются;
* привязки к направлениям по совпадению названий не назначаются;
* несколько файловых курсов не объединяются без заданной формулы;
* резервы, лимиты и комиссии из файла не переносятся автоматически в настройки направления;
* ссылки на переименованные теги в формулах не заменяются автоматически;
* отключение пары не останавливает чтение её курса при обновлении;
* в текущем списке источников нет отдельной кнопки ручного обновления файла.

Правила построения выражений, варианты XML и JSON, подготовка CSV, обратные пары, городские записи и дополнительные примеры приведены в статье

{% content-ref url="/pages/KONR7qm5JXawJJSC679u" %}
[Форматы файлов и правила подготовки данных](/guide/kursy/istochniki/kursy-iz-faila/formaty-failov-i-pravila-podgotovki-dannykh.md)
{% endcontent-ref %}
