Перейти до вмісту

Рекомендації для розробників K2

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні


SEO title: Рекомендації для розробників K2 — компоненти, Git, Python, гриди, форми, база даних, UX та безпека ERP SEO description: Рекомендації для розробників K2 — Wiki-стаття про правила розробки модулів, веб-інтерфейсів, компонентів, гридів, форм, довідників, документів, API, бази даних, Git, тестування, оновлень, безпеки та UX у K2 ERP і K2 Cloud ERP. SEO keywords: рекомендації для розробників K2, K2 ERP для розробників, K2 Cloud ERP розробка, розробка модулів K2, компоненти K2 ERP, K2Grid, K2 ERP Python, Git K2 ERP, auto_update K2, k2update_push.py, models.py K2, forms.py K2, views.py K2, API K2 ERP, база даних K2 ERP, розробка ERP модулів, українська ERP Alternative to: хаотична розробка ERP; локальні доробки без Git; ручні зміни в базі; форми без UX; модулі без документації; інтеграції без журналювання; оновлення без тестування; 1С-доробки; BAS-доробки


Рекомендації для розробників K2 — це набір практичних правил для створення, підтримки й розвитку модулів, компонентів, веб-інтерфейсів, інтеграцій, гридів, форм, довідників, документів, звітів і бізнес-логіки в K2 ERP та K2 Cloud ERP.

Розробник K2 працює не просто з кодом. Він працює з ERP-платформою, у якій будь-яка зміна може вплинути на документи, фінанси, склад, доступи, користувачів, інтеграції, аналітику, оновлення та дані клієнта. Тому розробка в K2 має бути не хаотичною, а керованою: через компоненти, Git, документацію, тестування, права доступу, версіонування й зрозумілу архітектуру.

Головна ідея. Розробник K2 має створювати не одноразову доробку, а підтримуваний елемент ERP-платформи. Код має бути зрозумілим, компонент — документованим, інтерфейс — зручним, база даних — чистою, а оновлення — перевіреним.
Важливо. ERP-розробка відрізняється від звичайної веб-розробки. Тут помилка в полі, праві доступу, SQL-запиті, імпорті або оновленні може вплинути на реальні бізнес-процеси клієнта.
Критично. Не можна робити зміни “на живій базі”, без Git, без тестування, без опису версії та без розуміння бізнес-наслідків.

Що означає бути розробником K2

Розробник K2 — це спеціаліст, який створює або підтримує функціональність у межах ERP-платформи. Це може бути backend-розробник, frontend-розробник, full-stack-розробник, Python-розробник, PHP-розробник, TypeScript/JavaScript-розробник, спеціаліст із PostgreSQL, інтегратор, розробник звітів, автор доповнень або технічний партнер.

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

Технічний акцент. Розробник K2 працює на перетині коду, бази даних, бізнес-логіки, інтерфейсу, прав доступу та процесів підприємства.

Основні принципи розробки K2

Розробка в K2 має спиратися на кілька базових принципів.

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

Другий принцип — повторне використання. Якщо в K2 уже є грид, форма, довідник, фільтр, механізм імпорту, експорту або доступів, потрібно використовувати стандартну логіку, а не писати власну копію.

Третій принцип — контроль даних. Будь-яка зміна в базі має бути зрозумілою, контрольованою й безпечною.

Четвертий принцип — Git-дисципліна. Зміни мають фіксуватися, комітитися, пушитися, перевірятися й описуватися.

П’ятий принцип — тестування до публікації. Компонент не можна вважати готовим, якщо він не перевірений на тестовому середовищі.

Шостий принцип — документація. Якщо модуль не описаний, його важко підтримувати, передавати й продавати через екосистему K2.

Правильний підхід. Кожна розробка в K2 має відповідати трьом питанням: що вона робить, як її підтримувати, і що станеться після оновлення.

Локальне середовище розробника

Перед роботою з кодом розробник має підготувати локальне середовище. Для K2 Cloud ERP Python типовий сценарій передбачає копіювання робочого проєкту, перший запуск, налаштування віртуального середовища, запуск додатку, відкриття проєкту в PyCharm і підключення Git.

Базовий порядок:

  1. скопіювати проєкт із віддаленого сервера;
  2. перейти в каталог проєкту;
  3. виконати `first_run.sh` або `first_run.bat`;
  4. змінити `domain_protocol` з `https` на `http` для локального запуску;
  5. запустити додаток через `run.sh` або `run.bat`;
  6. відкрити проєкт у PyCharm;
  7. налаштувати Python Interpreter на локальний `venv`;
  8. встановити й налаштувати Git;
  9. підключити потрібні компоненти;
  10. перевірити роботу локального середовища.

<syntaxhighlight lang="bash"> cd /K2CloudERP bash first_run.sh bash run.sh </syntaxhighlight>

Для Windows:

<syntaxhighlight lang="bat"> ./first_run.bat ./run.bat </syntaxhighlight>

Важливо. Локальне середовище не повинно бути копією хаосу з бойового сервера. Воно має бути робочим dev-контуром, де можна безпечно розробляти, перевіряти й готувати зміни.

PyCharm і Python Interpreter

Для Python-розробки в K2 зручно використовувати PyCharm. Після відкриття проєкту потрібно налаштувати інтерпретатор саме на локальне віртуальне середовище поточного проєкту.

Приклад шляху для Linux:

<syntaxhighlight lang="text"> ../K2CloudERP/venv/bin/python3.12 </syntaxhighlight>

Приклад шляху для Windows:

<syntaxhighlight lang="text"> ..\K2CloudERP\venv\Scripts\python.exe </syntaxhighlight>

Якщо PyCharm використовує неправильний Python Interpreter, залежності можуть не відповідати проєкту. Це призводить до помилок запуску, некоректної роботи модулів або різної поведінки в IDE та консолі.

Типова помилка. Розробник відкрив проєкт у PyCharm, але не підключив правильний `venv`. У результаті код може запускатися не в тому середовищі, де встановлені потрібні залежності.

Git-дисципліна

Git у K2 потрібен не формально. Він забезпечує контроль змін, історію, можливість повернення до попередньої версії, командну роботу й підготовку компонентів до оновлення.

Перед початком роботи потрібно налаштувати користувача:

<syntaxhighlight lang="bash"> git config --global user.name "Ваше Ім'я" git config --global user.email "ваша_електронна_пошта@example.com" </syntaxhighlight>

Для авторизації через SSH:

<syntaxhighlight lang="bash"> ssh-keygen -t rsa -b 4096 -C "ваша_електронна_пошта@example.com" eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub </syntaxhighlight>

Отриманий публічний ключ потрібно додати у віддалений репозиторій.

Правильна звичка. Перед змінами — `git pull`. Після змін — `git status`. Перед передачею — осмислений commit. Після перевірки — push.

Коміти

Коміт має пояснювати, що саме змінено. Назва коміту не повинна бути випадковою.

Погані приклади:

<syntaxhighlight lang="text"> fix update 123 new test </syntaxhighlight>

Кращі приклади:

<syntaxhighlight lang="text"> Додано поле ПДВ у форму заявки на оплату Виправлено фільтр за статусом у журналі документів Оновлено SQL для довідника постачальників Додано перевірку прав на експорт у K2Grid </syntaxhighlight>

Стандартні команди:

<syntaxhighlight lang="bash"> git status git add . git commit -m "Опис зміни" git pull git push </syntaxhighlight>

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

Робота з auto_update

Для списку компонент може використовуватися скрипт `auto_update`. Його копіюють у корінь проєкту на рівні з `app.py`, після чого в `settings.py` додають потрібні компоненти.

Типова робота:

<syntaxhighlight lang="bash"> cd auto_update python git_cmd.py clone python git_cmd.py status python git_cmd.py commit python git_cmd.py pull python git_cmd.py push </syntaxhighlight>

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

Технічний акцент. auto_update потрібен для дисципліни роботи з компонентами, особливо коли проєкт складається не з одного модуля, а з багатьох пов’язаних частин.

Підключення компоненти вручну

Якщо потрібно підключити одну компоненту вручну, розробник переходить у каталог компоненти, ініціалізує Git, додає remote і отримує код із репозиторію.

Приклад:

<syntaxhighlight lang="bash"> cd components/k2site git init git checkout -b main git remote add origin http://git.corp2.eu/k2erp/python/k2/base/site/k2site.git git remote -v git fetch origin git pull origin main git status </syntaxhighlight>

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

Компонентна архітектура

Компонент у K2 має бути не хаотичним набором файлів, а структурованою частиною системи.

Типова структура компоненти може містити:

<syntaxhighlight lang="text"> components/ └── example_module/

   ├── example_module/
   │   ├── models.py
   │   ├── views.py
   │   ├── forms.py
   │   ├── hooks.py
   │   ├── objects/
   │   └── templates/
   ├── doc/
   │   ├── schema/
   │   ├── business_processes/
   │   └── user_manual/
   ├── requirements.txt
   └── setup.py

</syntaxhighlight>

`models.py` відповідає за структури даних. `views.py` — за логіку представлень. `forms.py` — за форми. `hooks.py` — за розширення поведінки. `doc/schema` — за документацію структури бази даних. `setup.py` — за параметри компоненти, включно з версією.

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

Версії компонентів

Кожна компонента, яка публікується або оновлюється, має мати версію. Версія вказується у `setup.py`.

Приклад:

<syntaxhighlight lang="python"> version = "2.0.4.43" version_type = "stable" </syntaxhighlight>

Для testing/beta-версії:

<syntaxhighlight lang="python"> version = "2.0.4.43" version_type = "testing" </syntaxhighlight>

Після зміни версії потрібно додати опис змін у `history.txt`.

Приклад:

<syntaxhighlight lang="text"> 2.0.4.43 - додано перевірку прав на експорт у журналі документів </syntaxhighlight>

Помилка. Оновити код компоненти, але не змінити версію й не додати запис у `history.txt` — це погана практика. Пізніше буде складно зрозуміти, що саме було змінено.

Сервер оновлень

Для завантаження компонентів у систему оновлення використовуються налаштування в каталозі:

<syntaxhighlight lang="text"> builder/config </syntaxhighlight>

У файл `component-list.txt` додається список компонентів:

<syntaxhighlight lang="text"> components/k2update components/k2adm components/k2site </syntaxhighlight>

У каталозі `builder/config/ignore` створюються файли з переліком того, що не потрібно завантажувати.

Приклад:

<syntaxhighlight lang="text"> __pycache__ .gitignore .git ej2.min.js </syntaxhighlight>

У файл `token.txt` додається токен доступу до сервера оновлень.

Публікація:

<syntaxhighlight lang="bash"> python k2update_push.py </syntaxhighlight>

Важливо. Перед `k2update_push.py` потрібно перевірити список компонентів, ignore-файли, токен, версію, history.txt і готовність до тестування.

Тестові домени deb1-deb3

Після завантаження нової версії компоненти потрібно оновити її на тестових доменах:

  • `deb1`;
  • `deb2`;
  • `deb3`.

Після оновлення потрібно перевірити функціональність. Мета цього етапу — переконатися, що нова версія:

  • коректно встановлюється;
  • не ламає наявний функціонал;
  • сумісна з поточним середовищем;
  • не створює помилок у залежних модулях;
  • працює відповідно до опису в `history.txt`.
Критично. Не можна вважати компонент готовим після push або завантаження на сервер оновлень. Готовність підтверджується тільки після перевірки на тестових середовищах.

База даних і models.py

Розробник K2 має уважно ставитися до бази даних. Якщо компонента створює нові таблиці, поля або зв’язки, це має бути описано в ORM-структурах і документації.

Файл:

<syntaxhighlight lang="text"> models.py </syntaxhighlight>

відповідає за структури даних компоненти.

У документації компоненти потрібно описувати:

  • які таблиці створюються;
  • які поля використовуються;
  • які зв’язки є між таблицями;
  • які поля є обов’язковими;
  • які індекси бажані;
  • які дані довідникові;
  • які дані операційні;
  • як оновлюється структура;
  • як компонент поводиться після міграції або оновлення.
Технічний принцип. Будь-яка зміна структури даних має бути зрозумілою, документованою й сумісною з оновленнями.

SQL і довідники

У K2 багато інтерфейсів спираються на довідники: товари, контрагенти, працівники, склади, проєкти, статуси, види документів, валюти, статті бюджету.

Для довідників важливо:

  • не дублювати записи;
  • мати код або унікальний ідентифікатор;
  • підтримувати пошук;
  • підтримувати вибір у формах;
  • мати зрозумілий текст відображення;
  • не створювати “тимчасові” довідники без потреби;
  • пов’язувати довідники зі спільною базою K2 ERP.

Для DropDown-полів SQL часто має повертати ключ і значення:

<syntaxhighlight lang="sql"> select id as k, name as v from table_name order by name </syntaxhighlight>

Важливо. Для довідників у K2Grid SQL має повертати зрозумілі `k` та `v`. Якщо цього не зробити, поле вибору може працювати некоректно.

K2Grid і YML

K2Grid може описувати таблиці через YML-файли. Такий підхід дозволяє створювати гриди, поля, сортування, фільтри, кнопки, довідники, master-detail-зв’язки та інші елементи інтерфейсу без хаотичного ручного кодування.

YML-опис таблиці зазвичай містить:

  • `select` — SQL-джерело;
  • `table` — логічна назва сутності;
  • `typeid` — тип опису;
  • `caption` — заголовок грида;
  • `sortname` — поле сортування;
  • `sortorder` — порядок сортування;
  • `height` — висоту;
  • `fields` — опис полів;
  • `detile` — зв’язок із детальною таблицею;
  • `getmaster` — режим деталі;
  • `masterid` — поле зв’язку з майстром;
  • `where` — фільтр для деталі.
Перевага K2Grid. YML-опис дозволяє стандартизувати таблиці, зменшити дублювання коду й швидше створювати бізнес-інтерфейси.

Master-detail

Зв’язок master-detail використовується, коли є головний запис і пов’язані рядки. Наприклад, документ і таблична частина, замовлення і позиції, завдання і рядки, накладна і товари.

У майстрі вказується детальна таблиця:

<syntaxhighlight lang="yaml"> detile: document_rows </syntaxhighlight>

У деталі:

<syntaxhighlight lang="yaml"> getmaster: true masterid: documentid where: " where (documentid='{masterid}') and (documentid<>) " </syntaxhighlight>

Схема роботи:

  1. користувач вибирає рядок у майстрі;
  2. K2Grid читає ID майстра;
  3. значення підставляється в `{masterid}`;
  4. детальна таблиця показує тільки пов’язані рядки.
Архітектурний акцент. Master-detail — це базовий шаблон ERP: документ і рядки, замовлення і позиції, заявка і деталі.

Поля у K2Grid

У `fields` описуються колонки та поля форми.

Типові атрибути:

Атрибут Призначення
`field` фактичне поле з SQL select
`alias` явне посилання на поле з урахуванням alias таблиці
`caption` назва колонки або підпис поля
`width` ширина колонки в гріді
`width_form` ширина поля у формі
`align` вирівнювання
`readonly` заборона редагування
`hidden` приховування колонки
`type_field` тип редактора
`def_value` значення за замовчуванням
`search` участь у пошуку
`sql` SQL для довідникового поля
`show_for` обмеження видимості за користувачами
Важливо. Кожне поле, зазначене у `fields`, має бути в `select`, якщо воно використовується для відображення або логіки.

Типи полів

У K2Grid можуть використовуватися різні типи полів:

  • `date`;
  • `datetime`;
  • `checkbox`;
  • `DropDown`;
  • `condition`;
  • текстові поля;
  • числові поля;
  • службові поля;
  • приховані ID;
  • кнопки-дії.

Для DropDown потрібно вказувати SQL, який повертає `k` і `v`.

Приклад:

<syntaxhighlight lang="yaml"> supplierid:

 field: supplierid
 caption: Постачальник
 type_field: DropDown
 sql: |
   select supplierid as k, name as v
   from suppliers
   order by name

</syntaxhighlight>

Для кнопки через `condition`:

<syntaxhighlight lang="yaml"> print:

 field: ' '
 caption: Д
 width: 30
 type_field: condition
 cond:
   exp: (false)
   url2: '/?adm=document&mode=admin&id={documentid}&op=print'
   caption2: 

</syntaxhighlight>

Порада. Службові кнопки краще робити вузькими — 30–40 px, а пошук для них вимикати через `search: false`.

Права доступу в інтерфейсі

Розробник має враховувати права доступу на кількох рівнях:

  • меню;
  • грид;
  • поле;
  • кнопка;
  • форма;
  • серверна дія;
  • API;
  • база даних.

Приклад `show_for`:

<syntaxhighlight lang="yaml"> show_for: "-1, 1" </syntaxhighlight>

Це означає, що поле або кнопка показується тільки користувачам із відповідними ID.

Але приховати кнопку в інтерфейсі недостатньо. Серверна дія також має перевіряти права.

Критично. Не можна покладатися лише на приховування кнопки в UI. Якщо дія важлива, права мають перевірятися і на backend-рівні.

Меню компонентів

Меню до класів може формуватися за допомогою масиву або автоматично через YML-файл. Прийнято зберігати меню в каталозі:

<syntaxhighlight lang="text"> /папка_компоненти/res/menu/назва_меню.yml </syntaxhighlight>

Типові параметри меню:

  • `name` — ідентифікатор меню;
  • `caption` — заголовок;
  • `addcaption` — додатковий текст або бейдж;
  • `addcaption_style` — стиль бейджа;
  • `iconclass` — клас іконки;
  • `url` — адреса переходу;
  • `command` — команда або зарезервований функціонал.

Приклад:

<syntaxhighlight lang="yaml"> - name: "k2test_phpgrid"

 caption: "PHPGrid Demo"
 addcaption: "+"
 iconclass: "bi bi-grid-3x3"
 url: "?adm=k2test_phpgrid"
 command:

</syntaxhighlight>

Технічний акцент. `name` у меню важливий не тільки для навігації, а й для майбутнього контролю доступів.

UX для розробника K2

ERP-інтерфейс має бути не просто красивим. Він має бути зручним для щоденної роботи.

Розробник має думати про:

  • швидкість відкриття;
  • зрозумілі назви полів;
  • логічний порядок колонок;
  • зручне сортування;
  • фільтри;
  • пошук;
  • підсумки;
  • ширину колонок;
  • вирівнювання чисел;
  • поведінку кнопок;
  • обов’язкові поля;
  • зрозумілі помилки;
  • права доступу;
  • роботу з великими обсягами даних.
UX-принцип. Добрий ERP-інтерфейс економить час користувача щодня, а не просто добре виглядає на демо.

Рекомендації для гридів

Для гридів бажано дотримуватися таких правил:

  • ID-поля приховувати, але залишати доступними для логіки;
  • дати показувати в зрозумілому форматі;
  • числові колонки вирівнювати праворуч;
  • службові кнопки робити вузькими;
  • пошук для службових колонок вимикати;
  • DropDown-поля будувати через `k` і `v`;
  • не перевантажувати грид зайвими колонками;
  • використовувати фільтри для великих реєстрів;
  • перевіряти грид на реальних обсягах даних;
  • описувати master-detail-зв’язки явно.
Важливо. Грид із десятьма тестовими рядками може працювати добре, але з п’ятдесятьма тисячами записів — повільно. Перевіряйте продуктивність на реалістичних даних.

Рекомендації для форм

Форма має допомагати користувачу створити або змінити запис без помилок.

Добра форма має:

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

Приклад одиниці виміру:

<syntaxhighlight lang="yaml"> formoptions:

 elmsuffix: " %"

</syntaxhighlight>

Приклад календаря:

<syntaxhighlight lang="yaml"> editoptions:

 dataInit: "js:function(el){ $(el).datepicker({ dateFormat:'dd.mm.yy' }); }"

</syntaxhighlight>

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

Рекомендації для документів

Документ у K2 — це не просто форма з полями. Він має мати життєвий цикл.

Для документа потрібно продумати:

  • номер;
  • дату;
  • автора;
  • статус;
  • контрагента;
  • табличну частину;
  • підсумки;
  • друковану форму;
  • зв’язок зі складом або фінансами;
  • проведення;
  • анулювання;
  • історію;
  • права доступу;
  • звітність.

У прикладі модуля надходження товарів документ має журнал, форму, табличну частину, розрахунок сум, проведення, зарахування товару на склад, друк товарної накладної та звіт руху товарів.

ERP-принцип. Документ має не просто зберігатися, а змінювати стан системи: склад, фінанси, звіти, статуси або аналітику.

AJAX і збереження без перезавантаження

Для сучасних веб-модулів K2 важливо підтримувати роботу без зайвого перезавантаження сторінки. AJAX може використовуватися для:

  • пошуку товарів;
  • пошуку постачальників;
  • підказок у довідниках;
  • збереження документа;
  • розрахунку сум;
  • оновлення табличної частини;
  • перевірки даних;
  • формування підсумків.
Важливо. AJAX не скасовує серверну перевірку. Навіть якщо інтерфейс перевірив дані на frontend, backend має повторно перевірити права, валідацію й бізнес-правила.

Імпорт та експорт

Імпорт і експорт мають бути контрольованими функціями.

Розробник має врахувати:

  • хто має право імпорту;
  • хто має право експорту;
  • які поля можна вивантажувати;
  • чи є персональні або фінансові дані;
  • чи потрібно журналювати дію;
  • що робити з помилками імпорту;
  • як уникати дублікатів;
  • як повідомляти користувача про результат;
  • чи потрібен шаблон імпорту.
Ризик. Експорт може винести з ERP критичні дані, а імпорт може зіпсувати довідники або залишки. Ці функції не можна робити без прав і перевірок.

Інтеграції

Інтеграція — це не просто “передали дані”. Це контрольований процес обміну між K2 і зовнішньою системою.

Для інтеграції потрібно описати:

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

Безпека розробки

Розробник K2 має думати про безпеку на кожному етапі.

Не можна:

  • зберігати паролі у відкритому вигляді;
  • комітити токени;
  • відкривати зайві права;
  • залишати debug-інформацію в бойовому середовищі;
  • дозволяти прямий доступ до даних без перевірки;
  • давати всім право експорту;
  • використовувати спільні логіни;
  • виконувати SQL без контролю;
  • тестувати небезпечні операції на prod;
  • ігнорувати помилки авторизації.
Критично. Безпека в ERP — це не додаткова опція. Це частина кожної форми, кожного API, кожного SQL-запиту й кожної кнопки.

Продуктивність

ERP працює з великими обсягами даних. Тому розробник має враховувати продуктивність ще під час проєктування.

Потрібно:

  • не робити зайвих запитів;
  • не тягнути всі дані без фільтрів;
  • використовувати пагінацію;
  • оптимізувати SQL;
  • додавати індекси там, де потрібно;
  • не перевантажувати dashboard;
  • не робити важкий експорт без обмежень;
  • перевіряти роботу на великих таблицях;
  • уникати зайвих JOIN без потреби;
  • логувати повільні або проблемні операції.
Важливо. Те, що працює на тестових десяти записах, може не працювати на реальних ста тисячах документів.

Тестування

Тестування в K2 має перевіряти не тільки запуск сторінки, а повний бізнес-сценарій.

Для модуля потрібно перевірити:

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

Документація

Кожен модуль або компонент має мати документацію.

Документація має описувати:

  • призначення модуля;
  • бізнес-сценарій;
  • структуру бази даних;
  • таблиці;
  • поля;
  • гриди;
  • форми;
  • меню;
  • права доступу;
  • налаштування;
  • інтеграції;
  • друковані форми;
  • звіти;
  • порядок тестування;
  • відомі обмеження;
  • історію змін.
Важливо. Модуль без документації — це технічний борг. Його складно підтримувати, сертифікувати, передавати партнеру або публікувати в магазині доповнень.

Рекомендації щодо назв

Назви мають бути зрозумілими.

У коді, YML, SQL і документації бажано уникати випадкових скорочень. Якщо назва поля, таблиці або змінної незрозуміла без автора, це майбутня проблема.

Краще:

<syntaxhighlight lang="text"> supplierid document_date payment_status warehouseid order_total </syntaxhighlight>

Гірше:

<syntaxhighlight lang="text"> x1 tmp2 aaa dtt summa2 newnew </syntaxhighlight>

Порада. Назва має пояснювати зміст. Добра назва зменшує потребу в зайвих коментарях.

Що не можна робити розробнику K2

Не можна:

  • змінювати бойову базу без процедури;
  • пушити код без перевірки;
  • робити оновлення без версії;
  • забувати `history.txt`;
  • комітити токени й паролі;
  • писати SQL без урахування продуктивності;
  • створювати дублікати довідників;
  • обходити стандартні права доступу;
  • робити інтерфейс без валідації;
  • залишати debug-режим у prod;
  • публікувати компонент без тесту;
  • копіювати стару логіку 1С/BAS без переосмислення;
  • створювати модуль без документації.
Заборона. Не виправляйте проблему “швидко в базі”, якщо це має бути зміна компоненти, міграції, моделі або бізнес-логіки.

Типові помилки розробників K2

Перша помилка — починати з коду, не зрозумівши бізнес-процес.

Друга помилка — робити форму без розуміння статусів документа.

Третя помилка — створювати новий довідник замість використання спільного.

Четверта помилка — писати власний грид, коли є стандартний K2Grid.

П’ята помилка — забувати права доступу.

Шоста помилка — не перевіряти SQL на реальних обсягах даних.

Сьома помилка — комітити зміни без опису.

Восьма помилка — не оновлювати `setup.py` і `history.txt`.

Дев’ята помилка — не тестувати компонент на `deb1`–`deb3`.

Десята помилка — не писати документацію.

Висновок. Більшість проблем у ERP-розробці виникає не через складний код, а через відсутність дисципліни: прав, тестів, версій, документації та розуміння процесу.

Чек-лист перед передачею компоненти

Перед передачею компоненти потрібно перевірити:

  • код закомічено;
  • виконано `git status`;
  • виконано `git pull`;
  • конфлікти відсутні;
  • версію оновлено в `setup.py`;
  • опис змін додано в `history.txt`;
  • компоненту додано в `component-list.txt`;
  • ignore-файл налаштовано;
  • токен не потрапив у репозиторій;
  • компоненту завантажено через `k2update_push.py`;
  • оновлення перевірено на тестових доменах;
  • гриди відкриваються;
  • форми зберігаються;
  • права працюють;
  • імпорт і експорт перевірені;
  • документація оновлена;
  • помилки в логах перевірені.

Чек-лист якості коду

Код має бути:

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

Рекомендації для junior-розробника K2

Junior-розробнику варто починати не зі складних інтеграцій, а з типових ERP-задач:

  • створення простого довідника;
  • налаштування грида;
  • створення форми;
  • додавання фільтрів;
  • робота з DropDown;
  • створення кнопки `condition`;
  • простий master-detail;
  • валідація полів;
  • невеликий звіт;
  • робота з Git;
  • оновлення `history.txt`.
Порада junior. Спочатку навчіться добре робити довідники, гриди, форми й права. Це фундамент більшості ERP-модулів.

Рекомендації для middle-розробника K2

Middle-розробник має вміти будувати повноцінні модулі:

  • журнал документів;
  • форму документа;
  • табличну частину;
  • статуси;
  • проведення;
  • друковану форму;
  • звіт;
  • інтеграцію з довідниками;
  • права доступу;
  • тестування;
  • документацію;
  • оновлення компоненти.

Також middle-розробник має думати про продуктивність, безпеку, підтримку й сумісність.

Рекомендації для senior-розробника K2

Senior-розробник відповідає не лише за код, а й за архітектуру.

Він має:

  • проєктувати модулі;
  • визначати структуру БД;
  • обирати правильні компоненти;
  • контролювати продуктивність;
  • проєктувати інтеграції;
  • створювати reusable-рішення;
  • перевіряти код інших;
  • формувати стандарти;
  • думати про оновлення;
  • зменшувати технічний борг;
  • навчати молодших розробників.
Senior-рівень. Сильний розробник K2 не просто закриває задачу, а робить так, щоб наступні задачі закривалися швидше й безпечніше.

Розробка для магазину доповнень K2

Якщо компонент або модуль планується публікувати в магазині доповнень K2, вимоги мають бути вищими.

Потрібно підготувати:

  • опис рішення;
  • призначення;
  • скриншоти;
  • інструкцію встановлення;
  • документацію користувача;
  • документацію адміністратора;
  • опис структури БД;
  • права доступу;
  • вимоги до версій;
  • залежності;
  • історію змін;
  • політику підтримки;
  • контакт автора;
  • тестовий сценарій.
Важливо для marketplace. Доповнення для магазину K2 має бути продуктом, а не архівом файлів. Його мають розуміти, встановлювати, оновлювати й підтримувати інші люди.

Атестаційні завдання для розробників

Для перевірки розробника корисні практичні задачі, які імітують реальні бізнес-сценарії. Наприклад, модуль обліку надходження товарів на склад з управлінням партіями.

Таке завдання перевіряє:

  • структуру бази даних;
  • довідники товарів і постачальників;
  • журнал документів;
  • форму документа;
  • AJAX-збереження;
  • табличну частину;
  • автоматичні розрахунки;
  • проведення документа;
  • друковану форму;
  • звіт руху товарів;
  • якість коду;
  • безпеку;
  • UX.
Практичний сенс. Атестаційне завдання має перевіряти не знання синтаксису, а здатність створити реальний ERP-модуль.

Як зрозуміти, що розробник готовий до K2

Розробник готовий до роботи з K2, якщо він:

  • розуміє компонентну архітектуру;
  • працює з Git без хаосу;
  • не боїться бази даних;
  • пише зрозумілі SQL-запити;
  • вміє робити гриди й форми;
  • думає про права доступу;
  • тестує сценарії;
  • документує зміни;
  • не переносить старі помилки з 1С/BAS;
  • розуміє, що ERP — це бізнес-процеси, а не лише код.
Ознака готовності. Розробник K2 має мислити не “як зробити кнопку”, а “який бізнес-процес ця кнопка змінює”.

Поширені запитання

Що таке рекомендації для розробників K2?

Рекомендації для розробників K2 — це правила й практики створення модулів, компонентів, гридів, форм, документів, інтеграцій і оновлень у K2 ERP та K2 Cloud ERP.

Чому Git обов’язковий для розробки K2?

Git потрібен для контролю змін, командної роботи, історії версій, комітів, оновлень компонентів і безпечної підтримки ERP-коду.

Що таке auto_update?

`auto_update` — це скрипт для роботи зі списком компонентів: клонування, перевірки статусу, комітів, pull і push.

Чому потрібно оновлювати setup.py і history.txt?

`setup.py` містить версію компоненти, а `history.txt` пояснює, що саме змінилося. Без цього важко підтримувати оновлення й розуміти історію змін.

Навіщо тестувати на deb1-deb3?

Тестові домени потрібні, щоб перевірити нову версію компоненти до використання в ширшому середовищі.

Що найважливіше для розробника K2Grid?

Потрібно правильно описати `select`, `fields`, DropDown-поля, master-detail-зв’язки, кнопки `condition`, права доступу, ширини колонок, пошук і сортування.

Чи можна робити зміни напряму в базі?

Небажано. Прямі зміни в бойовій базі без процедури, backup, тестування й документації є ризиком для ERP.

Пов’язані сторінки

SEO-призначення сторінки

Сторінка Рекомендації для розробників K2 має допомагати розробникам, партнерам і технічним командам знаходити правила створення якісних модулів для K2 ERP та K2 Cloud ERP: компоненти, Git, auto_update, K2Grid, YML, гриди, форми, база даних, права доступу, тестування, оновлення, документація та безпека.

Вона покриває запити: “рекомендації для розробників K2”, “K2 ERP для розробників”, “розробка модулів K2”, “K2 Cloud ERP Python”, “K2Grid YML”, “компоненти K2 ERP”, “Git K2 ERP”, “auto_update K2”, “k2update_push.py”, “розробка ERP модулів”, “K2 ERP backend”, “K2 ERP frontend”, “українська ERP розробка”.

Коротко

Рекомендації для розробників K2 описують, як створювати модулі, компоненти, гриди, форми, документи, довідники, звіти, інтеграції й оновлення так, щоб вони були підтримуваними, безпечними, документованими й сумісними з екосистемою K2.

Розробник K2 має працювати через Git, дотримуватися компонентної архітектури, описувати структуру даних, перевіряти права доступу, тестувати зміни на окремих середовищах, оновлювати версії, вести `history.txt` і думати про реальний бізнес-процес, а не лише про код.

Головний висновок. Якісна розробка K2 — це дисципліна: компонентність, Git, база даних, права, UX, тестування, документація й відповідальність за бізнес-дані клієнта.

Див. також