Як заповнювати поля прайс-листа формулою

35 хв

Elbuz сам заповнює поля прайсу, яких немає у файлі постачальника: ви один раз описуєте формулою, з чого складається значення, а програма рахує його при кожному завантаженні.

Коли це знадобиться:

  • Готової назви немає, а бренд і модель лежать окремими колонками — формула склеює назву, і товар упізнається між завантаженнями.
  • Ціна не повинна перевищувати рекомендовану — формула ставить РРЦ там, де ціна постачальника вища.
  • Потрібна формула для ціни чи тексту — бібліотека рецептів дає готові вирази з прикладами.
  • Потрібне значення з вашого каталогу — формула бере його із зіставленого товару й не обнуляє решту рядків.

З чого почати: перша формула за три кроки у вікні «Формули для полів».

Розмова з підтримкою — замість читати: навіщо це потрібно, що налаштувати і що ви отримаєте.

Що вміють формули

Де це і хто має доступ

Пункту меню й ярлика у вікна немає: воно відкривається кнопкою з п'яти місць. Усі ведуть в одне вікно, різниця лише в тому, для якого прайсу воно відкриється.

З переліку прайс-листів
оберіть джерело в переліку ліворуч → бургер у шапці джерела → група «Ціни та націнки» → «Формули для полів»
З картки прайс-листа
секція «Додатково» → кнопка «Формули для полів»
Із секції «Колонки» картки
кнопка «Формули» в панелі над сіткою полів
З вкладки товарів прайсу
бургер над сіткою, підказка «Додаткові операції» → «Формули для полів». Це ж єдиний вхід у формули для всіх прайсів одразу
З вікна «Завантаження з аркушів»
меню операцій аркуша → «Формули для полів». Створені звідси формули прив’язані до цього аркуша
Право доступу
право «Формули для полів» у правах груп — на перегляд, правку й застосування разом
Підготувати
прайс, який хоча б раз завантажився, з налаштованими адресами колонок

Формула бере значення з уже розібраних полів, а не з сирого файла. Дрібнішого поділу прав усередині вікна немає, модуля теж: формули доступні на будь-якому тарифі.

Розгорнуте бургер-меню джерела прайс-листа з групою «Ціни та націнки»
1Пункт «Формули для полів»
  1. «Формули для полів» — пункт у групі «Ціни та націнки», що відкриває редактор формул для полів прайс-листа.

Вікно ділиться навпіл: ліворуч список формул цього прайсу, праворуч редактор обраної формули. Межу між ними можна пересунути мишкою — ширина запам’ятається до наступного разу.

Вікно «Формули для полів» цілком
1Кнопка «Додати формулу»
2Кнопка «Застосувати формули»
3Список формул зліва
4Межа між списком і редактором
  1. «Додати формулу» відкриває пошук поля для нової формули.
  2. «Застосувати формули» перераховує значення в усіх рядках прайсу — застосовується обережно, без відкату.
  3. Список формул зліва показує поля, для яких уже задані формули.
  4. Межу між списком і редактором можна тягнути мишею, змінюючи ширину панелей.

Перша формула за три кроки

Доки жодна формула не вибрана, права частина вікна показує три кроки під заголовком «Як налаштувати формули». Ось вони докладніше.

Крок перший: обрати поле

Кнопка «Додати формулу» відкриває список полів із пошуком («Пошук поля...»). Обираєте те поле, значення якого треба обчислювати, — воно й стане полем-приймачем формули.

У списку два різновиди рядків: усі поля товару прайсу, включно з тими, які ви завели самі, і всі активні характеристики товару. Характеристик зазвичай на порядок більше, ніж полів, тому пошуком тут користуються частіше, ніж прокруткою.

Поповер вибору поля для нової формули
1Поле пошуку «Пошук поля...»
2Рядок списку полів
  1. Поле пошуку звужує список полів за назвою чи кодом.
  2. Клік по рядку списку одразу створює формулу для обраного поля.

Поле-приймач задається один раз. У списку формул його колонка «Назва поля» не редагується: щоб рахувати інше поле, додайте нову формулу, а стару вимкніть або видаліть.

Обмежень за типом поля немає: приймачем може бути і текст, і число, і ціна. Від типу залежить тільки округлення результату — про нього окремий розділ.

Крок другий: скласти вираз

Праворуч відкривається редактор під заголовком «Формула поля», поруч — назва обраного поля. Редактор із нумерацією рядків і підсвіткою: назви полів у фігурних дужках видно окремим кольором, і одразу помітно, якщо дужка не закрилася.

Операнди не набирають руками. Кнопка «Поля для формул» відкриває довідник усіх доступних полів; подвійний клік по рядку вставляє його у позицію курсора. Другий спосіб — Ctrl+Space просто в редакторі: спливе список полів, які підходять до вже набраних літер.

Іконка «?» біля редактора показує коротку довідку із синтаксису: поле прайсу — {Прайс: Цена}, вираз — {Прайс: Цена} * 1.18, умова — CASE WHEN … THEN … ELSE … END.

Редактор формули для поля «Ціна РРЦ»
1Чіп із назвою поля-приймача
2Кнопка «Поля для формул»
3Текст формули в редакторі
4Кнопка «Застосувати цю формулу»
  1. Чіп показує, до якого поля належить поточна формула.
  2. «Поля для формул» відкриває довідник полів і макросів для вставки у формулу.
  3. Формула написана мовою CASE WHEN і посилається на поля прайсу через макроси у фігурних дужках.
  4. «Застосувати цю формулу» перераховує значення лише цього поля в усіх рядках прайсу — застосовується обережно, без відкату.

Кнопки «Зберегти» у формули немає. Текст формули їде на сервер приблизно за секунду після того, як ви перестали друкувати; перемикачі й примітка зберігаються одразу. Після першого збереження у відкритому вікні над редактором з’являється відмітка «Збережено ·» з часом — за нею й перевіряють, що правка дійшла.

Крок третій: порахувати

Нова формула створюється вже активною — вмикати нічого не треба, хоча підказка в самому вікні радить це зробити. Перемикач «Активність» (він є і в редакторі, і колонкою в списку) потрібен для зворотного: щоб формулу вимкнути, не видаляючи її.

Поки поле формули порожнє, вона пропускається. Але щойно ви допечатали вираз, через секунду він збережеться — і формула вже боєва: наступне завантаження прайсу порахує її без жодного вашого підтвердження. Якщо вираз ще недописаний, а прайс от-от завантажиться, зніміть «Активність».

Порахувати одразу можна двома кнопками:

  • «Застосувати формули» в панелі вікна — за всіма активними формулами цього прайсу;
  • «Застосувати цю формулу» в редакторі — тільки за поточною.

Поки триває перерахунок, висить повідомлення «Виконується перерахунок...». Наприкінці — «Формули застосовано». Якщо вкладка товарів прайсу відкрита поруч, її сітка оновиться сама, і нові значення видно без додаткових натискань; якщо ні — відкрийте її, щоб перевірити результат.

Як керувати списком формул

Крім назви поля, у списку формул є колонки, які варто знати:

  • «Примітка» — текст для себе, на розрахунок не впливає. Через півроку саме він пояснить, навіщо ця формула.
  • «Порядок» — число, яке вирішує, котра формула порахується раніше.
  • «Активність» — прапорець, вимикає формулу, не видаляючи її.
  • «Назва листа» — заповнена тільки у формул, створених із вікна «Завантаження з аркушів».
  • «ID поля» — код поля-приймача; знадобиться, коли шукатимете формулу за повідомленням про помилку.
  • «Оновлювати ключ унікальності товару» — прапорець, який має сенс лише для поля найменування; про нього в розділі про характеристики й фото.

«Примітка», «Порядок» і обидва прапорці правляться подвійним кліком просто у списку; «Назва поля» і «Назва листа» — ні. Рядки, у яких приймач це характеристика, підсвічені синім: їх видно, не читаючи назв. Видаляє формулу кошик у панелі, зі звичайним підтвердженням, після якого показується «Формулу видалено».

Звідки формула бере значення

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

Макрос виглядає як назва поля у фігурних дужках із префіксом: {Прайс: Ціна}. Префікс — це відповідь на питання «звідки брати».

ПрефіксЩо підставляєСкільки полів доступно
{Прайс: …}поле цього ж товару з прайсу102
{Товар БК: …}поле зіставленого товару вашого каталогу171
{Контрагент: …}поле картки постачальника, чий це прайс156
{Атрибут прайс: …}значення характеристики, яка прийшла в прайсіза переліком характеристик
{ПрайсКонкурентівТП: …}поле товару на сайті торгового майданчикатільки всередині блокового макроса

Довідник полів відкривається кнопкою «Поля для формул». У ньому чотири колонки — «Поле», «Група», «Макрос» і «Код», — а рядки згруповані за колонкою «Група», щоб не шукати ціну серед характеристик. Клік по рядку показує опис поля внизу, подвійний клік вставляє макрос у формулу.

Довідник полів для формул із колонками «Поле», «Група», «Макрос», «Код»
1Стовпець «Макрос» зі значенням у фігурних дужках
2Підказка про подвійний клік для вставки макросу
  1. У колонці «Макрос» вказано код підстановки в фігурних дужках, який вставляється у формулу.
  2. Підказка над списком пояснює: клік по рядку показує опис поля внизу, подвійний клік вставляє макрос у редактор формули.

Старі формули з російськими назвами полів — {Прайс: Цена} замість {Прайс: Ціна} — працюють і далі: програма розпізнає назву будь-якою з увімкнених мов. Переписувати їх не треба. Подвійний клік у довіднику вставляє назву тією мовою, якою у вас інтерфейс.

Поля самого прайсу і картки постачальника

Найчастіший випадок: усе потрібне вже є в рядку, просто не в тому полі. Ціна є, а рекомендованої немає — рахуємо її від ціни. Назви немає, а бренд і модель є — склеюємо. Артикул є, але з нулями попереду — обрізаємо.

Поля картки постачальника доступні тим самим способом, з префіксом {Контрагент: …}. Це стає в пригоді, коли значення однакове для всього прайсу й уже записане в картці контрагента, — тоді його не треба дублювати в кожній формулі.

Як узяти значення з каталогу, курсу валюти чи чужого прайсу

Поля товару вашого каталогу

Макрос {Товар БК: …} бере значення з картки товару вашого каталогу — того, з яким зіставлено рядок прайсу. Так, наприклад, підставляють у прайс ваш власний артикул виробника замість того, що надіслав постачальник.

Це працює тільки для тих рядків, у яких з каталогом уже зроблено.

У незіставленого товару поля каталогу порожні, і формула перезапише приймач порожнім значенням.

Як цього уникнути — у розділі про порожнє значення; як зіставити товари — Зіставлення товарів прайсу з каталогом.

Є і друга умова, про яку згадують рідше: формули мають рахуватися після зіставлення, а не до нього. Порядок дій усередині одного завантаження задається окремо — у порядку операцій. Якщо формули стоять там раніше за зіставлення товарів, макрос {Товар БК: …} відпрацює на ще не зіставлених рядках і запише порожнє значення, хоча зіставлення через крок таки відбудеться.

Курс валюти

Курс підставляється окремим макросом виду {CURRENCY_RATE_USD}, де останні три літери — код валюти з довідника валют. У формулі це звичайне число, на яке можна множити або ділити.

Якщо у валюти в довіднику заповнено націнку до курсу, підставиться курс уже з нею — не той, що показує банк.

Значення з прайсу іншого постачальника

Для цього є блокові макроси — вони пишуться у подвійних квадратних дужках і всередині містять звичайний макрос поля.

  • [[FromContractor_N{Прайс: Ціна}]] — бере значення того самого товару з прайсу контрагента з номером N.
  • [[ОтГруппыКонтрагента_1 MIN(IF({Прайс: Цена}=0, NULL, {Прайс: Цена}))]] — бере значення від цілої групи контрагентів. Усередині такого блока дозволені підсумкові функції: у цьому прикладі береться найменша ненульова ціна по групі.
  • [[ОтКонкурентаТПСтрока_N{ПрайсКонкурентовТП: Цена}]] — значення з N-ї за зростанням пропозиції на торговому майданчику.

Усі три є в довіднику полів: «Взяти значення від зазначеного контрагента», «Взяти значення від групи контрагентів» і «Взяти значення з рядка прайсу конкурента». Довідник вставляє їх латиницею — FromGroupContractor_N, RowFromCompetitorTP_N; обидва написання працюють однаково.

Що можна писати у формулі

Формула — це один вираз мови SQL, який дає одне значення для кожного рядка прайсу. Не послідовність кроків: якщо потрібні два кроки, робіть дві формули й розставте їм порядок.

У виразі можна писати:

  • макроси полів у фігурних дужках — {Прайс: Ціна};
  • числа з крапкою — 1.25, і текст в одинарних або подвійних лапках — 'Акція';
  • арифметику + - * / %, порівняння й логіку (таблиця порівнянь), CASE WHEN … THEN … ELSE … END;
  • функції з білого списку — нижче;
  • коментарі: -- до кінця рядка, # до кінця рядка і /* … */. Ними зручно підписувати гілки CASE, на розрахунок вони не впливають.

Шаблони найчастіших функцій є в довіднику «Поля для формул»: подвійний клік вставляє їх у редактор. Готові рецепти зібрані за задачами: ціна, назва й опис, умови, числа, текст.

Повний білий список функцій
ГрупаФункції
ЧислаROUND, CEIL, CEILING, FLOOR, TRUNCATE, MOD, ABS, SIGN, GREATEST, LEAST, POW, POWER, SQRT, EXP, LN, LOG, LOG10, LOG2, PI, RAND, тригонометрія (SIN, COS, TAN…)
УмовиIF, IFNULL, NULLIF, COALESCE, ISNULL, CAST, CONVERT
ТекстCONCAT, CONCAT_WS, REPLACE, SUBSTRING, SUBSTR, SUBSTRING_INDEX, MID, LEFT, RIGHT, TRIM, LTRIM, RTRIM, LOWER, UPPER, LCASE, UCASE, LENGTH, CHAR_LENGTH, LOCATE, INSTR, POSITION, LPAD, RPAD, REVERSE, REPEAT, SPACE, INSERT, FORMAT, FIELD, ELT, FIND_IN_SET, CHAR, ASCII, ORD, STRCMP, SOUNDEX, QUOTE, HEX, UNHEX, MD5, SHA1, SHA2, CRC32, TO_BASE64, FROM_BASE64
Регулярні виразиREGEXP_REPLACE, REGEXP_SUBSTR, REGEXP_INSTR, REGEXP_LIKE
ДатаNOW, CURDATE, CURTIME, DATE, YEAR, MONTH, DAY, DAYOFWEEK, WEEKDAY, WEEK, DAYNAME, MONTHNAME, LAST_DAY, DATE_FORMAT, DATE_ADD, DATE_SUB, DATEDIFF, TIMESTAMPDIFF, UNIX_TIMESTAMP, FROM_UNIXTIME, STR_TO_DATE та інші календарні
JSONJSON_EXTRACT, JSON_UNQUOTE, JSON_OBJECT, JSON_ARRAY, JSON_LENGTH, JSON_CONTAINS
ПідсумковіMIN, MAX, AVG, SUM, COUNT, GROUP_CONCAT — тільки всередині блокового макроса

Чого писати не можна

Формула з будь-яким пунктом нижче не виконується: поле не змінюється, решта формул застосовується, а ця потрапляє у вікно «Помилки у формулах» і рядком «Формулу пропущено…» в «Журнал операцій».

  • Функції поза білим списком і слова SELECT, UNION, INTO, VALUES, TABLE, WITH — повідомлення назве недопустимий фрагмент.
  • Символи ;, зворотні лапки, @, [, { поза текстом у лапках. Макрос із помилкою в назві поля програма не розпізнає, і він лишається у виразі фігурними дужками — тому помилка в назві поля теж приходить як «недопустимий фрагмент «{Прайс: …»».
  • Підсумкові функції прямо у виразі — MIN, MAX, SUM. Формула рахується для кожного рядка окремо, підсумовувати їй нічого.
  • Кома в числі й крапка з комою між аргументами, як в Excel: 1,1, IF(a; b; c).

Текст у лапках не перевіряється, тож CONCAT({Прайс: Найменування}, " (select)") працює.

Готові формули для ціни

Кожен рецепт можна вставити як є, замінивши назви полів на свої. Приймач усіх рецептів цього розділу — поле «Ціна», якщо не сказано інше. Націнку за діапазонами й за категоріями зручніше задати правилами ціноутворення: формула потрібна, коли правилами задачу не виразити.

Результат у полі-ціні програма ще раз округлює: до копійок, а з увімкненим «Округляти вгору» чи «Округляти вниз» — до цілого. Рецепти з копійками (ціна на ,99) працюють лише при вимкнених перемикачах.

Націнка за діапазонами ціни

Дешевий товар дорожчає на 30 %, середній — на 20 %, дорогий — на 10 %.

CASE WHEN {Прайс: Ціна} < 500 THEN {Прайс: Ціна} * 1.3 WHEN {Прайс: Ціна} < 2000 THEN {Прайс: Ціна} * 1.2 ELSE {Прайс: Ціна} * 1.1 END

Вийде: 400 → 520, 1 000 → 1 200, 5 000 → 5 500. Гілки перевіряються згори донизу, спрацьовує перша, умова якої виконалась.

Зменшити ціну на 12 %

{Прайс: Ціна} - ({Прайс: Ціна} * 12) / 100

Вийде: 100 → 88.

Ціна закінчується на ,99

CEIL({Прайс: Ціна}) - 0.01

Вийде: 248,30 → 248,99. Ціна піднімається до найближчого цілого й втрачає копійку.

Ціна закінчується на 9 гривень

FLOOR({Прайс: Ціна} / 10) * 10 + 9

Вийде: 248 → 249, 251 → 259. Ціна зростає щонайбільше на 9 гривень; падає лише тоді, коли вже закінчується на 9 з копійками: 259,50 → 259. На дешевих товарах +9 гривень — помітна частина ціни, перевіряйте результат на найдешевшій позиції прайсу.

Ціна закінчується на 99 гривень

FLOOR({Прайс: Ціна} / 100) * 100 + 99

Вийде: 1 234 → 1 299.

Округлити до десятків

ROUND({Прайс: Ціна}, -1)

Вийде: 1 234,50 → 1 230. Від'ємний другий параметр округлює ліворуч від коми: −1 — до десятків, −2 — до сотень.

Мінімальна маржа над собівартістю

Ціна не нижча за собівартість плюс 15 %.

GREATEST({Прайс: Ціна}, {Прайс: Ціна собівартість} * 1.15)

Вийде: ціна 100 і собівартість 95 → 109,25; ціна 200 і собівартість 95 → 200. Без заповненої собівартості — див. порожнє значення.

Не продавати дорожче за рекомендовану ціну

IF({Прайс: Ціна} > {Прайс: Ціна РРЦ} AND {Прайс: Ціна РРЦ} > 0, {Прайс: Ціна РРЦ}, {Прайс: Ціна})

Вийде: ціна 1 100 і РРЦ 999 → 999; ціна 900 і РРЦ 999 → 900; РРЦ 0 → ціна лишається своя.

Ціна з РРЦ, а без неї — закупівля з націнкою

IF({Прайс: Ціна РРЦ} > 0, {Прайс: Ціна РРЦ}, {Прайс: Ціна} * 1.25)

Вийде: РРЦ 999 → 999; РРЦ 0 і ціна 800 → 1 000.

РРЦ мінус 5 %, а без РРЦ — звичайна ціна

CASE WHEN {Прайс: Ціна РРЦ} > 1 THEN {Прайс: Ціна РРЦ} - ({Прайс: Ціна РРЦ} * 5) / 100 ELSE {Прайс: Ціна} END

Вийде: РРЦ 1 000 → 950; РРЦ 0 → звичайна ціна. Перевірка > 1 потрібна, бо товарів без РРЦ у прайсі зазвичай більшість, і без неї їхня ціна стала б нулем.

Перевести ціну за курсом

{Прайс: Ціна} * {CURRENCY_RATE_USD}

Вийде: 25 доларів при курсі 41,50 → 1 037,50. Курс підставляється з довідника валют разом із націнкою до курсу (курс валюти).

Собівартість плюс 4 %, до цілого

ROUND({Прайс: Ціна собівартість} * 1.04, 0)

Вийде: 1 000 → 1 040.

Відсоток прибутку

Приймач — числове поле, не ціна.

(({Прайс: Ціна} - {Прайс: Ціна собівартість}) / {Прайс: Ціна}) * 100

Вийде: ціна 150 і собівартість 100 → 33,33. Ціна 0 дає ділення на нуль, і поле стане нулем.

Готові формули для назви й опису

Склеїти назву з виробника й моделі

CONCAT_WS(' ', {Прайс: Виробник}, {Прайс: Модель})

Вийде: «Samsung» і «A55» → «Samsung A55». Перший параметр — роздільник між частинами. Якщо одна з колонок порожня, роздільник подвоїться: «Samsung A55» з двома пробілами.

Замінити слово в назві

REPLACE({Прайс: Найменування}, 'Смартфон', 'Телефон')

Вийде: «Смартфон Samsung A55» → «Телефон Samsung A55». Заміна враховує регістр: «смартфон» з малої літери не зміниться.

Обрізати назву до 60 символів

LEFT({Прайс: Найменування}, 60)

Вийде: перші 60 символів назви, решта відкидається. Коротші назви не змінюються.

Додати префікс або суфікс

CONCAT('Акція! ', {Прайс: Найменування}) або CONCAT({Прайс: Найменування}, ' (під замовлення)')

Вийде: «Samsung A55» → «Акція! Samsung A55» або «Samsung A55 (під замовлення)». Повторний запуск додасть префікс ще раз — звузьте формулу умовою.

Очистити опис від HTML-тегів

Приймач — «Опис короткий» або «Опис повний».

REGEXP_REPLACE({Прайс: Опис повний}, '<[^>]*>', '')

Вийде: «

Екран 6,6"

» → «Екран 6,6"».

Прибрати зайві пробіли

TRIM(REGEXP_REPLACE({Прайс: Найменування}, ' +', ' '))

Вийде: « Samsung Galaxy A55 » → «Samsung Galaxy A55».

Прибрати нулі на початку артикула

TRIM(LEADING '0' FROM {Прайс: Артикул виробника})

Вийде: «000123» → «123».

Прибрати назву бренда з категорії постачальника

TRIM(REPLACE({Прайс: Категорія з прайсу}, CONCAT('/ ', {Прайс: Виробник}), ''))

Вийде: «Смартфони / Samsung» → «Смартфони».

Скопіювати артикул із картки каталогу

IF(IFNULL({Товар БК: Артикул виробника}, '') = '', {Прайс: Артикул виробника}, {Товар БК: Артикул виробника})

Вийде: зіставлені товари отримають артикул із каталогу, решта збереже свій (чому потрібен IFNULL).

Умови: як написати «якщо … то …»

Умова пишеться мовою SQL, а не Excel: частини розділяються комами, текст — в одинарних лапках, знак = на початку формули не ставиться.

Два варіанти: IF

IF({Прайс: Кількість} > 0, 'В наявності', 'Під замовлення')

Вийде: кількість 5 → «В наявності», 0 → «Під замовлення».

Кілька варіантів: CASE WHEN … THEN … ELSE … END

CASE {Прайс: Виробник} WHEN 'Apple' THEN '12 міс.' WHEN 'Samsung' THEN '24 міс.' ELSE '6 міс.' END

Вийде: для поля «Гарантія» Samsung → «24 міс.», будь-який інший виробник, крім Apple, → «6 міс.». Без ELSE товари, що не підійшли жодній гілці, отримають порожнє значення.

Порівняння

Що перевіритиЯк записати
дорівнює / не дорівнює{Прайс: Виробник} = 'Samsung', <> 'Samsung'
більше, менше>, <, >=, <=
у проміжку{Прайс: Ціна} BETWEEN 1000 AND 5000 — межі включно
містить текст{Прайс: Найменування} LIKE '%Pro%'
одне зі значень{Прайс: Виробник} IN ('Apple', 'Samsung')
кілька умовAND — обидві, OR — хоча б одна, NOT — заперечення

Умова всередині умови

IF({Прайс: Ціна} > 1000, IF({Прайс: Кількість} > 0, 'Дорогий, є', 'Дорогий, під замовлення'), 'Бюджетний')

Вийде: ціна 1 200 і кількість 5 → «Дорогий, є»; ціна 500 → «Бюджетний». Більше двох рівнів читати важко — краще CASE WHEN з умовами через AND.

Запасне значення: IFNULL і COALESCE

COALESCE(NULLIF({Прайс: Ціна РРЦ}, 0), {Прайс: Ціна})

Вийде: РРЦ 899 → 899; РРЦ 0 → звичайна ціна. NULLIF перетворює нуль на відсутнє значення, COALESCE бере перше наявне зі списку. IFNULL(x, запасне) — те саме для двох значень.

Функції для чисел і тексту

Числа

ФункціяЩо робитьПриклад
ROUND(x, n)округлює до n знаків після коми; від'ємне n — до десятків, сотеньROUND(1.298, 1) → 1.3; ROUND(1234.5, -1) → 1230
CEIL(x)до цілого вгоруCEIL(1.23) → 2
FLOOR(x)до цілого внизFLOOR(1.23) → 1
TRUNCATE(x, n)відкидає знаки після n-го без округленняTRUNCATE(1.2100743, 2) → 1.21
GREATEST(a, b, …)найбільше зі значень — «не менше ніж»GREATEST({Прайс: Ціна}, 10): 3 → 10
LEAST(a, b, …)найменше зі значень — «не більше ніж»LEAST({Прайс: Ціна}, 1200): 1500 → 1200
ABS(x), MOD(x, y)модуль числа, остача від діленняMOD(17, 5) → 2

Десяткова частина пишеться через крапку: 1.1. З комою 1,1 програма прочитає два числа, і формула потрапить у «Помилки у формулах».

Текст

ФункціяЩо робитьПриклад
CONCAT(a, b, …)склеює значенняCONCAT('Samsung', ' ', 'A55') → Samsung A55
CONCAT_WS(роздільник, a, b, …)склеює через роздільник, відсутні значення пропускаєCONCAT_WS(', ', 'Чорний', '256 ГБ') → Чорний, 256 ГБ
REPLACE(текст, що, на що)замінює всі входження, з урахуванням регіструREPLACE('A55 5G', ' 5G', '') → A55
SUBSTRING(текст, з, скільки)шматок тексту з позиціїSUBSTRING('iPhone 15 Pro', 8, 2) → 15
LEFT(текст, n), RIGHT(текст, n)перші або останні n символівLEFT('Samsung', 3) → Sam
SUBSTRING_INDEX(текст, роздільник, n)текст до n-го роздільникаSUBSTRING_INDEX('Samsung Galaxy A55', ' ', 1) → Samsung
TRIM, LTRIM, RTRIMприбирають пробіли з краївTRIM(' A55 ') → A55
UPPER, LOWERвеликі або малі літериUPPER('ab-12x') → AB-12X
CHAR_LENGTH(текст)кількість символівCHAR_LENGTH('Ціна') → 4
LOCATE(що, де)позиція фрагмента, 0 — якщо немаєLOCATE('Pro', 'iPhone 15 Pro') → 11
REGEXP_REPLACE(текст, шаблон, на що)заміна за регулярним виразомдив. очистку HTML

LENGTH рахує байти, а не символи: для кирилиці виходить удвічі більше — LENGTH('Ціна') дає 8. Для довжини назви беріть CHAR_LENGTH. І ще: CONCAT з відсутнім значенням дає відсутнє значення цілком — де частина може бути відсутня, беріть CONCAT_WS.

Як звузити формулу умовою

Під редактором є згортний блок «Умова застосування (необов’язково)». У ньому конструктор умов по полях товару прайсу: «назва містить», «ціна більше», «артикул починається з» і так далі. Формула рахуватиметься тільки для тих рядків, які під умову підпадають.

Кілька рядків умови за замовчуванням об’єднуються словом «АБО» — тобто досить, щоб виконався будь-який із них. Перемикається це в самому конструкторі. Під умовою програма переказує її звичайними словами: перш ніж зберігати, варто прочитати цей переказ і переконатися, що вийшло те, що ви мали на увазі.

Блок «Умова застосування (необов'язково)» формули поля
1Конструктор умов застосування формули
2Кнопка «Зберегти» умови
  1. Конструктор дозволяє додати правило або групу правил і обрати поле, оператор та значення умови.
  2. Кнопка «Зберегти» записує умову застосування формули; поруч — «Очистити все» для скидання побудованих правил.

Унизу блока — «Очистити умову» і «Зберегти умову»; після збереження показується «Успішно оновлено». Коли ви стаєте на формулу з умовою, блок розкривається сам.

Умова зберігається окремо від тексту формули, і «Очистити умову» саме по собі її не знімає: кнопка тільки очищає конструктор на екрані. До формули порожня умова доїде лише після «Зберегти умову».

Умова — найдешевший спосіб випробувати нову формулу без ризику. Обмежте її одним артикулом, натисніть «Застосувати цю формулу», подивіться результат у сітці товарів, і тільки потім знімайте обмеження.

Коли формула рахується

Жоден із цих моментів не настає тоді, коли ви дописали формулу: сама по собі правка значень у товарах не змінює.

  1. Під час кожного завантаження прайсу — доки крок «Застосування формул для полів» стоїть у переліку операцій цього прайсу. Новий прайс отримує його одразу, але з переліку крок можна прибрати; тоді формули при завантаженні рахуватися не будуть (порядок операцій).
  2. Кнопкою в цьому вікні. «Застосувати формули» — за всіма активними формулами прайсу, «Застосувати цю формулу» — тільки за обраною.
  3. Разом із ручним застосуванням націнки. Кнопка «Застосувати націнку для товарів» після перерахунку цін проганяє й формули — але лише ті, приймач яких є ціною або числом. Текстові формули в цьому прогоні не виконуються.

Формула перезаписує поле, і попереднього значення не лишається ніде. Відкату немає: повернути вихідні дані можна лише повторним завантаженням прайсу. Перший прогін нової формули робіть на одному товарі.

Порядок застосування

Усередині одного прогону формули йдуть за колонкою «Порядок». Це важливо, коли одна формула користується результатом іншої: щоб зібрана назва потрапила у формулу, яка потім рахує з неї артикул, у першої порядок має бути меншим.

Загальна черга така:

  1. формули цього прайсу — за колонкою «Порядок»;
  2. формули, прив’язані до аркуша Excel, — тільки якщо в прайсу увімкнено налаштування за аркушами; інакше вони в прогін не потрапляють, і повідомлення про це немає;
  3. формули для всіх прайс-листів — завжди останніми.

Перед першою формулою прогону програма оновлює службові значення рядка — назву категорії, постачальника і його групу, статус наявності. Тому макроси на кшталт {Прайс: Категорія} бачать уже свіжі значення.

Що відбувається з кожною формулою в прогоні. Перша розвилка — перевірка запису: формула з помилкою пропускається, решта рахується далі. Друга стосується тільки поля найменування.
формул немаєє формулинітактакнітакніЗапуск — крок «Застосуванняформул для полів» або кнопка увікніВідбір формул — увімкнена«Активність» і вираз не порожнійКінець прогонуОновлення службових значеньрядків прайсуЧергова формула за колонкою«Порядок»Запис формули пройшовперевірку?Формулу пропущено — рядок ужурналі, при ручному запуску вонау вікні «Помилки у формулах»Значення записується в рядки, щопідпадають під «Умовузастосування»поле-ціна при цьому округлюєтьсяПриймач — найменування зпрапорцем «Оновлювати ключунікальності товару»?Ключ унікальностіперераховуєтьсяЄ ще формули?
  • Початок або кінець
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді

Друге натискання «Застосувати формули» рахує від уже порахованого. Формула {Прайс: Ціна} * 1.1, записана в поле «Ціна», підніме ціну на 10 % при кожному натисканні: 100 → 110 → 121 → 133. Захисту «застосувати один раз» у формул немає, на відміну від націнки.

Якщо формула читає й пише те саме поле, натискайте кнопку один раз і перевіряйте результат, а не тисніть її повторно «про всяк випадок».

І окремо про кому: десяткова частина числа пишеться через крапку. З комою — * 1,1 — програма прочитає її як два різні числа, формула не виконається жодного разу й потрапить до вікна «Помилки у формулах».

Формула і націнка: хто останній

Якщо і формула, і правило ціноутворення пишуть в одне поле, переможе те, що виконується останнім. Місце формул у ланцюгу операцій завантаження налаштовується: до переоцінки товару або після неї. Як стоять ці два кроки у вашого прайсу, видно у вікні «Перелік операцій».

Детальніше: порядок операцій під час завантаження прайсу і правила ціноутворення.

«Історія націнки товару» показує, як склалася ціна за правилами ціноутворення. Роботи формули там не видно — це окремий механізм, і власної історії він не веде.

Коли пораховане потрапить у ваш каталог

Формула пише тільки в рядки прайсу: картку товару вашого каталогу перерахунок не змінює. У каталог значення потрапляє під час «Оновлення базового каталогу», і лише в ті поля, для яких у «Зв'язках полів» джерелом указано це поле прайсу.

Запустити оновлення можна кнопкою «Оновити» у вікні оновлення або дочекатися прогону за розкладом (коли оновлення запускається).

Якщо в сітці товарів прайсу значення вже нове, а в картці товару старе, то або оновлення каталогу після перерахунку ще не проходило, або поле-приймач формули не вказане джерелом у «Зв'язках полів».

Як задати формулу для всіх прайс-листів

Якщо однакову формулу треба застосувати до всіх постачальників, заводити її в кожному прайсі не потрібно. Вхід один: у вікні прайс-листів оберіть ліворуч «Усі джерела», відкрийте вкладку «Усі товари» і викличте «Формули для полів» з бургера над сіткою (підказка «Додаткові операції»).

Ознака того, що ви саме в цьому режимі, — червоний рядок під панеллю кнопок: «Використовуються налаштування для всіх прайс-листів.» Це не помилка й не попередження про поломку; це нагадування, що правки тут стосуються всіх джерел.

Панель кнопок і попередження про формули для всіх прайс-листів у режимі «Усі джерела»
1Попередження про застосування формул до всіх прайс-листів
2Кнопка «Застосувати формули»
  1. Червоний рядок попереджає, що у режимі «Усі джерела» формули застосовуються одразу до всіх прайс-листів.
  2. У цьому режимі кнопка «Застосувати формули» перераховує значення в усіх прайс-листах одночасно — тому вона тільки показана, не натискаємо.

Такі формули рахуються після формул конкретного прайсу. Якщо вони пишуть в одне поле, переможе загальна: результат формули прайсу буде перезаписаний. Це найчастіша причина «формула правильна, а значення чуже».

Кнопка «Застосувати формули» в цьому режимі обходить по черзі всі активні прайси всіх активних контрагентів. Що видно, поки перерахунок іде, і що буде, якщо він обірветься, — у розділі про обрив і тривалість.

Що буде, якщо перерахунок обірвався

Що лишається в прайсі після обриву перерахунку

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

Три приймачі записуються в кілька кроків, і обрив між ними лишає частину роботи зробленою:

  • характеристика — спочатку товарам прайсу додаються порожні рядки цієї характеристики, потім у них записується значення;
  • «Посилання на фото товару» — спочатку оновлюється перелік фотографій, потім додаються нові посилання, прибираються дублі, і лише тоді записується саме поле;
  • найменування з прапорцем «Оновлювати ключ унікальності товару» — спочатку записується назва, потім перераховується ключ.

У режимі «Усі джерела» прайси обробляються один за одним. Обрив лишає вже пройдені прайси перерахованими, а решту — ні. У «Журнал операцій» ручний перерахунок пише тільки рядки про формули, пропущені через помилку, тож до якого прайсу дійшло, там не видно.

У вікні обрив виглядає так: повідомлення «Виконується перерахунок...» зникає, кнопка «Застосувати формули» знову активна, а замість «Формули застосовано» з'являється червоне «Формули не застосовано: сервер не відповів або відповів помилкою. Повторіть; якщо помилка повториться — дивіться журнал операцій.»

Чи безпечно натиснути ще раз. Повторне натискання рахує всі активні формули з початку, включно з тими, що вже встигли виконатися до обриву.

  • Якщо формула бере значення тільки з інших полів (наприклад, склеює назву з бренду й моделі), повтор запише те саме.
  • Якщо формула читає й пише те саме поле, повтор порахує її вдруге від уже порахованого, як у прикладі з ціною вище. Тоді замість повторного натискання завантажте прайс заново: завантаження бере значення з файла, і формули на кроці «Застосування формул для полів» порахуються по них один раз.

Що видно, поки перерахунок іде

Ліміту на кількість рядків чи прайсів немає, і на пачки перерахунок не ділиться. Він іде одразу, поки відкрите вікно, а не у фоновій черзі. У режимі «Усі джерела» для кожного прайсу по черзі виконуються формули прайсу, формули аркушів і формули для всіх прайс-листів.

Повідомлення «Виконується перерахунок...» тримається, поки не прийде відповідь сервера. Ще одна ознака, що перерахунок іде, — неактивна кнопка «Застосувати формули» з індикатором поруч: натиснути її вдруге, поки перерахунок не завершився, не можна. Кінець перерахунку — повідомлення «Формули застосовано» або вікно «Помилки у формулах».

Що буде з результатом у полі: характеристики, фото, назва, округлення

Два поля-приймачі поводяться не так, як решта, і про це варто знати до того, як формула виконається. Сюди ж належить прапорець у списку формул, який має сенс лише для одного поля.

Характеристика товару

Коли приймачем обрана характеристика, значення записується в характеристику товару, а не в його рядок. Якщо у товару такої характеристики ще не було, програма створює її сама — тобто формула не тільки заповнює значення, а й додає товарам характеристику, якої постачальник не надсилав.

Нової характеристики в довіднику формула не створює: приймачем можна обрати тільки наявну. Ще дві умови:

  • якщо в характеристики немає назви мовою інтерфейсу, формула заповнить її лише в тих товарах прайсу, де вона вже була;
  • характеристика додається тільки товарам, що проходять умову застосування формули.

Це дані прайсу: у картки вашого каталогу вони потрапляють, як інші поля прайсу, — через оновлення базового каталогу.

Посилання на фото

Поле «Посилання на фото товару» обробляється двічі: результат потрапляє і в саме поле, і до переліку фотографій товару. Після цього однакові посилання прибираються, тож повторний прогін не наплодить дублів одного знімка.

Прапорець «Оновлювати ключ унікальності товару»

Цей прапорець стоїть у кожному рядку списку, але працює тільки для поля найменування. Для решти полів він не робить нічого.

Навіщо він потрібен: за назвою товару програма впізнає, що це той самий товар, який приходив минулого разу. Якщо формула переписує найменування, ключ упізнавання «поїде», і при наступному завантаженні той самий товар вважатиметься новим. Прапорець змушує програму перерахувати ключ одразу після формули — і впізнавання не ламається.

Підказка у вікні каже прямо: «Ключ унікальності товару перераховується лише за формулою поля «Найменування» — на інших полях ця галочка нічого не змінює.» Без прапорця ключ лишається порахованим із назви з файла. Вмикайте прапорець одразу разом із формулою і не перемикайте його в робочого прайсу. Той самий прапорець є у вікні формул полів каталогу.

Як округлюється результат

Результат округлюється тільки в полів-цін — тими самими перемикачами «Округляти вгору» й «Округляти вниз», що й ціна після націнки; коли обидва вимкнені, ціна округлюється до копійок. Налаштування спільні: змінивши їх заради формули, ви зміните й підсумкові ціни всіх прайсів. Детальніше: Округлення і кратність ціни.

Текстові поля й поля з дробовими числами, які не є цінами, не округлюються взагалі. Потрібне округлення в такому полі — робіть його функцією ROUND усередині формули.

Як не обнулити поле порожнім значенням

Порожнє порожньому не рівня, і різниця тут коштує даних.

  • Порожня колонка прайсу — це порожній рядок або нуль. Склейка з нею виживе: CONCAT({Прайс: Виробник}, ' ', {Прайс: Артикул виробника}) у товара без виробника дасть артикул із пробілом попереду.
  • Значення немає зовсім — товар не зіставлений із каталогом, ділення пішло на нуль, блоковий макрос нічого не знайшов. Тоді порожнім стає весь вираз, скільки б у ньому не було інших операндів.

Такий результат не залишає поле як було, а обнуляє його. У числове поле й у поле ціни ляже нуль, у текстове — порожній рядок. Ділення на нуль поводиться так само: жодної помилки, просто нуль у полі.

Найчастіше на це наражаються з формулою {Товар БК: …} на прайсі, де зіставлено не всі товари. Зіставлені отримають значення з каталогу, а всі інші — нуль або порожній рядок замість того, що в них було. Причому «того, що було» вже ніде немає: відкату у формул не передбачено.

Захист — перевірка всередині формули, але писати її треба уважно. Напрошується варіант «якщо порожньо, то взяти з прайсу»:

IF({Товар БК: Артикул виробника} = "", {Прайс: Артикул виробника}, {Товар БК: Артикул виробника})

Так робити не можна. Ця перевірка рятує тільки зіставлений товар, у якого поле каталогу порожнє. На незіставленому значення не порожнє, а відсутнє, і порівняння не дає ні «так», ні «ні»: формула йде в другу гілку й знову бере з каталогу. Рецепт мовчки обнуляє рівно ті рядки, заради яких його писали.

Робочий варіант відрізняється однією обгорткою — IFNULL, яка підставляє порожній рядок замість відсутнього значення:

IF(IFNULL({Товар БК: Артикул виробника}, "") = "", {Прайс: Артикул виробника}, {Товар БК: Артикул виробника})

Читається так: якщо артикула в каталозі немає або він порожній — залишити артикул із прайсу, інакше взяти з каталогу. Прогін на прайсі зі 160 позицій, де зіставлено 64: перший варіант обнулив 96 рядків, другий — жодного.

Для цін обгортка не потрібна — там ловлять інше: перевірка > 1 або > 0 перед тим, як щось на це число ділити.

Як перевірити формулу

Окремого попереднього перегляду у вікні немає: кнопки «Перевірити» й тестової сітки з результатом ви тут не знайдете. Замість них є ось що.

Перевірка синтаксису при застосуванні. Перед тим як щось рахувати, програма перевіряє формулу на правильність запису. Формула з помилкою просто пропускається — решта формул при цьому застосовується, а ви отримуєте вікно «Помилки у формулах» з переліком того, що не спрацювало.

Розбір у AI-помічника. Іконка з паличкою в панелі вікна відкриває помічника з питанням про формулу для обраного поля. У вікні помилок є кнопка «Запитати AI-помічника» — вона передає всі зламані формули одним питанням і просить пояснити, що не так, і дати виправлені варіанти.

Обидві кнопки нічого не рахують у прайсі: вони відкривають вікно AI-консультанта й одразу надсилають туди текст, без окремого підтвердження. Відповідь консультанта платна, як і будь-яка його відповідь у чаті; списане видно в балансі.

Обмеження області. Умова застосування (розділ вище) дозволяє прогнати формулу спочатку на одному товарі.

Звіряння результату. Якщо вкладка товарів прайсу відкрита поруч, після застосування її сітка оновиться сама.

Перевіряється тільки правильність запису, а не сенс. Формула, у якій ви переплутали ціну із собівартістю, пройде перевірку й порахується — і ви побачите це лише в цінах товарів. Тому перший прогін завжди варто робити на обмеженій області.

Перевірка нової формули на одному товарі

Формулу можна скласти й перевірити в чаті. Виберіть прайс, натисніть «✦ AI» у його шапці → «Формула поля прайсу» (видна тим, кому відкрите вікно формул прайсу) і напишіть, що має рахувати поле.

Консультант проганяє формулу тим самим механізмом, що кнопка «Застосувати», нічого не записуючи, і дає готову формулу окремим блоком із кнопкою копіювання; вставляєте її у вікно формул ви. Докладно — у статті про AI-консультанта.

Сценарії

Постачальник не надсилає готової назви

Задача. Виробник і артикул лежать у файлі окремими колонками, а повної назви товару немає.

Що налаштувати. «Додати формулу» → поле «Найменування», вираз CONCAT({Прайс: Виробник}, ' ', {Прайс: Артикул виробника}). У списку формул поставте в цьому рядку прапорець «Оновлювати ключ унікальності товару».

Що вийде. Назва збирається в рядках прайсу при кожному завантаженні, доки в переліку операцій прайсу стоїть крок «Застосування формул для полів». Після запису назви програма перераховує ключ унікальності рядків, тож при наступному завантаженні товар упізнається як той самий.

Картка товару вашого каталогу від цього не зміниться: назва потрапить туди тільки через «Оновлення базового каталогу», якщо поле вказане джерелом у «Зв'язках полів».

Не продавати дорожче за рекомендовану ціну

Задача. Постачальник надсилає і ціну, і РРЦ, а ціна в прайсі не повинна бути вищою за РРЦ.

Що налаштувати. Формула на поле «Ціна» з рецепта «Не продавати дорожче за рекомендовану ціну».

Що вийде. У рядках, де РРЦ заповнена й нижча за ціну, ціна стане рівною РРЦ; де РРЦ нульова або ціна й так нижча — лишиться своя. Результат округлюється як ціна.

Оскільки приймач — ціна, формула виконається ще й після кнопки «Застосувати націнку для товарів». В «Історії націнки товару» її роботи не буде видно.

Ваш артикул із каталогу замість артикула постачальника

Задача. У прайсі потрібен артикул виробника з картки вашого товару, а не той, що надіслав постачальник.

Що налаштувати. Формула на поле «Артикул виробника» з рецепта «Скопіювати артикул із картки каталогу». У переліку операцій крок формул має стояти після зіставлення товарів.

Що вийде. Зіставлені рядки отримають артикул із картки каталогу, незіставлені збережуть артикул із файла. Самі товари формула не зіставляє: рядок без зіставлення так і лишиться без звʼязку з каталогом. Без обгортки IFNULL незіставлені рядки втратили б артикул — чому, пояснено в розділі про порожнє значення.

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

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

Що налаштувати. Відкрийте формули в режимі для всіх прайс-листів і додайте формулу на поле «Артикул виробника» з рецепта «Прибрати нулі на початку артикула».

Що вийде. Формула рахується при завантаженні кожного прайсу — після формул самого прайсу. Кнопка «Застосувати формули» в цьому режимі проходить усі активні прайси активних контрагентів. У вікні формул окремого прайсу цієї формули не видно, а формулу прайсу на те саме поле вона перезапише.

Що робити, коли значення не порахувалося

Розбір частих проблем
Що ви бачитеЧому такЩо зробити
«Формули застосовано», а значення в товарах те саме Найчастіше: товари не підпали під «Умову застосування»; результат перезаписала формула для всіх прайс-листів; формула прив’язана до аркуша, а налаштування за аркушами вимкнене. Рідше — комусь вимкнули «Активність»: нова формула створюється увімкненою Перевірте саме в такому порядку (коли формула рахується)
Поле стало нулем або порожнім У виразі не було значення: товар не зіставлений із каталогом, ділення на нуль або блоковий макрос нічого не знайшов Оберніть поле каталогу в IFNULL — просто IF(поле = "") тут не рятує; попереднє значення не відновлюється, потрібне повторне завантаження прайсу (порожнє значення)
Вікно «Помилки у формулах» зі списком полів Хоча б одна формула не пройшла перевірку правильності запису Виправте перелічені — решта вже застосована; за розбором натисніть «Запитати AI-помічника» (перевірка формули)
У журналі: «Формулу пропущено: поле «…», правило №… (…). Перевірте синтаксис формули — решту формул застосовано.» Та сама помилка запису, але спіймана під час завантаження прайсу Відкрийте «Формули для полів» цього прайсу й знайдіть правило за номером із повідомлення
«Формулу пропущено: поле «…», правило ID … (…). У формулі є недопустимий фрагмент «SELECT»…» У виразі стоїть слово, яке спрацьовує як захист: підзапит SELECT чи службова функція бази. Формула прайсу — це вираз із полів, чисел, тексту в лапках, операторів і функцій на кшталт IF, CASE, CONCAT, ROUND, REPLACE Знайдіть правило за ID: у дужках після нього видно, чия формула — «формула прайсу», «глобальна формула, застосована до прайсу» (режим для всіх прайс-листів) чи «формула полів товарів БК» (формула полів каталогу). Перепишіть вираз без забороненого слова (що можна писати)
У повідомленні про помилку: «глобальна формула, застосована до прайсу» Зламана — вона перевіряється на кожному прайсі, тому й помилка повторюється в кожному Правте її в режимі для всіх прайс-листів, а не у вікні цього джерела (формули для всіх прайс-листів)
У повідомленні про помилку дописано «аркуш «…»» Формула прив’язана до аркуша Excel і у звичайному вікні формул її не видно Відкрийте формули з вікна «Завантаження з аркушів», обравши потрібний аркуш (точки входу)
Ціна росте з кожним натисканням «Застосувати формули» Формула читає й пише те саме поле, тому рахує від уже порахованого Рахуйте в інше поле або натискайте кнопку один раз за прогін (порядок застосування)
Формула з {Товар БК: …} спрацювала лише на частині товарів Решта рядків прайсу не зіставлена з каталогом, і полів каталогу в них немає Зіставте товари й повторіть; до того захистіть формулу обгорткою IFNULL (порожнє значення, зіставлення товарів)
«Виконується перерахунок...» висить довго Перерахунок іде по всіх товарах прайсу, а в режимі для всіх прайс-листів — по всіх активних джерелах Дочекайтеся; наступного разу обмежте область умовою застосування (умова застосування)
Червоний рядок «Використовуються налаштування для всіх прайс-листів.» Вікно відкрите в режимі для всіх прайсів — із вкладки «Усі товари» Щоб правити формули одного прайсу, відкрийте вікно з його картки (формули для всіх прайс-листів)
Червоне повідомлення «Error:» із текстом Правка не збереглася — обірвався зв’язок або закінчилася сесія Оновіть список кнопкою «Оновити» і повторіть правку; звіряйтеся з відміткою «Збережено ·»
«Немає доступу до цього вікна. Зверніться до адміністратора.» після «Застосувати формули» Право «Формули для полів» зняли, поки вікно було відкрите: нічого не пораховано Попросіть адміністратора повернути право групі (хто має доступ)
Формула була, а в списку її немає Формули аркушів видно тільки при вході з вікна «Завантаження з аркушів»; формули для всіх прайсів — тільки в режимі для всіх прайсів Відкрийте вікно з того самого входу, з якого створювали формулу (точки входу)

Часті запитання

Де кнопка «Зберегти» у формули?

Її немає. Текст формули зберігається сам приблизно за секунду після того, як ви перестали друкувати, а перемикачі й примітка — одразу. Що правка дійшла, показує відмітка «Збережено ·» з часом над редактором.

Я змінив формулу — чому значення в товарах ті самі?

Формула й значення живуть окремо. Перерахунок відбувається при завантаженні прайсу або кнопкою: «Застосувати формули» — за всіма активними формулами, «Застосувати цю формулу» — за однією (коли формула рахується).

Формулу пропущено, пише «У формулі є недопустимий фрагмент SELECT». Що не так?

У виразі є підзапит, функція поза білим списком або нерозпізнаний макрос, і спрацював захист. Пропущена лише ця формула, решту застосовано. Знайдіть правило за ID із повідомлення й виправте фрагмент (чого писати не можна).

Старі формули з російськими назвами полів треба переписувати?

Ні. {Прайс: Цена} і {Прайс: Ціна} працюють однаково: програма розпізнає назву будь-якою з увімкнених мов (макроси).

Як узяти найменшу ціну серед кількох постачальників?

Блоковим макросом від групи контрагентів: усередині нього дозволені MIN та інші підсумкові функції (значення з прайсу іншого постачальника).

Чи можна формулою заповнити характеристику товару?

Так, характеристики є в списку полів-приймачів нарівні зі звичайними полями. Якщо у товару такої характеристики не було, програма створить її сама (характеристики й фото).

Якщо я змінюю найменування формулою, ключ унікальності товару перераховується?

Так, якщо в цій формулі увімкнено прапорець «Оновлювати ключ унікальності товару». Без нього ключ лишається порахованим із назви з файла, і товар при наступному завантаженні вважатиметься новим (прапорець).

Чи можна подивитися, яке значення було в полі до формули?

Ні: формула перезаписує поле, і значень вона не зберігає. Зберігаються версії тексту самої формули — кнопка «Історія змін формули» в панелі вікна, працює як у формулах каталогу.

Суміжні теми

Чи була стаття корисною?