Quad.Wiki

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

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

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

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

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

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

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

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

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

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

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

Пример 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)) 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)) 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")

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

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

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

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

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

  • No labels