Коли подія сталася і запис пройшов умову, Elbuz виконує команди правила по черзі: надсилає лист чи SMS, створює документ, змінює поля, звертається до зовнішнього сервісу.
Коли це знадобиться:
- Клієнту потрібне повідомлення — лист або SMS іде через вашу поштову скриньку й SMS-шлюз.
- Із замовлення потрібна накладна — «Створити документ» копіює його в інший тип з усіма позиціями й може одразу провести.
- Дані треба передати в іншу систему — «Виконати HTTP-запит» надсилає поля запису на вашу адресу.
- Менеджеру потрібне нагадування — «Додати завдання» ставить картку на дошку органайзера.
З чого почати: картка правила → третя секція → «Додати команду».
Що вміють команди
- Одинадцять команд — лист, SMS, завдання, створення й зміна контрагента, документа, організації, HTTP-запит, процес.
- Значення полів — постійне значення або формула, яку програма рахує для кожного запису.
- Проводка — правило проводить документ або знімає проводку, склад рухається як при ручному проведенні.
- HTTP-запит — дані запису макросами в тілі запиту, токен, Basic Auth, розбір відповіді по полях.
- Запуск процесу — фоновий прогін із захистом від нескінченного кола.
- Лист і SMS — ідуть через ваші підключення; невдача видна в журналі.
Де це і хто має доступ
- Команди правила
- картка правила → третя секція «Команда» → «Додати команду»
- Налаштування команди
- олівець у рядку команди
- Право доступу
- вікно «Автоматичні правила» (усі входи)
- Підготувати
- поштову скриньку, SMS-шлюз, дошку органайзера чи процес — залежно від команди
Що робить кожна з одинадцяти команд
Команди додаються в третій секції картки правила кнопкою з підказкою «Додати команду». Одному правилу можна дати кілька команд; порядок задає колонка «Порядок виконання».
| Команда | Що робить | Що потрібно заздалегідь |
|---|---|---|
| Надіслати листа | лист за шаблоном, який створюється разом із командою | налаштований поштовий сервер |
| Надіслати SMS | SMS на телефон із документа, а якщо там порожньо — з картки контрагента | підключений SMS-шлюз, інакше команда одразу повертає невдачу |
| Створити контрагента | нову картку контрагента; без заповненої назви не створюється | — |
| Додати завдання | картку на дошці органайзера, звʼязану із записом події | хоча б одна ввімкнена дошка з колонкою |
| Змінити дані контрагента | змінює контрагента, якому належить запис | — |
| Створити документ | копію поточного документа в іншому типі, з усіма позиціями | у правилах команди обовʼязково задати цільовий тип документа |
| Змінити дані документа | змінює документ події | — |
| Створити організацію | нову організацію, а якщо така вже є (з тим самим зовнішнім ID, а коли його не задано — з тією самою назвою), бере наявну; у документі події ставить її в поле «Компанія одержувач»; без назви не створюється | — |
| Змінити дані організації | змінює компанію з контексту події | — |
| Виконати HTTP-запит | звернення до чужого сервісу з даними запису | адреса зовнішнього сервісу |
| Запустити процес (Flow) | запускає процес у фоні з даними події | створений і ввімкнений процес |
1
Список команд2
Порядок виконання- Одному правилу можна додати кілька команд із одинадцяти доступних типів.
- Колонка «Порядок виконання» визначає, у якій послідовності команди спрацюють.
Як задаються значення полів
Команди, які щось змінюють або створюють, налаштовуються тим самим конструктором, що й умова, але читається він інакше: ліворуч поле, праворуч значення, яке треба записати. Оператор посередині в цьому режимі не використовується взагалі — програма бере тільки пару «поле — значення».
Значення може бути формулою: усе, що починається з символу @, обчислюється — @if, @calc, @concat, @json, @field. Синтаксис, джерела даних і готові формули — у статті формули у тригерах.
Два поля поводяться не як усі. У командах «Змінити дані документа» і «Створити документ» правило з полем проводки не записує значення, а справді проводить документ (про проводку). А в команді «Створити документ» правило з полем типу документа задає, у який саме тип копіювати; без нього нічого не створюється.
Як правило проводить документ
У команді «Змінити дані документа» програма спершу записує всі інші поля команди, а вже потім проводить документ або знімає проводку. Проведення йде тим самим механізмом, що й ручне, і в той момент, коли виконується команда, — тобто всередині збереження, яке підняло подію.
- Дія або результат
- Розвилка: далі шлях залежить від відповіді
Що стається із залишками
Що станеться із залишками, залежить від типу документа. У стандартному наборі типів:
- «Прибуткова накладна» додає кількість на склад-отримувач;
- «Витратна накладна», «Повернення постачальнику» і «Акт списання» списують зі складу-відправника;
- «Переміщення» списує з одного складу і додає на інший;
- «Замовлення покупця» склад не рухає, але проведене замовлення займає товар у резерв — якщо в «Схемі роботи» документів позначено «Власний склад» або «Постачальник / опт».
Наявність перед списанням не перевіряється: якщо товару на складі немає, залишок іде в мінус. Якщо тип документа працює зі складом, а потрібний склад у документі не заповнений, проводка не відбудеться і команда отримає «Не виконано!». Якщо документ уже в потрібному стані — уже проведений або вже непроведений, — нічого не відбувається.
«Витратна накладна», створена на основі замовлення, при проведенні дописує відвантажену кількість у позиції цього замовлення — якщо в «Схемі роботи» позначено «Постачальник / опт».
Скасувати проводку можна і вручну, і правилом — значенням 0 у полі проводки команди «Змінити дані документа». Обидва шляхи роблять зворотний рух: прихід знімається зі складу, списане й переміщене повертається, резерв замовлення перераховується, у замовленні-основі відвантажена кількість зменшується (резерв і відвантаження — за тих самих умов «Схеми роботи»).
Проведення і скасування лишають запис в історії документа. Один виняток: якщо ввімкнено партійний облік, скасування списання не повертає списані партії.
Якщо склад не заповнений (або це переміщення на той самий склад), решта полів команди на той момент уже записані. Позначки «виконано» правило в такому разі не ставить, тому при наступній події на цьому документі команда спробує ще раз і знову перезапише ті самі поля.
Проведення з правила не піднімає подію «Документ: проводка (підпис)»: правила, що чекають саме на неї, від такого проведення не спрацюють.
У команді «Створити документ» «Так» у полі проводки проводить новий документ — після того, як його створено й записано поля команди. Результат цієї проводки в журналі не видно: якщо новий документ провести не вдалося (наприклад, у ньому немає складу), він лишиться непроведеним, а рядок у журналі буде такий самий, як після успішної проводки, — з номером створеного документа.
Команда все одно вважається виконаною — документ створено, і наступна подія не створить його вдруге. Тому чи проведено новий документ, перевіряйте в самому документі; непроведений проведіть вручну. «Ні» в цій команді проводку не чіпає.
Як передати дані в інший сервіс: HTTP-запит
Форма поділена на пʼять блоків. Першим іде «Налаштування отримання токена» — він згорнутий і більшості не потрібен: це окремий попередній запит, після якого {token} у параметрах і заголовках підміняється отриманим значенням.
Сам запит налаштовується в другому блоці, «Налаштування надсилання даних»: тип запиту GET, POST, PUT, PATCH або DELETE; адреса; тіло FORM, JSON чи TEXT; параметри; заголовки. Далі — «HTTP авторизація (Basic Auth)» з логіном і паролем, «Налаштування збереження даних» (розкласти відповідь по полях документа чи контрагента) і «Додатково», де лежать «Успішні коди статусу відповіді» — за замовчуванням 200.
Дані самого запису підставляються макросами — заради них запит зазвичай і роблять. У полі RAW достатньо набрати відкриваючу фігурну дужку, і програма покаже список полів документів, контрагентів і компаній у звичайному вигляді: {Документ: № документа}, {Контрагент: Телефони}.
Коротка форма тих самих макросів — {{d.поле}} для документа події, {{pc.поле}} для його контрагента і {{cn.поле}} для компанії. Працюють вони в тілі запиту й у значеннях параметрів; у заголовках макросів немає — там підміняється тільки {token}.
Тіло й параметри — це або-або: якщо поле RAW заповнене, параметри не надсилаються зовсім.
Адреса перевіряється перед кожним запитом. Дозволені тільки http і https; заборонені localhost, домени .local, внутрішні й службові адреси мереж, а також імена, які не вдалося розібрати в адресу.
Перенаправлення програма проходить сама, не більше пʼяти підряд, і кожну наступну адресу перевіряє так само. У локальній установці Elbuz ця перевірка вимкнена — там звернення до свого сервера в локальній мережі законне.
- Дія або результат
- Розвилка: далі шлях залежить від відповіді
Як запустити процес (Flow)
Єдина команда, яка не виконується на місці: правило створює фоновий прогін і йде далі. Вимкнений процес подією не запускається. Є й захист від нескінченного кола: один і той самий процес не запуститься подією для одного й того самого документа чи контрагента частіше ніж 3 рази за 10 хвилин — четверта спроба відхиляється й лишає рядок у журналі.
Звідки йдуть лист і SMS і хто за них платить
Самі команди нічого не списують з балансу Elbuz: лист і SMS ідуть через ваші власні підключення, і платите ви за тарифами поштового сервісу чи SMS-шлюзу.
- Лист відправляється з поштової скриньки, вибраної в шаблоні листа. Якщо в шаблоні скриньки немає, програма бере ввімкнену скриньку за замовчуванням, а якщо й такої немає — першу ввімкнену з заповненими сервером, логіном, паролем і адресою відправника. Не знайшлося жодної, або порожні отримувач, тема чи текст — лист не йде, у журналі зʼявляється «Лист не надіслано: не налаштовано поштову скриньку або не заповнені обов'язкові поля» з переліком того, чого бракує, а команда отримує позначку «Не виконано!».
- SMS відправляється від імені вашого облікового запису в SMS-шлюзі — з логіном і паролем, які вказані в налаштуваннях шлюзу. Телефон береться з документа: спершу основний, далі телефон платника, далі телефон одержувача. Якщо в документі всі три порожні — з картки контрагента, по черзі з першого, другого й третього телефону.
- Мову листа програма вибирає сама: спершу мову отримувача, потім мову магазину, а якщо шаблон заповнено лише однією мовою — її.
Скільки витрачено, видно в кабінеті поштового сервісу чи SMS-шлюзу. В Elbuz окремого лічильника витрат немає, кількість відправок рахується рядками «Журналу операцій».
Команда вважається виконаною, тільки якщо SMS-сервіс прийняв повідомлення. Сервіс відмовив (скінчилися гроші, неправильний номер, заблокований відправник) — у «Журналі операцій» команда з позначкою «Не виконано!» і причиною від сервісу. Та сама позначка, якщо сервіс SMS не вибрано, текст шаблону порожній або не знайшлося жодного телефону. Усі відправки й помилки видно і в журналі вікна «Рассылка SMS».
Що робити, коли команда не виконалась
| Що ви бачите | Чому так | Що зробити |
|---|---|---|
| Команда «Надіслати SMS» щоразу в журналі з позначкою «Не виконано!» | Сервіс SMS не вибраний або відмовив — причина стоїть у журналі поруч із позначкою | «Зовнішні сервіси» → «Рассылка SMS»: вибрати сервіс, вписати ключ і натиснути «Надіслати тест». Детальніше: як надсилати SMS клієнтам |
| HTTP-запит не йде, у відповіді «blocked» | Адреса не пройшла перевірку: не той протокол, внутрішня адреса мережі або імʼя, яке не вдалося розібрати | Указати зовнішню адресу по http або https (про HTTP-запит) |
| Процес із команди «Запустити процес (Flow)» не стартував | Той самий процес уже запускався подією для цього запису 3 рази за 10 хвилин, спрацював захист від петлі | Розірвати ланцюжок: прибрати команду, яка знову піднімає ту саму подію (про запуск процесу) |
Часті запитання
Чи можна в одному правилі і надіслати лист, і змінити статус?
Так. Команд у правилі може бути кілька, вони виконуються по черзі за колонкою «Порядок виконання».
Чи підставляються дані запису в заголовки HTTP-запиту?
Ні. Макроси працюють у тілі запиту й у значеннях параметрів, а в заголовках підміняється тільки токен, отриманий попереднім запитом (про HTTP-запит).
Чи спрацюють правила на документ, створений іншим правилом?
Ні. Документ, створений командою, власних подій не піднімає, тому правила на «Документ: додавання» на нього не спрацюють.
Чи можна створити документ на подію контрагента?
Ні. «Створити документ» копіює документ події, а в події контрагента копіювати нема чого.
Чи створить «Створити контрагента» дубль, якщо клієнт уже є?
Ні. Команда шукає картку з тією самою поштою, а без пошти — з тією самою назвою. Знайшла — нової картки не буде, команда вважається виконаною.
Суміжні теми
- Якщо потрібна загальна картина, — як працюють автоматичні правила.
- Якщо значення поля треба порахувати із суми чи склеїти з полів, — формули у тригерах.
- Якщо команда в журналі з позначкою «Не виконано!», — як перевірити правило.
- Якщо SMS-шлюз ще не підключено, — як надсилати SMS клієнтам.

