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

26 хв

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

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

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

З чого почати: у вікні «Товари» відкрийте бургер у тулбарі → «Налаштувати формули для полів» → «Додати формулу».

Що вміють формули полів каталогу

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

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

Меню
Довідники → Базовий каталог товарів → Товари → бургер → «Налаштувати формули для полів»
Інші входи
Список прайс-листів → бургер → «Оновлення базового каталогу» → вкладка «Формули»
Право доступу
вікно формул полів базового каталогу у «Правах груп»
Підготувати
для полів прайсу — зіставлені товари

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

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

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

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

Як скласти формулу у вікні

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

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

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

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

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

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

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

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

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

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

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

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

Значення {Прайс: …} формула бере з того рядка прайсу, з яким товар пов'язаний зараз. Якщо такого рядка в прайсах більше немає, старе значення поля не зберігається: формула однаково записує результат, тільки порожній. Числове поле стає 0, текстове — порожнім.

Наприклад, {Прайс: Ціна} * 1.2 у полі «Ціна» дасть нуль у кожного товару, що випав із прайсу. Щоб у такому разі лишалося попереднє значення, загорніть вираз у IFNULL: IFNULL({Прайс: Ціна} * 1.2, {Товар БК: Ціна}).

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

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

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

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

Формула перезаписує поле, а не доповнює його. Якщо в приймачі було значення, вписане руками, після прогону його не буде.

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

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

Що відбувається після «Застосувати формули»

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

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

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

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

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

Коли нові значення потраплять на сайт

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

Якщо перерахунок обірвався

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

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

Масові зміни: що буде при обриві і як повернути

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

Які товари потраплять під операцію

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

Обмеження на кількість товарів в одній операції у програмі немає.

Як повернути масову зміну в сітці каталогу

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

  • Якщо після вашої операції хтось уже встиг змінити поле в якомусь товарі, цей товар відкат не чіпає. У повідомленні буде видно, скільки таких товарів пропущено: «пропущено N — змінені пізніше».
  • Якщо операція нічого не змінила (у всіх товарів поле вже мало таке значення), то й відкочувати нічого: кнопки не буде.
  • Програма зберігає тільки п'ять останніх ваших масових операцій, і не старші за добу. Шоста операція витісняє найстаріший відкат, а операції, старші за 24 години, з цього списку зникають.
  • Відкат не записується, коли «Масово встановити значення» змінює лише рядок під курсором (без відміток), коли ціну задають через націнку, а не числом, і коли очищають колонку «Зображення». Очищення зображень видаляє знімки товарів разом із файлами, і повернути їх неможливо.

Оновлення базового каталогу: обрив і повторний запуск

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

  • Якщо ви натиснули «Стоп», прогін зупиниться на найближчій точці між етапами, а не посеред етапу: етап, що вже почався, доходить до кінця. У журналі з'явиться «Завантаження перервано користувачем!». Те, що встигли записати попередні етапи, залишається в каталозі.
  • Якщо прогін обірвався сам (збій сервера, помилка), записане до обриву теж лишається. Повідомлення про завершення в журналі тоді не буде: останнім рядком стоятиме етап, на якому все зупинилося.
  • Якщо запустити оновлення, поки попереднє ще йде, другий запуск буде відхилено з повідомленням «Пакетна обробка вже виконується іншим процесом — цей запуск відхилено». Поки прогін іде, він між етапами оновлює мітку блокування, тож другий запуск його не перехопить. Коли прогін завершується, зокрема аварійно через помилку, блокування знімається одразу, і новий запуск можна робити без очікування. Лише якщо процес на сервері зупинили примусово або сервер перезавантажився, блокування лишається, і новий запуск відхилятиметься, доки не мине дві години від старту обірваного прогону або від останнього етапу, який він встиг завершити.
  • Якщо саме триває завантаження прайсів за розкладом, ручний запуск оновлення буде відхилено з повідомленням «Триває завантаження прайс-листів за розкладом — запуск оновлення каталогу відхилено».
  • Повторний запуск заново перераховує товари з даних прайсів за тими самими налаштуваннями. Він не відновлює того, що обірваний прогін уже стер. Якщо в налаштуваннях оновлення для якогось поля стоїть позначка «Очищати поле БК перед оновленням», це поле стирається на етапі оновлення цін і полів товарів, одразу перед записом нових значень із прайсу, і тільки коли ввімкнено «Оновлювати товари». Стирається воно лише в товарів, зіставлених із прайсом, який оновлюється (при оновленні за всіма прайсами — у всіх товарів каталогу), з урахуванням умов на вкладці «Додатково». Товари з позначкою «Не оновлювати» не очищаються, а в товарів із «Фіксована ціна» не очищаються поля цін. Незаповненим поле лишиться в кожного товару, якому прогін після очищення нового значення не запише: якщо прогін обірветься між очищенням і записом, якщо при оновленні за всіма прайсами товару немає в жодному з них, якщо рядок прайсу не пройшов умови запису цього поля (порожня комірка, логічна умова) або якщо сам рядок зв'язки полів вимкнено, а позначку очищення в ньому залишено.

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

Застосування формул

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

Що видно в журналі і як знайти змінене

  • «Журнал операцій» показує хід оновлення по етапах: скільки товарів оновлено, скільки додано, коли операцію перервано. Назв конкретних товарів там немає. Рядки журналу зберігаються 14 днів, а підсумкові картки операцій — 90 днів.
  • Побачити, які саме товари змінилися і яке значення в них було до цього, можна на вкладці «Історія операцій», але тільки якщо ввімкнено налаштування «Історія зміни значень». Якщо воно вимкнене, оновлення каталогу подробиць не записує взагалі.
  • Для оновлення каталогу історія записується тільки тоді, коли прогін дійшов до кінця. Прогін, зупинений кнопкою «Стоп» або обірваний збоєм, в історії не з'являється.
  • З «Історії операцій» попередні значення полів повертають по одному товару: кнопкою в рядку. Масового повернення там немає. Записи історії зберігаються 7 днів.

Як вставити у формулу поле товару, атрибута чи прайсу

Вираз формули пишеться мовою SQL, а не Excel. Функції, умови й обмеження ті самі, що у формулах полів прайсу: що можна писати у формулі, умови «якщо … то …» і готові формули для ціни й тексту.

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

Група макросівПрикладЗвідки значення
Товар БК{Товар БК: Ціна собівартість}поле картки товару
Атрибут БК{Атрибут БК: Колір}значення характеристики товару тією мовою, для якої рахується формула; після двокрапки — точна назва атрибута з довідника
Прайс{Прайс: Ціна}рядок прайсу, з якого товар зараз постачається
Блоки в подвійних дужках[[FromGroupContractor_2 MIN({Прайс: Ціна})]]значення з прайсів інших контрагентів, складів, головного товару, набору

Макросів характеристик у довіднику «Поля для формул» зазвичай немає. Решту макросів {Атрибут БК: …} набирайте вручну, копіюючи назву атрибута з довідника атрибутів. Підказка поля в редакторі — Ctrl+Space.

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

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

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

Готові формули для каталогу

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

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

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

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

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

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

Штрихкод EAN-13

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

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

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

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

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

{Атрибут БК: Колір}

Додайте умову застосування «поле-приймач порожнє», якщо заповнені значення переписувати не можна. Товарам, у яких атрибута-приймача ще немає, програма його створить; товар без значення в атрибуті-джерелі приймача не отримає.

Текстова мітка за умовою: «Новинка» чи «Акція»

Приймач — характеристика або текстове поле, у яке треба покласти мітку:

CASE WHEN {Товар БК: Акційний товар} = 1 THEN 'Акція' WHEN {Товар БК: Дата додавання} >= CURDATE() - INTERVAL 30 DAY THEN 'Новинка' ELSE '' END

Умови перевіряються згори вниз, перша, що справдилася, і дає результат. Акційний товар, доданий тиждень тому, отримає «Акція». Мітка «Новинка» сама зникне, коли товару мине 30 днів, але лише після наступного перерахунку формули.

Націнка за діапазонами собівартості

Приймач — «Ціна». Чим дорожчий товар, тим менший відсоток:

CASE WHEN {Товар БК: Ціна собівартість} <= 0 THEN {Товар БК: Ціна} WHEN {Товар БК: Ціна собівартість} < 500 THEN {Товар БК: Ціна собівартість} * 1.30 WHEN {Товар БК: Ціна собівартість} < 2000 THEN {Товар БК: Ціна собівартість} * 1.20 ELSE {Товар БК: Ціна собівартість} * 1.12 END

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

Мінімальна ціна серед групи постачальників

Блок FromGroupContractor_N (синонім ОтГруппыКонтрагента_N) збирає рядки прайсів усіх контрагентів групи з номером N, зіставлені з товаром. Усередині блока дозволені MIN, MAX і SUM:

[[FromGroupContractor_2 MIN(IF({Прайс: Ціна} = 0, NULL, {Прайс: Ціна}))]]

Це найменша ненульова ціна серед постачальників групи 2. IF(… = 0, NULL, …) прибирає рядки з нульовою ціною, інакше мінімумом став би нуль. Враховуються лише активні прайс-листи. Блок є в довіднику «Поля для формул» під назвою «Взяти значення від групи контрагентів». Номер групи у вікні «Групи контрагентів» не показано — якщо не знаєте його, запитайте в підтримки.

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

Як звузити формулу до частини товарів

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

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

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

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

Як повернути попередню версію формули

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

  1. На вкладці «Версії» клацніть потрібну версію — програма покаже різницю з поточною: зелене з'явиться після відновлення, закреслене зникне.
  2. Натисніть «Відновити» і підтвердіть. Поточна версія при цьому теж ляже в історію, тож відновлення можна відкотити так само.
  3. Видалену формулу шукайте на вкладці «Видалені»: відновлення повертає її в список з усіма налаштуваннями. Якщо жодна формула не вибрана, історія відкривається одразу на цій вкладці.
Панель «Історія змін формули» для поля Pumb(1x24): вкладка «Версії» і порівняння версії з поточною формулою
1Вкладки «Версії» і «Видалені»
2Обрана версія зі списку
3Порівняння з поточною формулою
4Кнопка «Відновити»
  1. Вкладка «Версії» зберігає попередні редакції формули, «Видалені» — видалені формули.
  2. Клік по версії розкриває її порівняння з поточною формулою.
  3. Зелене з'явиться після відновлення, закреслене зникне: тут множники 1.266 → 1.35 та 24 → 25.
  4. «Відновити» повертає обрану версію; у зйомці її не натискали.

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

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

Сценарії

Три задачі магазину: які налаштування ввімкнути і що з цього вийде.

Ціна не вище РРЦ після кожного оновлення з прайсу

Задача: постачальник міняє ціни, а продавати дорожче за рекомендовану ціну не можна.

Що налаштувати: на вкладці «Формули» — «Додати формулу», поле «Ціна», вираз із рецепта «Не продавати дорожче за рекомендовану ціну». На вкладці «Налаштування» поставте прапорець «Застосовувати формули».

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

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

Власний артикул лише новим товарам

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

Що налаштувати: формула в полі «Артикул (внутрішній)» з виразом [[ЗнайтиМаксДодати1{Товар БК: Артикул (внутрішній)}]]. У блоці «Умова застосування (необов'язково)» — «Додати», поле «Артикул (внутрішній)», операція «порожній рядок», потім «Зберегти».

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

Чого не станеться: заповнені артикули не переписуються — умова їх не пропускає. Префікс до нового номера сам не додається: формула записує саме число. Товари з «Не оновлювати» номера не отримають.

Блок «Умова застосування» формули поля «Артикул (внутрішній)»: умова «порожній рядок» і її переказ словами
1Рядок умови «порожній рядок»
2Переказ умови словами
  1. Рядок умови «порожній рядок» — формула доходить лише до товарів без артикула.
  2. Переказ умови звичайними словами під кнопками: поле «Артикул (внутрішній)» — не заповнено.

Характеристика для фільтра з поля товару

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

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

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

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

Що робити, коли формула не спрацювала

Що ви бачитеЧому такЩо зробити
Формула не проходить перевірку синтаксису, вона у вікні «Помилки у формулах»найчастіше — крапка з комою замість коми в IF, знак = на початку, лапки «ялинки» замість ' або назва поля в макросі, якої немає в довіднику ({Товар БК: Назва} замість {Товар БК: Найменування})виправте перелічені формули за номерами правил: звірте вираз із правилами синтаксису, макрос вставте з «Поля для формул»; кнопка «Запитати AI-помічника» передасть вирази помічникові
Натиснув кнопку — нічого не змінилосяформула вимкнена або умова застосування не пропустила жодного товаруперевірте перемикач «Активність» і переказ умови під конструктором
Формула потрапила у вікно «Помилки у формулах», хоча синтаксис у ній правильнийу виразі поза лапками є заборонене слово: SELECT, UPDATE, INSERT, UNION, DELETE FROM тощо. Таку формулу програма пропускає так само, як криву; у пакетному оновленні та під час завантаження каталогу ззовні про неї ще й з'являється рядок у журналі операцій, який починається словами «Формулу пропущено: поле «…», правило №…»приберіть слово з виразу; якщо це текст, візьміть його в лапки
Формула ціни не спрацювала в частини товаріву них увімкнено «Фіксована ціна»: формули полів типу «ціна» такі товари пропускаютьзніміть «Фіксована ціна» в тих товарах, ціну яких має рахувати формула
Порахувалося не в усіх товараху пропущених стоїть прапорець «Не оновлювати»зніміть прапорець у тих картках, які формула має чіпати
Ціна виросла вдруге після повторного запускуформула читає й пише те саме поле, захисту від повторного застосування немаєдодайте умову застосування або перерахуйте ціну від вихідного поля, а не від себе
Значення, вписане руками, зниклоформула перезаписує поле цілкомувімкніть «Тільки для читання» або додайте умову «поле порожнє»
Порахувалося тільки українськоюформула прив'язана до мовискладіть таку саму для іншої мови
Артикули перенумерувалися зановолічильник запустився без умови застосуваннядодайте умову «поле порожнє» — і більше не запускайте без неї
Формула з полем прайсу дала порожньотовар не зіставлений із рядком прайсуспершу зіставте товари, формули рахуйте після цього

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

Формули видалених правил і полів, закритих для вас правами, він не показує. Підказка видна тим, кому відкрите вікно формул полів каталогу.

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

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

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

Як відкотити (відкатити) формулу до попереднього вигляду?

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

Формула не проходить перевірку синтаксису — що не так?

Найчастіше — крапка з комою замість коми в IF, знак «=» на початку або назва поля в макросі, якої немає в довіднику «Поля для формул». Вставляйте поля з довідника, а не набирайте (розбір проблем).

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

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

Чи можна порахувати у формулі суму чи середнє по кількох товарах?

Звичайним виразом — ні: формула рахується для кожного товару окремо. Підсумок дають лише блоки групи контрагентів (по зіставлених рядках прайсів) і набору товару: [[ОтНабораТовара SUM({Товар БК: Ціна})]].

Поставив галочку «Оновлювати ключ унікальності товару» на формулі поля «Модель» — і нічого не змінюється. Чому?

Ця колонка є тільки у формулах прайс-листа, і працює вона лише на формулі поля «Найменування» (формули прайс-листа).

Як зробити формулу, щоб поле «Ціна» множилося на 1.18 при кожному імпорті?

Рахуйте від собівартості, а не від самої ціни: {Товар БК: Ціна} * 1.18 накручує ціну при кожному запуску. Приклад — націнка від собівартості; у вкладці «Налаштування» поставте «Застосовувати формули».

Що буде з товаром на сайті, якщо постачальник прибрав його з прайсу?

Товар лишиться в каталозі й на сайті, але без наявності. Щоб такі товари вимикались, у «Оновленні базового каталогу» на вкладці «Додатково» є налаштування деактивації (оновлення базового каталогу).

Суміжні теми

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