Elbuz сам дістає з назви товару артикул, об'єм чи код виробника й кладе його в окреме поле — або вирізає з назви зайвий хвіст. Правило задають один раз — далі воно працює на кожному завантаженні прайсу.
Коли це знадобиться:
- Артикул захований у дужках наприкінці назви — правило кладе його в поле «Артикул виробника», без дужок.
- Постачальник заповнює артикул не всім товарам — правило дописує його лише в порожні поля.
- У назвах зайва позначка на кшталт «(UA)» — правило вирізає її, а дужки з артикулом лишаються.
- Невідомо, скільки товарів зачепить вираз — перевірка показує «було → стало» до завантаження.
З чого почати: додайте правило у вікні «Регулярні вирази» й перевірте його.
Розмова з підтримкою — замість читати: навіщо це потрібно, що налаштувати і що ви отримаєте.
Що вміє правило з регулярним виразом
- Витягти значення з назви — артикул, партномер чи код у дужках лягає в окреме поле.
- Взяти лише частину знайденого — число без одиниці виміру, вміст дужок без самих дужок.
- Вирізати зайве з назви — хвіст «(UA)», розміри в дужках, службові позначки.
- Обмежити правило категорією чи виробником — щоб воно не чіпало чужі товари.
- Вирішити долю товарів без знахідки — лишити як були, підставити своє значення або позначку «так / ні».
- Показати результат до завантаження — на вставленому рядку й на справжніх товарах прайсу.
Звичайний пошук шукає конкретний текст: «знайди слово Intel». Регулярний вираз шукає форму тексту: «знайди кілька літер і цифр, які стоять у дужках наприкінці рядка». Що саме там написано, програму не цікавить. Тому одне правило працює на тисячах різних назв відразу.
Головне обмеження: вираз розуміє форму, а не зміст. Він не знає, що таке артикул, об'єм чи виробник. Якщо в назві дві групи цифр із літерою «л», він візьме першу — навіть якщо це не літри (приклад з осушувачем повітря).
Синтаксис виразів — PCRE, той самий, що в редакторах коду й у більшості програм, тож підійде будь-яка шпаргалка з інтернету. Унизу блоку перевірки є посилання «Регулярні вирази, матеріал з Вікіпідручника.»
У шапці вікна є кнопка з чарівною паличкою — «Допомога в складанні регулярних виразів за допомогою AI». Вона відкриває чат із готовим питанням: опишіть словами, що хочете знайти, і помічник підкаже запис.
Вікно відкривається з підменю «Категорії» й у дереві ліворуч показує категорії каталогу — але до розбору категорій прайсу воно стосунку не має. Це інструмент витягування значень із тексту — найчастіше з «Найменування». Якщо вам потрібно розкласти товари постачальника по своїх категоріях, це визначення категорій і правила розподілу, а не це вікно.
Де це і хто має доступ
Пункту меню в цього вікна немає. Воно відкривається з переліку прайс-листів або з картки джерела — і завжди для конкретного прайсу. Обидва входи ведуть в одне й те саме вікно.
- Зі списку прайс-листів
- бургер у рядку джерела → група «Категорії» → «Регулярні вирази»
- З картки джерела
- секція «Додатково» → кнопка «Регулярні вирази»
- Право доступу
- вікно «Регулярні вирази»; додавати й видаляти правила — право на зміну прайс-листів
- Підготувати
- хоча б раз завантажений прайс і рішення, з якого поля в яке тягнете значення
Окремих прав усередині вікна немає: хто бачить вікно, той бачить усі правила прайсу. Без права на зміну прайс-листів програма покаже причину відмови червоним повідомленням, а рядок у сітці не з'явиться і не зникне.
1
Група «Категорії»2
Пункт «Регулярні вирази»- Група «Категорії» — наведіть курсор, щоб розкрилося підменю.
- Пункт «Регулярні вирази» — відкриває вікно з правилами заміни.
Секція «Додатково» в картці джерела має підказку «Додаткові вікна та правила обробки прайса.» — там же лежать сусідні інструменти обробки. Ярлика на робочому столі у вікна немає.
1
Кнопка «Регулярні вирази»- Кнопка «Регулярні вирази» — відкриває вікно налаштування правил заміни.
Як створити правило
Вікно поділене навпіл. Ліворуч дерево категорій вашого каталогу, праворуч — панель «Правила заміни» із сіткою правил, а під нею блок перевірки. Угорі рядок-підказка: «Оберіть категорію ліворуч, потім додайте правило заміни та перевірте його на зразку тексту або на товарах прайсу.»
1
Дерево категорій2
Кнопка «Додати регулярний вираз»3
Кнопка допомоги AI4
Блок перевірки регулярного виразу- Дерево категорій — оберіть категорію, щоб додати для неї правило.
- Кнопка «Додати регулярний вираз» — розкриває список полів товару прайсу.
- Кнопка допомоги AI — підказує регулярний вираз за зразком тексту.
- Блок перевірки — введіть текст і натисніть «Тестувати», щоб побачити результат.
Кнопка «Додати регулярний вираз»
Кнопка «Додати регулярний вираз» зі знаком плюс розкриває перелік полів товару прайсу. У переліку всі поля картки товару прайсу, а не тільки ті, що прив'язані до колонок вашого файла, — на нашій демонстраційній базі це 91 поле. Ви обираєте поле-джерело, і правило створюється відразу, без окремої кнопки «Зберегти»: у сітці з'являється рядок, і курсор одразу стоїть у клітинці «Регулярний вираз».
1
Список полів товару (91 пункт)- Список містить усі 91 поле картки товару прайсу — кожне можна обрати як поле-джерело або поле-призначення правила заміни.
Нове правило вмикається одразу: «Активність» у нього стоїть «так». Поле призначення в перший момент дорівнює полю-джерелу — тобто правило готове писати результат туди ж, звідки взяло текст. Якщо вам потрібне інше поле, змініть колонку «Поле призначення»: сама клітинка не редагується, перелік полів відкриває вузька кнопка праворуч від неї. Так само влаштована колонка «Виробник».
Сітка зберігає кожну правку одразу після виходу з клітинки — з'являється повідомлення «Успішно оновлено». Чернетки тут немає: щойно ви змінили вираз і клацнули повз, нове значення вже в базі. Тому вираз, у якому ви не впевнені, спершу проганяють у блоці перевірки внизу, а не «залишають до завтра» в сітці ввімкненого правила.
Поле джерело і поле призначення
Поле-джерело задається один раз, при створенні правила, і потім не редагується — обрали не те, видаліть рядок і створіть новий. Поле призначення міняється будь-коли.
Комбінація цих двох полів і визначає, для чого правило. Найпоширеніший випадок: джерело «Найменування», призначення «Артикул виробника» — витягнути артикул із назви. Другий за поширеністю: джерело й призначення однакові, «Найменування» → «Найменування», — це чистка назви від зайвого.
Тринадцять колонок сітки
Скорочення «РВ» у підписах колонок означає «регулярний вираз».
| Колонка | Що вона робить |
|---|---|
| «Поле джерело» | Звідки береться текст. Задається при створенні й не змінюється |
| «Поле призначення» | Куди лягає результат. Обирається з переліку полів |
| «Регулярний вираз» | Сам запис форми, синтаксис PCRE |
| «Зворотні посилання на вирази \N» | Заповнено — у результат піде тільки та частина знайденого, на яку ви вкажете. Порожньо — піде весь знайдений фрагмент |
| «Порядок застосування правила» | Черговість серед правил цього прайсу. Нове правило отримує наступний крок — 10, 20, 30, — щоб його можна було вставити між двома, не перенумеровуючи решту |
| «Замінювати, якщо значення в полі призначення порожнє» | Увімкнено — правило пише тільки в порожнє поле й не чіпає вже заповнені |
| «Замінювати, якщо порожній результат РВ» | Вимкнено — товари, на яких вираз нічого не знайшов, лишаються як були. Увімкнено — у них запишеться порожнеча |
| «Значення за замовчуванням, якщо порожній результат РВ» | Що підставити замість порожнього результату |
| «Значення за замовчуванням, якщо не порожній результат РВ» | Перекриває знайдене: у поле піде цей текст, а не те, що знайшов вираз |
| «Виробник» | Правило працюватиме тільки на товарах цього виробника |
| «Вирізати значення з поля джерела» | Результатом стає вихідний текст без знайденого фрагмента |
| «Активність» | Єдиний вимикач правила |
| «Примітка» | Вільний коментар для себе й колег |
Дві колонки з цього переліку — «Замінювати, якщо порожній результат РВ» і «Значення за замовчуванням, якщо порожній результат РВ» — вирішують долю товарів, на яких вираз не спрацював. Це окрема розмова, і саме там ховається спосіб випадково очистити поле у половини прайсу.
Як обмежити правило категорією чи виробником
Ліва панель показує категорії вашого базового каталогу — не категорії з прайсу. Угорі поле пошуку з підказкою «Введіть назву категорії»: воно починає шукати від двох символів, а Esc або порожній рядок скидають фільтр. Поруч бургер «Додаткові операції» з чотирма пунктами: «Розгорнути усі категорії», «Згорнути усі категорії», «Оновити список», «Скасувати фільтр».
Обраний вузол робить дві речі одразу, і це головне, що треба зрозуміти про ліву панель:
- Фільтрує сітку. Ви бачите правила тільки цієї категорії. Правила, створені при іншому обраному вузлі, не «сховані фільтром» — вони просто не показані.
- Прив'язує нові правила. Створене правило працюватиме лише на товарах прайсу, які потрапили в цю категорію каталогу.
Верхній вузол дерева — це правила без прив'язки до категорії: вони працюють на всьому прайсі. Верхній рівень — це ваш магазин, тож у кого магазинів кілька, таких вузлів теж кілька, і будь-який з них означає «без категорії». Для більшості задач потрібні саме такі, бо артикул треба витягти з усіх назв, а не з однієї гілки.
Вікно запам'ятовує останній обраний вузол і наступного разу відкривається на ньому. Тому найчастіша скарга «правило зникло» — це майже завжди інша обрана категорія, а не втрачений рядок.
Прив'язка до категорії має неочевидну умову. Правило порівнює категорію товару прайсу з тією, яку ви обрали в дереві, — а категорію каталогу проставляє товарам окрема операція, «Розподіл товарів за категоріями базового каталогу».
Якщо у вашому джерелі регулярні вирази переставлені раніше за неї, правило з прив'язкою мовчки не спрацьовує: на першому завантаженні джерела категорії ще ні в кого немає, а далі покладатися на неї не можна — операція розподілу щоразу обнуляє категорію й розставляє наново.
Випадок рідкісний. Лікується двома способами: перенести правило у верхній вузол дерева (без категорії) або повернути операцію на місце у вікні «Порядок застосування операцій».
Обмежити правило брендом — колонка «Виробник»: правило обробить тільки товари, яким операція «Пошук виробника товару» вже визначила цього виробника (сценарій «Коди в дужках правильні тільки в одного бренду»).
Витягти артикул із дужок наприкінці назви
Найчастіша задача. Прайс «Прайс Синтез-Груп.xml», 6549 товарів, назви такого вигляду:
- Процессор Intel Core i3 10100 3.6GHz (6MB, Comet Lake, 65W, S1200) Box (BX8070110100)
- Процессор Intel Core i3 10105 3.7GHz (6MB, Comet Lake, 65W, S1200) Tray (CM8070104291321)
- Мультипечь Cecotec Cecofry DuoLevel 10000 (A01_EU01_109329)
Дужок у назві кілька, і брати треба останні — ті, що стоять у самому кінці рядка. Правило:
- Поле джерело — «Найменування»
- Поле призначення — «Артикул виробника»
- Регулярний вираз —
(?<=\()[A-Za-z0-9_/. -]+(?=\)$) - Зворотні посилання — порожньо
Читається запис так: [A-Za-z0-9_/. -]+ — це «один або більше символів, кожен з яких латинська літера, цифра, підкреслення, скісна риска, крапка, дефіс або пробіл». Дві конструкції навколо — (?<=\() і (?=\)$) — кажуть: «зліва має бути відкрита дужка, справа — закрита дужка й кінець рядка». Це умови, а не частина знахідки: дужки мають бути, але в результат вони не потраплять.
Результат: вираз спрацював на 2969 товарах із 6549, на 3580 повернув порожньо. У поле «Артикул виробника» лягли рівно BX8070110100, CM8070104291321, A01_EU01_109329 — без дужок і без пробілів.
Порожньо на 3580 товарах — це не поломка: у половини назв дужок наприкінці просто немає. Товари без знахідки лишаються як були (див. порожній результат).
Найпоширеніша пастка — записати той самий вираз без цих двох конструкцій. Запис \([A-Za-z0-9_/. -]+\)$ виглядає простішим і теж знаходить потрібне місце, але результат буде інший:
«Процессор Intel Core i3 10100 … Box (BX8070110100)» → (BX8070110100), разом із дужками.
Причина в тому, що у поле призначення йде весь знайдений фрагмент цілком. Дужки ви вписали у вираз — отже, вони частина знахідки. Людина чекає BX8070110100, отримує (BX8070110100) і потім не розуміє, чому зіставлення за артикулом не знаходить товар: у каталозі артикул без дужок.
Виходів два. Перший — умови довкола, як у виразі вище. Другий — зворотне посилання, наступний розділ.
У прайсі «Синтез-Груп» артикул виробника й так приходить окремою колонкою — це зручно, бо результат є з чим звірити. Витягнуте виразом значення збіглося з цією колонкою у 2850 випадках із 2969. Решта 119 — там, де в кінці назви стояли не ті дужки:
«Bluetooth-гарнитура Remax TWS-10i White (6972174153445)» → вираз повернув 6972174153445, а в колонці артикула стоїть TWS-10i. У дужках наприкінці був штрихкод.
Це та сама межа, про яку йшлося на початку: вираз шукає форму — «латиниця й цифри в дужках наприкінці рядка», — а що саме туди поклав постачальник, він не знає. У житті таке правило потрібне там, де окремої колонки з артикулом немає, і звірити результат ні з чим — тоді його дивляться очима на вкладці «на основі товарів».
Дістати не все, а частину знайденого
Той самий артикул можна витягти інакше — і цей спосіб варто знати, бо він працює там, де умови навколо написати важко.
- Регулярний вираз —
^.*\(([A-Za-z0-9_/. -]+)\)$ - Зворотні посилання на вирази \N —
\1
Тут вираз описує весь рядок цілком, а потрібний шматок узятий у додаткові круглі дужки — ([A-Za-z0-9_/. -]+). У колонці «Зворотні посилання на вирази \N» пишеться \1: «візьми вміст перших дужок». Одиниця — це номер дужок у виразі; якби груп було дві, друга називалася б \2.
Охоплення те саме: 2969 товарів із 6549, результати збігаються з першим прикладом. Різниця в підході: у першому випадку ви обмежуєте знахідку умовами, у другому — знаходите все й указуєте, яку частину лишити.
Колонку «Зворотні посилання на вирази \N» варто пам'ятати ще й тому, що вона єдина дозволяє зібрати результат із кількох шматків або дописати до знайденого свій текст. Порожня колонка означає «поклади знайдене як є».
Колонку часто не помічають: пишуть умови навколо або живуть із зайвими дужками в результаті. Якщо вираз із умовами не виходить, а результат приходить із зайвим — почніть із цієї колонки, вона для цього й зроблена.
Витягти об'єм із назви — і де вираз помиляється
Другий приклад складніший, бо в ньому видно межу інструмента. Прайс «Прайс Веселка Плюс.xml», 1350 товарів. Треба витягти об'єм чаші або резервуара, який постачальник пише просто в назві.
- Поле джерело — «Найменування»
- Поле призначення — окреме поле під об'єм
- Регулярний вираз —
[0-9]+([.,][0-9]+)? ?л
Читається так: одна або більше цифр, далі необов'язкова дробова частина через крапку чи кому, далі необов'язковий пробіл і літера «л».
Результат: 323 товари з 1350. Ось що саме повернув вираз:
| Найменування | Результат |
|---|---|
| Мультипіч ARDESTO 1450Вт, чаша-4л, сенсорне керув., 8 авто. програм, пластик, чорний | 4л |
| Мультипіч ARDESTO, 1500Вт, об'єм-5.5л, сенсорне керув., 10 авто. програм, пластик, чорний | 5.5л |
| Охолоджувач повітря ARDESTO ACO-B15 … резервуар 15 л., 410 м3/год … | 15 л |
| Термосумка на колесах 2E, 50л, темно-синя | 50л |
| Осушувач повітря промисловий 2E Air Master 150Pro 150л/добу 400м кв … | 150л |
Три висновки з цієї таблиці, і всі три корисні.
Перший: результат приходить у різному вигляді — «4л», «15 л», «5.5л». Вираз узяв те, що було в тексті, разом із пробілом там, де пробіл був. Якщо вам потрібне саме число, без літери, — тут і знадобиться зворотне посилання: узяти [0-9]+([.,][0-9]+)? у дужки й записати \1.
Другий: останній рядок — помилка, і її не виправити виразом. В осушувача повітря «150л/добу» — це продуктивність, скільки літрів вологи він збирає за добу, а не об'єм резервуара.
Форма збіглася, зміст різний. Вираз не знає, що таке осушувач; він побачив цифри перед «л» і взяв їх. Саме тому в цьому вікні є вкладка «на основі товарів»: подивитися на справжніх товарах, що вийшло, перед тим як це поїде в каталог.
Третій: 323 з 1350 — це чверть прайсу. Нормальна цифра для такого правила: об'єм є не в кожній назві. Ненормально — коли ви чекали більшість, а отримали одиниці.
Для порівняння: вираз під вагу [0-9]+([.,][0-9]+)? ?кг на прайсі «Гармонія Центр» із 327 товарів спрацював лише на двох. Правило технічно робоче, але заводити його заради двох рядків немає сенсу — і дізнатися про це можна за одну хвилину, до завантаження.
Прибрати хвіст із назви: галочка «Вирізати»
Третій приклад — не про витягування, а про чистку. Прайс «Прайс Фенікс-Логістик.xlsx», 1990 товарів, у частини назв наприкінці стоїть регіональна позначка «(UA)» або «(EU)». На вітрині вона зайва.
- Поле джерело — «Найменування»
- Поле призначення — «Найменування», те саме поле
- Регулярний вираз —
[ ]\((UA|EU)\)$ - Вирізати значення з поля джерела — увімкнено
[ ] на початку — це один пробіл. Записати його можна й просто пробілом, але тоді ви його не побачите ні тут, ні в клітинці правила, а він тут важливий: без нього хвіст зникне, а пробіл перед ним залишиться, і назва закінчуватиметься невидимим пробілом.
Квадратні дужки навколо пробілу нічого не змінюють у роботі виразу — перевірено на всіх 1990 назвах прайсу, результат посимвольно однаковий.
Під правило потрапляють 113 товарів із 1990:
| Було | Стало |
|---|---|
| Apple AirTag 4-pack (MX542) (EU) | Apple AirTag 4-pack (MX542) |
| Amazfit Active 2 Square Black Leather (W2440GL3N) (UA) | Amazfit Active 2 Square Black Leather (W2440GL3N) |
| Amazfit T-Rex 3 Pro 44mm Tactical Black (W2549GL5N) (UA) | Amazfit T-Rex 3 Pro 44mm Tactical Black (W2549GL5N) |
| Apple HomePod 2 Midnight (MQJ73/MQJ93/MDEW4AX) (EU) | Apple HomePod 2 Midnight (MQJ73/MQJ93/MDEW4AX) |
Зверніть увагу: дужки з артикулом усередині назви лишилися на місці. Вираз вимагає, щоб дужки стояли наприкінці рядка, і «(MX542)» під цю умову не підпадає.
Те саме правило без галочки
Галочка «Вирізати значення з поля джерела» перевертає сенс правила на протилежний. З нею в поле призначення йде текст без знайденого фрагмента. Без неї — сам знайдений фрагмент:
| Було | З галочкою «Вирізати» | Без галочки |
|---|---|---|
| Apple AirTag 4-pack (MX542) (EU) | Apple AirTag 4-pack (MX542) | «(EU)» — разом із пробілом попереду |
Обидва варіанти правильні — це різні задачі. Без галочки ви витягуєте позначку (наприклад, щоб покласти «UA» в окреме поле регіону). З галочкою — прибираєте її з назви.
Словами ця настройка розуміється навпаки приблизно завжди, тому найкоротший шлях — увімкнути галочку й подивитися вкладку «на основі товарів»: там видно обидві колонки одразу, «Оригінальне значення» і «Нове значення». Вкладка «На основі тексту» галочку теж враховує, але показує результат лише для одного вставленого рядка (дві вкладки перевірки).
Правило з галочкою пише результат у те саме поле, з якого читало. Тобто назва товару прайсу змінюється. Це нормальний і найпоширеніший спосіб чистити назви, але перевіряти такий вираз перед увімкненням треба уважніше за інші: тут ви не заповнюєте порожнє поле, а переписуєте заповнене.
Як перевірити правило до завантаження
Під сіткою правил стоїть блок «Перевірка роботи регулярного вираження» з двома вкладками. Вкладки не рівноцінні: одна працює з рядком, який ви вставили руками, друга — зі справжніми товарами прайсу, і саме друга показує те, що буде записано в поле.
1
Вкладка «На основі тексту»2
Вкладка «на основі товарів»3
Поле «Текст»4
Поле «Результат»5
Кнопка «Тестувати»- Перевірка на зразку тексту, який ви вводите вручну.
- Перевірка одразу на товарах поточного прайсу.
- Сюди вводиться зразок тексту для перевірки правила.
- Тут з'явиться результат застосування регулярного виразу.
- Запускає перевірку введеного тексту чи товарів.
«На основі тексту»
Вкладка для одного рядка. Вставте в поле «Текст» назву товару, виділіть у сітці правило, яке перевіряєте, і натисніть «Тестувати». У полі «Результат» з'явиться те, що вираз повернув.
Три речі, які варто знати заздалегідь:
- Поле «Текст» порожнє — кнопка нічого не робить, і повідомлення не буде.
- Вираз відпрацював, але нічого не знайшов — у полі результату з'явиться «Отриманий порожній результат!».
- Правило в сітці не виділене — поле результату просто очиститься, без жодного повідомлення. Це ж саме станеться, якщо у виразі синтаксична помилка: непарна кругла дужка, незакрита квадратна. Порожнє поле без тексту «Отриманий порожній результат!» — сигнал шукати помилку у виразі або виділити рядок правила.
Вкладка показує те саме, що зробить завантаження, — для всіх видів правил, зокрема для тих, у яких заповнена колонка «Зворотні посилання на вирази \N» або ввімкнена галочка «Вирізати значення з поля джерела».
«на основі товарів»
Друга вкладка показує справжні завантажені товари цього прайсу, у яких поле-джерело не порожнє, двома колонками: «Оригінальне значення» і «Нове значення». Саме тут видно охоплення — скільком товарам правило взагалі щось дало — і осічки на кшталт «150л/добу».
Щоб вкладка показала перелік, потрібні дві речі: прайс хоча б раз завантажений і в сітці виділене правило — без цього список порожній. Вузол дерева задає охоплення: обрана категорія звужує перелік до її товарів, а верхній вузол показує товари всього прайсу. Це нормальний спосіб перевірити правило, яке ні до якої категорії не прив'язане.
Перед тим як лишати правило ввімкненим
Коли правила спрацьовують
Правила не застосовуються в момент, коли ви їх пишете. Вони спрацьовують під час завантаження прайсу — це операція «Автозаміна значень у товарів на підставі регулярних виразів» у ланцюжку операцій завантаження.
Правила змінюють товари прайсу, а не картки каталогу: у каталог витягнуте значення потрапляє далі, через зіставлення й оновлення каталогу.
1
«Розподіл товарів за категоріями базового каталогу»2
«Автозаміна значень у товарів на підставі регулярних виразів»- Ця операція має виконуватися раніше — категорія товару вже повинна бути визначена.
- Операція застосовує ваші регулярні вирази до значень полів товарів прайсу.
Перед регулярними виразами відпрацьовують розподіл за категоріями каталогу, правила заміни тексту й пошук виробника. Тому працює прив'язка правила до категорії й колонка «Виробник», а вираз бачить уже почищений текст. Після них іде зіставлення з каталогом — витягнутий артикул устигає в ньому взяти участь, — і переоцінка.
Порядок операцій змінюється у вікні «Порядок застосування операцій». Без потреби туди краще не заходити: перестановка регулярних виразів наперед — це саме те, від чого перестає працювати прив'язка до категорії. Детальніше: Порядок операцій під час завантаження прайсу.
У якому порядку працюють самі правила
Усередині операції беруться тільки правила з увімкненою «Активністю», у порядку, заданому колонкою «Порядок застосування правила». Нове правило отримує наступний крок — 10, 20, 30, — тож окремо нумерувати їх зазвичай не треба. Нуль там лишився у правил, створених раніше.
Значення це має тоді, коли одне правило готує поле для іншого: перше витягує з назви фрагмент, друге працює вже з ним. У такому випадку проставте різні числа явно. При однакових числах правила йдуть у порядку створення — старіше першим, — але покладатися на це не варто: різні числа видно просто в сітці, а порядок створення нізвідки не видно.
Скільки правил можна завести і на скількох товарах вони працюють, програма не обмежує. Кожне активне правило обробляє за один раз усі товари прайсу, у яких поле джерела не порожнє, — з урахуванням категорії та виробника, якщо їх задано в правилі.
Частинами товари не діляться, і окремого ліміту часу в цієї операції немає. Скільки часу правила додають до завантаження, програма не показує окремо: у журналі видно загальний час завантаження прайсу.
Кнопка «Стоп» перевіряється між операціями ланцюжка, а не між правилами. Якщо ви натиснули її, коли регулярні вирази вже почали працювати, спершу відпрацюють усі правила, і тільки перед наступною операцією завантаження зупиниться.
- Початок або кінець
- Дія або результат
- Розвилка: далі шлях залежить від відповіді
Що буде, якщо вираз нічого не знайшов
Порожній результат — не помилка, а звичайна ситуація: у прикладі з артикулом таких товарів 3580 із 6549. Що з ними станеться, вирішують дві колонки.
| «Значення за замовчуванням, якщо порожній результат РВ» | «Замінювати, якщо порожній результат РВ» | Що буде з товаром |
|---|---|---|
| порожньо | вимкнено (як у нового правила) | Нічого. Старе значення поля лишається на місці |
| порожньо | увімкнено | Поле очиститься. У нього запишеться порожнеча, попереднє значення зникне |
| заповнено | будь-яке | Запишеться те значення, яке ви вписали |
Середній рядок — найдешевший спосіб зіпсувати собі прайс. Правило ловить чверть товарів, галочка «Замінювати, якщо порожній результат РВ» увімкнена — і решта три чверті лишаються з порожнім полем. За замовчуванням галочка знята, і знімати її назад доведеться вручну.
Окремо про останню з колонок — «Значення за замовчуванням, якщо не порожній результат РВ». Вона працює навпаки: коли вираз щось знайшов, у поле піде не знайдене, а те, що написано в цій колонці.
Задумана вона як позначка «тут щось знайшлося» (наприклад, поставити «так» у службове поле), і якщо заповнити її помилково, усі товари отримають один і той самий текст замість витягнутих артикулів.
Правило вже затерло значення: як повернути
Кнопки «Скасувати» для правил немає, і попереднього значення поля програма не зберігає: правило записує результат прямо в поле товару прайсу. Тому, якщо правило пише в те саме поле, з якого бере текст, вкладка перевірки «на основі товарів» після такого завантаження показує в колонці «Оригінальне значення» вже зіпсоване поле, а не те, що було у файлі.
Повертає значення тільки повторне завантаження прайсу. Кожне завантаження з файла спершу видаляє старі товари цього прайсу і читає їх із файла заново, а вже потім застосовує правила. Порядок такий:
- Виправте вираз або зніміть у правилі галочку «Активність» — інакше повторне завантаження зіпсує поле так само.
- Завантажте саме цей прайс кнопкою «Завантажити».
- Перевірте результат на вкладці «на основі товарів».
Кілька розвилок, на яких повернення не спрацьовує:
- Якщо з файла не вдалося прочитати жодного товару, старі товари не видаляються і правила не застосовуються. У журналі з'явиться «Дані не отримані, буде відображено попередній список товарів» — зіпсовані значення лишаться як були.
- Якщо в прайсі увімкнено «Обробляти прайс, лише якщо змінилася інформація у файлі», то під час завантаження всіх прайсів і за розкладом незмінений файл пропускається: у журналі буде «Дані в прайс-листі не змінилися, пропускаємо завантаження», і товари не перечитуються. Завантаження одного прайсу кнопкою «Завантажити» цю перевірку не робить.
- Якщо після зіпсованого завантаження вже запускали оновлення базового каталогу, хибні значення могли потрапити й у каталог. Повторне оновлення каталогу заново перераховує товари з даних прайсів, тому запускайте його вже після того, як прайс перезавантажено з виправленим правилом.
- Початок або кінець
- Дія або результат
- Розвилка: далі шлях залежить від відповіді
Сценарії
Кожен сценарій — одна задача магазину, колонки сітки правил, які для неї заповнюють, і те, що вийде після наступного завантаження прайсу. Колонки, про які не сказано, лишаються такими, якими їх ставить нове правило.
Постачальник заповнює артикул не всім товарам — дописати решту з назви
Що зробити. У верхньому вузлі дерева додайте правило з полем джерелом «Найменування». У колонці «Поле призначення» оберіть «Артикул виробника», у «Регулярний вираз» впишіть вираз з розділу про артикул і ввімкніть «Замінювати, якщо значення в полі призначення порожнє».
Що вийде. Товари, у яких артикул прийшов із файла, правило не чіпає: воно пише тільки туди, де поле призначення порожнє. Решта отримує фрагмент із дужок наприкінці назви. Товари, у назві яких вираз нічого не знайшов, лишаються з порожнім артикулом — «Замінювати, якщо порожній результат РВ» у нового правила вимкнено.
Чого не буде. Товари каталогу від цього не змінюються: правило працює з товарами прайсу, а витягнутий артикул далі бере участь у зіставленні, яке в ланцюжку завантаження стоїть після регулярних виразів. І вираз не відрізнить артикул від штрихкоду в тих самих дужках — наступний сценарій про це.
Коди в дужках правильні тільки в одного бренду
Що зробити. У правилі з попереднього сценарію заповніть колонку «Виробник»: перелік виробників відкриває вузька кнопка праворуч від клітинки.
Що вийде. Правило обробляє лише товари прайсу, яким операція «Пошук виробника товару» вже визначила цього виробника, — вона в ланцюжку стоїть раніше за регулярні вирази. Товари інших брендів, у яких у дужках наприкінці назви, скажімо, штрихкод, у відбір не потрапляють.
Чого не буде. Товари, для яких виробника не визначено, правило теж пропускає — навіть якщо бренд написано в назві.
Прибрати з назви регіональну позначку
Що зробити. Правило з полем джерелом «Найменування», «Поле призначення» — теж «Найменування», вираз з розділу про чистку і ввімкнена «Вирізати значення з поля джерела». «Зворотні посилання на вирази \N» лишіть порожніми: коли вони заповнені, у поле йде зібраний за ними текст, і галочка на результат уже не впливає.
Що вийде. У товарів, назва яких закінчується на «(UA)» чи «(EU)», хвіст зникає разом із пробілом перед ним. Назви без такого хвоста лишаються тими самими. Наступні операції завантаження, зокрема зіставлення з каталогом, бачать уже почищену назву.
Чого не буде. Файл постачальника не змінюється: наступне завантаження знову прочитає назву з хвостом, і правило знову його прибере. Дужки всередині назви, як-от з артикулом, лишаються на місці.
Позначити, у яких товарів у назві є потрібна ознака
Що зробити. Правило з вашим виразом і полем призначення, яке ви відвели під позначку. У «Значення за замовчуванням, якщо не порожній результат РВ» впишіть «так», у «Значення за замовчуванням, якщо порожній результат РВ» — «ні».
Що вийде. Товари, у яких вираз щось знайшов, отримують «так» замість знайденого фрагмента, решта — «ні». Галочку «Замінювати, якщо порожній результат РВ» для цього вмикати не треба: значення за замовчуванням підставляється раніше, ніж програма вирішує, чи пропускати товар без знахідки.
Чого не буде. Товари, у яких поле джерело порожнє, у відбір правила не потрапляють, і позначки в них не буде жодної — ні «так», ні «ні».
Що робити, коли правило не спрацювало
| Що ви бачите | Чому так | Що зробити |
|---|---|---|
| «Отриманий порожній результат!» у полі «Результат» | Вираз відпрацював без помилки, але в цьому тексті нічого не знайшов | Спробувати інший зразок тексту. Пам'ятайте: за замовчуванням такий товар просто лишиться без змін (порожній результат) |
| Поле «Результат» очистилося, жодного повідомлення | Або в сітці не виділене жодне правило, або у виразі синтаксична помилка — непарна дужка, незакрита квадратна дужка | Виділити рядок правила й натиснути «Тестувати» ще раз. Якщо поле знову порожнє — шукати помилку в самому виразі (перевірка) |
| На вкладці «На основі тексту» у полі «Результат» — точно той самий текст, що ви вставили | Вираз знайшов увесь текст цілком: так буває, коли в ньому забули межі — наприклад, .* без уточнення, що саме шукаємо |
Звузити вираз і прогнати ще раз; поруч подивіться вкладку «на основі товарів» — на справжніх назвах охоплення видно краще (дві вкладки перевірки) |
| У поле призначення потрапив результат із дужками, як-от «(BX8070110100)» | У поле йде весь знайдений фрагмент цілком. Дужки вписані у вираз — отже, вони частина знахідки | Додати умови навколо: (?<=\()…(?=\)$) — або скористатися колонкою «Зворотні посилання на вирази \N»: це (як це працює) |
| Перевірка показує правильний результат, а після завантаження прайсу поле порожнє | Найчастіше — знята «Активність»: в операцію потрапляють тільки ввімкнені правила. Друга причина — увімкнено «Замінювати, якщо значення в полі призначення порожнє», а поле вже заповнене | Перевірити галочку «Активність» і колонку «Замінювати, якщо значення в полі призначення порожнє» (колонки сітки) |
| Правила не видно в списку, хоча воно точно створювалося | Сітка показує правила тільки обраного вузла дерева. Правило створене при іншій обраній категорії | Обрати в дереві той вузол, при якому правило створювали; верхній вузол — це правила без категорії (дерево категорій) |
| Правило, прив'язане до категорії, не спрацювало на жодному товарі | Категорію товарам проставляє операція «Розподіл товарів за категоріями базового каталогу». Якщо регулярні вирази переставлені раніше за неї, на першому завантаженні категорії ще ні в кого немає, а далі вона щоразу обнуляється й розставляється наново | Перенести правило у верхній вузол дерева або повернути операцію на місце у вікні «Порядок застосування операцій» (коли правила спрацьовують) |
| Поле призначення затерлося порожнечею в частини товарів | Увімкнено «Замінювати, якщо порожній результат РВ», а вираз на цих товарах нічого не знайшов | Вимкнути цю галочку або заповнити «Значення за замовчуванням, якщо порожній результат РВ» (порожній результат) |
| Замість знайдених значень у всіх товарів один і той самий текст | Заповнено «Значення за замовчуванням, якщо не порожній результат РВ» — воно перекриває знайдене | Очистити цю колонку, якщо потрібен сам знайдений фрагмент (порожній результат) |
| Вкладка «на основі товарів» порожня або показує не ті товари | У сітці не виділене правило або прайс ще жодного разу не завантажувався. «Не ті товари» — це охоплення вузла: обрана категорія показує тільки свої товари, верхній вузол — усі товари прайсу | Виділити правило, завантажити прайс, а вузол дерева обрати за тим, що хочете побачити (перевірка) |
| Правила спрацьовують не в тому порядку, у якому ви їх задумали | У правил однакові числа в колонці «Порядок застосування правила» — тоді вони йдуть у порядку створення, а не так, як ви задумали. У правил, створених до нумерації кроками, там нуль | Проставити різні числа тим правилам, які залежать одне від одного (порядок правил) |
| Правило не додається або не видаляється, з'являється червоне повідомлення | У вашої групи немає права на зміну прайс-листів | Прочитати текст повідомлення й попросити адміністратора дати право (хто має доступ) |
Часті запитання
З чого почати, якщо я ніколи не писав регулярних виразів?
Візьміть готовий вираз зі статті — для артикула чи об'єму, — вставте його в правило й натисніть «Тестувати» зі своєю назвою товару. Далі змінюйте по одному символу й дивіться результат. Або натисніть кнопку з чарівною паличкою й опишіть словами, що треба знайти.
Чи можна одним правилом і витягти артикул, і прибрати його з назви?
Ні, це два правила. Перше читає «Найменування» і пише в «Артикул виробника». Друге читає «Найменування», пише в «Найменування» і має ввімкнену галочку «Вирізати значення з поля джерела». Проставте їм різний «Порядок застосування правила».
Як виділити об'єм на кшталт «0,5 л» в окреме поле чи характеристику?
Правилом із полем джерелом «Найменування», окремим полем товару прайсу як полем призначення й виразом [0-9]+([.,][0-9]+)? ?л. Характеристик каталогу серед полів призначення немає. Тільки число без «л» дає зворотне посилання. Детальніше: об'єм із назви.
Скільки товарів зачепить моє правило?
Це видно до завантаження: вкладка «на основі товарів» показує справжні товари прайсу двома колонками — «Оригінальне значення» і «Нове значення». Якщо рядків там одиниці, правило заводити немає сенсу.
Чи змінює правило файл постачальника?
Ні. Правила працюють із товарами прайсу вже всередині програми, під час завантаження. Наступного разу постачальник надішле такий самий файл, і правило відпрацює знову — саме тому чистку назв і роблять правилом, а не руками.
Чим це вікно відрізняється від «Правил заміни тексту»?
Правила заміни тексту змінюють значення в його власному полі й мають простий режим без виразів. «Регулярні вирази» кладуть знайдене в будь-яке поле, уміють фільтр за виробником і значення за замовчуванням. Детальніше: заміна тексту чи регулярні вирази.
Чи видно, хто й коли змінив вираз?
Ні, історії змін вікно не веде. Для нотаток — навіщо правило й хто його завів — є колонка «Примітка».
Суміжні теми
- Якщо значення має лишитися у своєму полі, а замінити треба слово чи шматок тексту — Правила заміни тексту.
- Якщо правило налаштоване, а не спрацювало на жодному товарі — Порядок операцій під час завантаження прайсу.
- Якщо артикул витягнуто, а товар не знаходить пари в каталозі — Зіставлення товарів прайсу з каталогом.
- Якщо треба розкласти товари постачальника по своїх категоріях — Визначення категорій товарів прайсу.

