Quad.Wiki

Настройка прайса: валюта

Если в прайсе все цены в одной валюте, то эта валюта указывается здесь:

Для цены и РЦ можно указать разную валюту.

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

 

Если для этого прайса будет какой-то специальный курс, отличный от общего, то его можно ввести во вкладке “Импорт выбранных прайсов” в колонках “Курс (формула)” или “РЦ курс (формула)

Или просто в колонках “Курс” и “РЦ курс” если это какой-то фиксированный курс и не нужно его считать от курса нацбанка.

Мультивалютные прайсы

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

 

Код должен соответствовать коду в Конфигурации.

Если не соответствует, то нужно заменить текст с помощью справочника замен.

Так же для каждой валюты можно ввести индивидуальный курс поставщика, как это сделать написано здесь в пункте “4. Если у поставщика в прайсе несколько валют”.

Пример 1. Код валюты указан в отдельной колонке

Настройки:

Так как для русских рублей указан не код валюты, а “руб”, то его нужно заменить на RUB, и сделать это в 2х колонках.

Для этого создается справочник замен:

и выбираем его для двух колонок

 

Пример 2. Код валюты указан с помощью форматирования

Пример прайса:

Вывод валюты форматированием - это когда вы вместе с цифрой цены в ячейке видите и пометку валюты, какой-то символ, например $, или код валюты EUR. При этом, если выделить эту ячейку, то в строке формулы не видно этого текста, а видно только одно число или выражение. Это значит, что текст не вписан и его нельзя определить исходя из текста в ячейке, а нужно определять по форматированию ячейки.

 

Код валюты в этом прайсе определяется с помощью макроса:

'индекс листа SHEET_IDX = Array(1) 'SHEET_IDX = Array(1,3,5) 'список строк, которые присутствуют в формате ячейки TEXT_ARRAY = Array("$", "e") 'список кодов валют (в том же порядке как и искомый текст) CURR_ARRAY = Array("USD", "EUR") 'валюта цены, если не найдена ни один текст из списка DEFAULT_PRICE_CURR = "RUB" 'валюта РЦ, если не найдена ни один текст из списка DEFAULT_RC_CURR = "RUB" 'колонка с ценой (0, если в прайсе нет цены) CLMN_PRICE = 5 'колонка, в которую будет помещен код валюты цены CLMN_RESULT_PRICE = 20 'колонка с РЦ (0, если в прайсе нет РЦ) CLMN_RC = 0 'колонка, в которую будет помещен код валюты РЦ CLMN_RESULT_RC = 0 'начальная строка, с которой начинаются товары в прайсе FIRST_ROW = 16 Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.EnableEvents = False for n = LBound(SHEET_IDX) To Ubound(SHEET_IDX) Set Sht = Sheets(SHEET_IDX(n)) For i = FIRST_ROW To Sht.UsedRange.Rows.Count if CLMN_PRICE > 0 then If Sht.Cells(i, CLMN_PRICE).Value <> "" Then str_format = Sht.Cells(i, CLMN_PRICE).NumberFormat is_found = False For j = LBound(TEXT_ARRAY) To Ubound(TEXT_ARRAY) If InStr(1, str_format, TEXT_ARRAY(j)) > 0 Then Sht.Cells(i, CLMN_RESULT_PRICE).Value = CURR_ARRAY(j) is_found = True Exit For End If Next j If Not is_found Then Sht.Cells(i, CLMN_RESULT_PRICE).Value = DEFAULT_PRICE_CURR End If End If End If if CLMN_RC > 0 then If Sht.Cells(i, CLMN_RC).Value <> "" Then str_format = Sht.Cells(i, CLMN_RC).NumberFormat is_found = False For j = LBound(TEXT_ARRAY) To Ubound(TEXT_ARRAY) If InStr(1, str_format, TEXT_ARRAY(j)) > 0 Then Sht.Cells(i, CLMN_RESULT_RC).Value = CURR_ARRAY(j) is_found = True Exit For End If Next j If Not is_found Then Sht.Cells(i, CLMN_RESULT_RC).Value = DEFAULT_RC_CURR End If End If End If Next i Next n Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True

 

В макросе нужно указать следующие настройки:

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

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

Список кодов валют - указывается список кодов волют, соответственно списку искомых текстов.

Формат ячейки можно посмотреть при помощи файла

Quad Solutions\files\6_ data\Проверка формата ячейки.xlsm

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

Применяемый формат будет виден после текста NumberFormat =

Найдите в этом тексте какую-то подстроку, которая есть только для формата этой валюты, например символ валюты или код валюты. В примере выше это текст USD

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

'список строк, которые присутствуют в формате ячейки TEXT_ARRAY = Array("$", "e", "руб") 'список кодов валют (в том же порядке как и искомый текст) CURR_ARRAY = Array("USD", "EUR", "RUB")

 

Какую-то одну валюту можно не указывать, а в настройках сделать ее валютой по умолчанию - в этом случае нужно задать соответствия для всех валют, кроме этой. Валюта по умолчанию задается отдельно для валюты цены и валюты РЦ.

Указать колонки, в которых проверять формат цены и РЦ, и колонки, в которые будет помещен результат, т.е. записан код валюты.

Указать начальную строку, с которой начинаются товары в прайсе.

 

После выполнения макроса он запишет код валют в колонку результатов:

Эта колонка указывается в качестве Кода валюты при настройке прайса.