Формули для полів каталогу

9 хв

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

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

Де це у програмі

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

З пакетного оновлення
Довідники → Обробка прайс-листів → «Оновлення базового каталогу» → вкладка «Формули» (третя в ряду, з іконкою калькулятора)
З базового каталогу
меню дій вікна каталогу → «Налаштувати формули для полів»
Вмикання в оновленні
прапорець «Застосовувати формули» на вкладці «Налаштування»
Вікно «Оновлення базового каталогу», вкладка «Формули»
1Список формул
2Редактор формули
3Перемикач «Активність»
  1. Список зліва — кожен рядок це формула, назва рядка відповідає полю-приймачу.
  2. У редакторі праворуч розташований вираз обраної формули; поля вставляються через «Поля для формул» або Ctrl+Space.
  3. Вимкнена формула («Активність» знято) не враховується під час перерахунку.

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

Як влаштоване вікно

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

Над обома панелями — ряд кнопок: «Додати формулу» (відкриває пошук по полях каталогу, там же можна створити нове поле), «Застосувати формули», чарівна паличка ШІ-помічника, кошик для вибраного рядка, оновлення списку й посилання «Довідка».

Список ліворуч

У списку зібрано те, за чим формулу шукають і чим керують гуртом:

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

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

Редактор праворуч

Угорі — ім'я вибраного поля й перемикач «Активність», той самий, що в колонці списку. Далі кнопка «Поля для формул», кнопка «Застосувати цю формулу» і саме поле виразу з підсвіткою синтаксису. Під ним — два перемикачі («Тільки для читання» і «Застосовувати при завантаженні БК із зовнішніх джерел»), «Примітка» і згорнутий блок «Умова застосування (необов'язково)».

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

Поле у формулу вставляють не руками — набраний з пам'яті макрос і є найчастішою причиною помилок. Кнопка «Поля для формул» відкриває довідник із пошуком і колонками «Поле», «Група», «Макрос», «Код»: клік по рядку показує опис поля внизу, подвійний клік — вставляє макрос у позицію курсора. Те саме дає Ctrl+Space прямо в редакторі. Підказка під полем каже це прямо: «Подвійний клік по полю в правій панелі вставляє макрос у позицію курсора; Ctrl+Space — автодоповнення.»

Доступні три групи джерел: поля каталогу ({Товар БК: …}), поля прайсу ({Прайс: …}) і поля контрагента. Тобто формула каталогу може дотягнутися до прайсу — але тільки для зіставлених товарів, як і в зворотному напрямку.

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

Точок запуску три, і різниця між ними — головне, що варто засвоїти.

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

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

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

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

Мова має значення

Формула прив'язана до мови. Текстові поля — назва, описи, мета-теги — у кожної мови свої, тому й формула для них своя. Склали правило українською — англійська версія поля лишиться такою, якою була.

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

Готові рецепти

Чотири задачі, заради яких формули каталогу заводять найчастіше.

Внутрішній артикул лічильником

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

[[НайтиМаксДобавить1{Товар БК: Артикул (внутрішній)}]]

Працює він так: програма знаходить у вказаному полі найбільше число по всьому каталогу й далі видає кожному товару наступне. Нецифрові символи при пошуку максимуму ігноруються, тож префікси на кшталт ART- лічильник не збивають. У блока є два синоніми — max_add_1 і ЗнайтиМаксДодати1, пишіть будь-який.

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

Штрихкод EAN-13

Макрос {GENERATOR_EAN13} видає коректний штрихкод формату EAN-13 із контрольною цифрою. Використовують так само, як лічильник: у поле штрихкоду, з умовою «порожньо», щоб не переписати те, що вже є.

Копіювання між полем і характеристикою

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

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

Ціна з оглядкою на щось

Найчастіший клас формул — перерахунок ціни. Кілька прикладів, які достатньо підставити:

Що потрібноФормула
Не продавати дорожче за рекомендовану цінуIF({Товар БК: Ціна РРЦ} > 0 AND {Товар БК: Ціна} > {Товар БК: Ціна РРЦ}, {Товар БК: Ціна РРЦ}, {Товар БК: Ціна})
Ціна = РРЦ мінус 5 %, а якщо РРЦ немає — лишити як єCASE WHEN {Товар БК: Ціна РРЦ} > 1 THEN {Товар БК: Ціна РРЦ} * 0.95 ELSE {Товар БК: Ціна} END
Округлити до цілогоROUND({Товар БК: Ціна}, 0)
Зібрати назву з виробника й артикулаCONCAT({Товар БК: Виробник}, ' ', {Товар БК: Артикул виробника})

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

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

Умова застосування: звузити формулу до частини товарів

Блок «Умова застосування (необов'язково)» внизу редактора відбирає товари, до яких формула взагалі дійде. Без умови правило застосується до всього каталогу.

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

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

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

Чого формули не роблять

  • Не відкочуються. Скасування немає: прорахували не те — доведеться прораховувати назад іншою формулою або відновлювати з резервної копії.
  • Не рахують підсумки. Функції на кшталт SUM, AVG, COUNT у виразі не працюють: формула рахується для кожного товару окремо.
  • Не заміняють націнку. Для ціноутворення за правилами є окремий механізм — він зручніший і має захист від повторного застосування.
  • Не переносять значення між мовами. Текстове поле рахується тією мовою, для якої складена формула.

Розбір частих проблем

Що ви бачитеЧому такЩо зробити
Натиснув кнопку — нічого не змінилосяформула вимкнена або умова застосування не пропустила жодного товаруперевірте перемикач «Активність» і переказ умови під конструктором
Вискочило вікно «Помилки у формулах»у виразі синтаксична помилка; програма перевіряє формули перед запуском і криві пропускає, решту застосовуєвиправте перелічені формули за номерами правил; кнопка «Запитати ШІ-помічника» передасть їх помічникові
Порахувалося не в усіх товараху пропущених стоїть прапорець «Не оновлювати»зніміть прапорець у тих картках, які формула має чіпати
Ціна виросла вдруге після повторного запускуформула читає й пише те саме поле, захисту від повторного застосування немаєдодайте умову застосування або перерахуйте ціну від вихідного поля, а не від себе
Значення, вписане руками, зниклоформула перезаписує поле цілкомувімкніть «Тільки для читання» або додайте умову «поле порожнє»
Порахувалося тільки українськоюформула прив'язана до мовискладіть таку саму для іншої мови
Артикули перенумерувалися зановолічильник запустився без умови застосуваннядодайте умову «поле порожнє» — і більше не запускайте без неї
Формула з полем прайсу дала порожньотовар не зіставлений із рядком прайсуспершу зіставте товари, формули рахуйте після цього

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

Чим формули каталогу відрізняються від формул прайс-листа?

Тим, що вони пишуть. Формули прайсу міняють рядки прайсу постачальника, формули каталогу — ваші картки товарів. Синтаксис і набір функцій однакові, вікна різні.

Чи можна відкотити помилкову формулу?

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

Як зробити, щоб формула спрацювала лише один раз?

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

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

Блоком [[НайтиМаксДобавить1{Товар БК: Артикул (внутрішній)}]]: програма знаходить найбільше число в полі й видає кожному наступне. Обов'язково з умовою на порожнє поле, інакше кожен запуск перенумерує каталог заново.

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

Так, характеристики доступні як поля. Вставляйте потрібну зі списку праворуч, щоб не помилитися з кодом.

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

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

Формули рахуються самі чи їх треба запускати?

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

Суміжні теми

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