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

23 хв

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[[НайтиМаксДобавить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 — це такий самий контрагент зі своїм прайсом, тож його ціна приходить у товар каталогу через зіставлення, а формула бере її з полів прайсу. Порядок дій той самий, що з постачальником: завантажити прайс, зіставити товари, і аж тоді писати формулу.

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

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

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

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

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

Сценарії

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На сайт — лише товари, до яких дійшла формула

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

Що налаштувати: у шаблоні вивантаження поставте «Вивантажувати лише нові дані».

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

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

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

  • Не відкочують значення. Кнопка «Історія змін» повертає попередню версію тексту формули або відновлює видалену формулу, але вже перераховані значення полів не повертає: прорахували не те — доведеться прораховувати назад іншою формулою або відновлювати з резервної копії.
  • Не рахують підсумки звичайним виразом. SUM, AVG, COUNT прямо у виразі не працюють: формула рахується для кожного товару окремо. Підсумок дають лише спеціальні блоки: [[ОтГруппыКонтрагента_N SUM({Прайс: Кількість})]] (також MIN і MAX) — по рядках прайсів групи контрагентів з номером N, пов'язаних із товаром, і [[ОтНабораТовара SUM({Товар БК: Ціна})]] (також GROUP_CONCAT) — по товарах, що входять у набір.
  • Не заміняють націнку. Для ціноутворення за правилами є окремий механізм — він зручніший і має захист від повторного застосування.
  • Не переносять значення між мовами. Текстове поле рахується тією мовою, для якої складена формула.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Суміжні теми

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