<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https://wiki.erp.kyiv.ua/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%96%D0%B2_K2_ERP</id>
	<title>Створення модулів K2 ERP - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.erp.kyiv.ua/index.php?action=history&amp;feed=atom&amp;title=%D0%A1%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%96%D0%B2_K2_ERP"/>
	<link rel="alternate" type="text/html" href="https://wiki.erp.kyiv.ua/index.php?title=%D0%A1%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%96%D0%B2_K2_ERP&amp;action=history"/>
	<updated>2026-06-26T21:59:38Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.erp.kyiv.ua/index.php?title=%D0%A1%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%96%D0%B2_K2_ERP&amp;diff=798&amp;oldid=prev</id>
		<title>R: Створена сторінка: {{DISPLAYTITLE:Створення модулів K2 ERP}}  {{SEO |title=Створення модулів K2 ERP — компоненти, Git, auto_update, setup.py, history.txt, k2update_push.py |description=Створення модулів K2 ERP — інструкція для розробників K2 Cloud ERP Python: структура компоненти, підключення репозиторію Git, робота через auto_update, ру...</title>
		<link rel="alternate" type="text/html" href="https://wiki.erp.kyiv.ua/index.php?title=%D0%A1%D1%82%D0%B2%D0%BE%D1%80%D0%B5%D0%BD%D0%BD%D1%8F_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%96%D0%B2_K2_ERP&amp;diff=798&amp;oldid=prev"/>
		<updated>2026-05-02T19:10:25Z</updated>

		<summary type="html">&lt;p&gt;Створена сторінка: {{DISPLAYTITLE:Створення модулів K2 ERP}}  {{SEO |title=Створення модулів K2 ERP — компоненти, Git, auto_update, setup.py, history.txt, k2update_push.py |description=Створення модулів K2 ERP — інструкція для розробників K2 Cloud ERP Python: структура компоненти, підключення репозиторію Git, робота через auto_update, ру...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторінка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:Створення модулів K2 ERP}}&lt;br /&gt;
&lt;br /&gt;
{{SEO&lt;br /&gt;
|title=Створення модулів K2 ERP — компоненти, Git, auto_update, setup.py, history.txt, k2update_push.py&lt;br /&gt;
|description=Створення модулів K2 ERP — інструкція для розробників K2 Cloud ERP Python: структура компоненти, підключення репозиторію Git, робота через auto_update, ручне підключення компоненти, коміт змін, налаштування component-list.txt, ignore, token.txt, зміна версії в setup.py, опис змін у history.txt, завантаження компоненти через k2update_push.py і тестування на deb1-deb3.&lt;br /&gt;
|keywords=створення модулів K2 ERP, модулі K2 ERP, компоненти K2 ERP, K2 Cloud ERP Python, розробка K2 ERP, K2 ERP для розробників, auto_update K2 ERP, git_cmd.py, k2update_push.py, setup.py K2 ERP, history.txt K2 ERP, component-list.txt, token.txt, Git K2 ERP, PyCharm K2 ERP, компонента k2site, компонента k2adm, компонента k2update, deb1, deb2, deb3, сервер оновлення K2 ERP, K2 Cloud ERP, українська ERP&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Створення модулів K2 ERP&amp;#039;&amp;#039;&amp;#039; — це процес розробки, підключення, версіонування, тестування та завантаження компонент у систему оновлення [[K2 ERP]] або [[K2 Cloud ERP]].&lt;br /&gt;
&lt;br /&gt;
У технічній інструкції для розробників K2 Cloud ERP використовується термін &amp;#039;&amp;#039;&amp;#039;компонента&amp;#039;&amp;#039;&amp;#039;. У wiki-статтях для бізнес-користувачів це часто називають &amp;#039;&amp;#039;&amp;#039;модулем K2 ERP&amp;#039;&amp;#039;&amp;#039;, але для розробника важливо розуміти: модуль у користувацькому сенсі зазвичай реалізується через одну або кілька компонент у коді.&lt;br /&gt;
&lt;br /&gt;
Компонента може мати власний каталог, власний Git-репозиторій, файл версії, історію змін, список файлів для оновлення та правила ігнорування службових файлів. Для роботи зі списком компонент у проєкті використовується скрипт &amp;#039;&amp;#039;&amp;#039;auto_update&amp;#039;&amp;#039;&amp;#039;, який копіюється в корінь проєкту на рівні з файлом &amp;#039;&amp;#039;&amp;#039;app.py&amp;#039;&amp;#039;&amp;#039;. У його файлі &amp;#039;&amp;#039;&amp;#039;settings.py&amp;#039;&amp;#039;&amp;#039; додаються потрібні компоненти, а команда &amp;#039;&amp;#039;&amp;#039;python git_cmd.py clone&amp;#039;&amp;#039;&amp;#039; клонує актуальні версії компонент і перейменовує каталоги поточних версій. :contentReference[oaicite:3]{index=3}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Що таке модуль K2 ERP ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Модуль K2 ERP&amp;#039;&amp;#039;&amp;#039; — це функціональна частина системи, яка додає або розширює можливості платформи.&lt;br /&gt;
&lt;br /&gt;
Для користувача модуль може виглядати як окремий напрям роботи: CRM, документообіг, склад, виробництво, фінанси, оновлення, сайт, адміністрування або інший функціональний блок.&lt;br /&gt;
&lt;br /&gt;
Для розробника модуль зазвичай пов’язаний із компонентами в структурі проєкту. Компонента може мати окремий каталог у папці:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
components&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Наприклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
components/k2site&lt;br /&gt;
components/k2adm&lt;br /&gt;
components/k2update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Компоненти можуть підключатися до віддалених Git-репозиторіїв, оновлюватися, комітитися, пушитися, версіонуватися й завантажуватися на сервер оновлення.&lt;br /&gt;
&lt;br /&gt;
== Модуль і компонента: різниця для розробника ==&lt;br /&gt;
&lt;br /&gt;
У бізнес-описах зазвичай говорять «модуль». У технічній інструкції розробника частіше використовується слово «компонента».&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Модуль&amp;#039;&amp;#039;&amp;#039; — це функціональна одиниця з погляду користувача.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Компонента&amp;#039;&amp;#039;&amp;#039; — це технічна одиниця з погляду коду, Git-репозиторію, версії та системи оновлення.&lt;br /&gt;
&lt;br /&gt;
Наприклад, користувацький модуль може складатися з кількох компонент, а одна компонента може забезпечувати частину функціональності більшого модуля.&lt;br /&gt;
&lt;br /&gt;
== Передумови для створення модуля ==&lt;br /&gt;
&lt;br /&gt;
Перед створенням або підключенням нового модуля потрібно мати локально розгорнутий робочий проєкт K2 Cloud ERP.&lt;br /&gt;
&lt;br /&gt;
Згідно з інструкцією розробників, спочатку копіюється існуючий проєкт по FTP, потім у каталозі &amp;#039;&amp;#039;&amp;#039;/K2CloudERP&amp;#039;&amp;#039;&amp;#039; запускається &amp;#039;&amp;#039;&amp;#039;first_run&amp;#039;&amp;#039;&amp;#039; для налаштування параметрів віртуального середовища, після чого у файлі &amp;#039;&amp;#039;&amp;#039;/K2CloudERP/cfg/k2/k2/k2cfg.py&amp;#039;&amp;#039;&amp;#039; змінюється &amp;#039;&amp;#039;&amp;#039;domain_protocol&amp;#039;&amp;#039;&amp;#039; з &amp;#039;&amp;#039;&amp;#039;https&amp;#039;&amp;#039;&amp;#039; на &amp;#039;&amp;#039;&amp;#039;http&amp;#039;&amp;#039;&amp;#039;, а додаток запускається через &amp;#039;&amp;#039;&amp;#039;run.sh&amp;#039;&amp;#039;&amp;#039; або &amp;#039;&amp;#039;&amp;#039;run.bat&amp;#039;&amp;#039;&amp;#039;. :contentReference[oaicite:4]{index=4}&lt;br /&gt;
&lt;br /&gt;
Для Linux перший запуск:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash first_run.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для Windows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./first_run.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запуск додатку в Linux:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bash run.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запуск додатку у Windows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./run.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Середовище розробки ==&lt;br /&gt;
&lt;br /&gt;
Для розробки модулів K2 ERP використовується [[PyCharm]].&lt;br /&gt;
&lt;br /&gt;
У Linux PyCharm можна встановити через snap:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo rm /etc/apt/preferences.d/nosnap.pref&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install snapd&lt;br /&gt;
sudo snap install pycharm-community --classic&lt;br /&gt;
pycharm-community&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Також можна завантажити архів із сайту JetBrains, розпакувати його, перейти в папку &amp;#039;&amp;#039;&amp;#039;bin&amp;#039;&amp;#039;&amp;#039; і запустити:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./pycharm.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Якщо виникає помилка запуску, встановлюється JRE/JDK:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install default-jdk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Після відкриття проєкту в PyCharm потрібно налаштувати Python Interpreter: у правому нижньому куті вибрати &amp;#039;&amp;#039;&amp;#039;Python Interpreter&amp;#039;&amp;#039;&amp;#039;, далі &amp;#039;&amp;#039;&amp;#039;Add new Interpreter&amp;#039;&amp;#039;&amp;#039;, у полі &amp;#039;&amp;#039;&amp;#039;Location&amp;#039;&amp;#039;&amp;#039; вказати шлях до папки &amp;#039;&amp;#039;&amp;#039;venv&amp;#039;&amp;#039;&amp;#039;, а в полі &amp;#039;&amp;#039;&amp;#039;Base Interpreter&amp;#039;&amp;#039;&amp;#039; — шлях до виконуваного Python-файлу поточного середовища. :contentReference[oaicite:5]{index=5}&lt;br /&gt;
&lt;br /&gt;
Ручна активація віртуального середовища в Linux:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
source venv/bin/activate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У Windows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
.\venv\Scripts\activate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Git для модулів K2 ERP ==&lt;br /&gt;
&lt;br /&gt;
Для створення й підтримки модулів потрібен Git.&lt;br /&gt;
&lt;br /&gt;
Встановлення Git у Linux:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Після встановлення потрібно налаштувати користувача:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;Ваше Ім&amp;#039;я&amp;quot;&lt;br /&gt;
git config --global user.email &amp;quot;ваша_електронна_пошта@example.com&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для авторизації через SSH створюється ключ:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-keygen -t rsa -b 4096 -C &amp;quot;ваша_електронна_пошта@example.com&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Потім запускається ssh-agent:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
eval &amp;quot;$(ssh-agent -s)&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ключ додається командою:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh-add ~/.ssh/id_rsa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Публічний ключ можна переглянути командою:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat ~/.ssh/id_rsa.pub&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Після цього ключ копіюється й додається у віддалений репозиторій. :contentReference[oaicite:6]{index=6}&lt;br /&gt;
&lt;br /&gt;
== Варіант 1. Створення або підключення модуля через auto_update ==&lt;br /&gt;
&lt;br /&gt;
Для списку компонент використовується скрипт:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto_update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Каталог зі скриптом потрібно скопіювати в корінь проєкту на рівні з виконуваним файлом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У технічній інструкції вказано такий шлях до каталогу auto_update:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://git.corp2.eu/k2erp/python/k2/base/client/auto_update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Після копіювання потрібно перейти в каталог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd auto_update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далі відкривається файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У словник додаються ключі з потрібними компонентами. Повний список компонент знаходиться у файлі:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
settings_example.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Після налаштування виконується команда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python git_cmd.py clone&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ця команда клонує актуальні версії компонент і перейменовує каталоги поточних версій компонент. :contentReference[oaicite:7]{index=7}&lt;br /&gt;
&lt;br /&gt;
== Варіант 2. Підключення однієї компоненти вручну ==&lt;br /&gt;
&lt;br /&gt;
Якщо потрібно підключити одну компоненту вручну, потрібно перейти в каталог цієї компоненти.&lt;br /&gt;
&lt;br /&gt;
Наприклад, для компоненти &amp;#039;&amp;#039;&amp;#039;k2site&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd components/k2site&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далі ініціалізується Git у поточній директорії:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Створюється локальна гілка &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; і виконується перемикання на неї:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout -b main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
За потреби можна перемкнутися на іншу локальну гілку:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout master&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далі додається віддалений репозиторій. Для прикладу &amp;#039;&amp;#039;&amp;#039;k2site&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git remote add origin http://git.corp2.eu/k2erp/python/k2/base/site/k2site.git&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перевірка підключеного репозиторію:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git remote -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отримання даних із віддаленого репозиторію без зміни поточної робочої гілки:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git fetch origin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отримання даних із віддаленого репозиторію з автоматичним об’єднанням із поточною локальною гілкою:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git pull origin main&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перевірка змін локальної копії компоненти:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Такий підхід використовується, коли потрібно працювати не з усім списком компонент, а з конкретною компонентою. :contentReference[oaicite:8]{index=8}&lt;br /&gt;
&lt;br /&gt;
== Структура нової компоненти ==&lt;br /&gt;
&lt;br /&gt;
Нова компонента має бути розміщена в каталозі:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
components&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Типовий шлях:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
components/назва_компоненти&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для нової компоненти бажано мати:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setup.py&lt;br /&gt;
history.txt&lt;br /&gt;
.gitignore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Також у компоненті можуть бути службові каталоги, Python-файли, шаблони, статичні файли, налаштування, міграції, документація й інші елементи залежно від призначення модуля.&lt;br /&gt;
&lt;br /&gt;
Назва компоненти має бути зрозумілою, стабільною і не конфліктувати з існуючими компонентами.&lt;br /&gt;
&lt;br /&gt;
== setup.py компоненти ==&lt;br /&gt;
&lt;br /&gt;
Файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setup.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
використовується для опису версії компоненти.&lt;br /&gt;
&lt;br /&gt;
Перед завантаженням нової версії компоненти потрібно змінити версію у файлі &amp;#039;&amp;#039;&amp;#039;setup.py&amp;#039;&amp;#039;&amp;#039; у корені каталогу компоненти. В інструкції розробників вказано, що змінюється рядок 5, поле &amp;#039;&amp;#039;&amp;#039;version&amp;#039;&amp;#039;&amp;#039;. Наприклад: :contentReference[oaicite:9]{index=9}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
version=2.0.4.43&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Також вказується тип версії:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
version_type=&amp;#039;stable&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
або testing-версія:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
version_type=&amp;#039;testing&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;stable&amp;#039;&amp;#039;&amp;#039; використовується для стабільної версії.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;testing&amp;#039;&amp;#039;&amp;#039; або beta використовується для тестової версії.&lt;br /&gt;
&lt;br /&gt;
== history.txt компоненти ==&lt;br /&gt;
&lt;br /&gt;
Файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
history.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
містить опис змін компоненти.&lt;br /&gt;
&lt;br /&gt;
Після зміни версії у &amp;#039;&amp;#039;&amp;#039;setup.py&amp;#039;&amp;#039;&amp;#039; потрібно додати опис змін у &amp;#039;&amp;#039;&amp;#039;history.txt&amp;#039;&amp;#039;&amp;#039; у корені каталогу компоненти. Опис додається одним рядком.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
2.0.4.43 - додавання додаткового поля в форму реєстрації&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Це потрібно для того, щоб було зрозуміло, що саме змінилося в новій версії компоненти. :contentReference[oaicite:10]{index=10}&lt;br /&gt;
&lt;br /&gt;
== Коміт змін модуля через auto_update ==&lt;br /&gt;
&lt;br /&gt;
Якщо використовується auto_update, коміт змін виконується автоматизовано.&lt;br /&gt;
&lt;br /&gt;
Потрібно перейти в каталог:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd auto_update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Клонування компонент із віддаленого сервера:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python git_cmd.py clone&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Перевірка статусу:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python git_cmd.py status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Коміт змін:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python git_cmd.py commit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Отримання змін із віддаленого сервера:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python git_cmd.py pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Пуш змін на віддалений репозиторій:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python git_cmd.py push&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ці команди наведені в інструкції як автоматичний спосіб роботи зі змінами компонент через auto_update. :contentReference[oaicite:11]{index=11}&lt;br /&gt;
&lt;br /&gt;
== Ручний коміт змін модуля ==&lt;br /&gt;
&lt;br /&gt;
Якщо зміни комітяться вручну, спочатку потрібно перевірити статус:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git status&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Потім додати зміни:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git add .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Виконати коміт:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git commit -m &amp;quot;Назва комміту&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Запушити зміни на віддалений репозиторій:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Під час подальшої роботи зміни з віддаленого репозиторію отримуються командою:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git pull&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Цей ручний сценарій також наведений у технічній інструкції розробників. :contentReference[oaicite:12]{index=12}&lt;br /&gt;
&lt;br /&gt;
== Налаштування завантаження модуля на сервер оновлення ==&lt;br /&gt;
&lt;br /&gt;
Після створення або зміни компоненти потрібно налаштувати завантаження на сервер оновлення.&lt;br /&gt;
&lt;br /&gt;
Для цього відкривається папка:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
builder/config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У файлі:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
component-list.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
потрібно додати список компонент, які будуть завантажуватися на сервер оновлення.&lt;br /&gt;
&lt;br /&gt;
Кожна компонента додається з нового рядка.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
components/k2update&lt;br /&gt;
components/k2adm&lt;br /&gt;
components/k2site&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Саме такий приклад наведений в інструкції розробників. :contentReference[oaicite:13]{index=13}&lt;br /&gt;
&lt;br /&gt;
== Налаштування ignore для компоненти ==&lt;br /&gt;
&lt;br /&gt;
У папці:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
builder/config/ignore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
потрібно створити файл із назвою компоненти.&lt;br /&gt;
&lt;br /&gt;
Наприклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
k2site.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
У цей файл додаються файли й папки, які не потрібно завантажувати на сервер оновлення.&lt;br /&gt;
&lt;br /&gt;
Приклад:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
__pycache__&lt;br /&gt;
.gitignore&lt;br /&gt;
.git&lt;br /&gt;
ej2.min.js&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Це потрібно, щоб у пакет оновлення не потрапляли службові файли, локальні Git-дані, кеші або файли, які не мають бути доставлені на сервер оновлення. :contentReference[oaicite:14]{index=14}&lt;br /&gt;
&lt;br /&gt;
== token.txt для сервера оновлення ==&lt;br /&gt;
&lt;br /&gt;
У файлі:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
token.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
потрібно додати токен доступу до сервера оновлення.&lt;br /&gt;
&lt;br /&gt;
Цей токен використовується під час завантаження компонент у систему оновлення.&lt;br /&gt;
&lt;br /&gt;
Файл із токеном не можна передавати стороннім особам, публікувати в репозиторії або зберігати в неконтрольованому місці.&lt;br /&gt;
&lt;br /&gt;
== Завантаження нової версії модуля в систему оновлення ==&lt;br /&gt;
&lt;br /&gt;
Для завантаження нової версії компоненти потрібно виконати кілька дій.&lt;br /&gt;
&lt;br /&gt;
Спочатку змінити версію у файлі:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
setup.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Потім додати опис змін у файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
history.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далі перейти в корінь додатку на рівні з виконуваним файлом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
app.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В інструкції використовується команда:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd k2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Після цього компоненти, додані у файлі:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
builder/config/component-list.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
завантажуються командою:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
python k2update_push.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Це основна команда для завантаження нової версії компоненти в систему оновлення. :contentReference[oaicite:15]{index=15}&lt;br /&gt;
&lt;br /&gt;
== Тестування модуля на deb1-deb3 ==&lt;br /&gt;
&lt;br /&gt;
Після завантаження нової версії компоненти потрібно оновити змінені версії компонент на тестових доменах:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
deb1&lt;br /&gt;
deb2&lt;br /&gt;
deb3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Після оновлення потрібно протестувати функціонал.&lt;br /&gt;
&lt;br /&gt;
Тестування має підтвердити, що компонента працює коректно, нові зміни не ламають існуючі сценарії, залежності не конфліктують, а модуль можна готувати до подальшого використання.&lt;br /&gt;
&lt;br /&gt;
Цей крок також є завершальним пунктом інструкції розробників. :contentReference[oaicite:16]{index=16}&lt;br /&gt;
&lt;br /&gt;
== Типовий порядок створення нового модуля K2 ERP ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Крок&lt;br /&gt;
! Дія&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Локально розгорнути робочий проєкт K2 Cloud ERP.&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Відкрити проєкт у PyCharm і налаштувати Python Interpreter.&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Встановити й налаштувати Git.&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Створити каталог нової компоненти в папці components або підключити існуючу компоненту.&lt;br /&gt;
|-&lt;br /&gt;
| 5&lt;br /&gt;
| Підключити віддалений Git-репозиторій вручну або через auto_update.&lt;br /&gt;
|-&lt;br /&gt;
| 6&lt;br /&gt;
| Розробити функціональність модуля.&lt;br /&gt;
|-&lt;br /&gt;
| 7&lt;br /&gt;
| Перевірити зміни локально через запуск K2 Cloud ERP.&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Закомітити зміни через auto_update або вручну.&lt;br /&gt;
|-&lt;br /&gt;
| 9&lt;br /&gt;
| Додати компоненту в builder/config/component-list.txt.&lt;br /&gt;
|-&lt;br /&gt;
| 10&lt;br /&gt;
| Налаштувати ignore-файл для компоненти.&lt;br /&gt;
|-&lt;br /&gt;
| 11&lt;br /&gt;
| Змінити версію в setup.py.&lt;br /&gt;
|-&lt;br /&gt;
| 12&lt;br /&gt;
| Додати опис змін у history.txt.&lt;br /&gt;
|-&lt;br /&gt;
| 13&lt;br /&gt;
| Завантажити компоненту через python k2update_push.py.&lt;br /&gt;
|-&lt;br /&gt;
| 14&lt;br /&gt;
| Оновити компоненту на deb1-deb3 і протестувати функціонал.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Мінімальний чеклист компоненти ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Елемент&lt;br /&gt;
! Для чого потрібен&lt;br /&gt;
|-&lt;br /&gt;
| Каталог у components&lt;br /&gt;
| Місце розміщення коду компоненти.&lt;br /&gt;
|-&lt;br /&gt;
| Git-репозиторій&lt;br /&gt;
| Версіонування, спільна робота й передача змін.&lt;br /&gt;
|-&lt;br /&gt;
| setup.py&lt;br /&gt;
| Версія компоненти та тип версії: stable або testing.&lt;br /&gt;
|-&lt;br /&gt;
| history.txt&lt;br /&gt;
| Опис змін у новій версії.&lt;br /&gt;
|-&lt;br /&gt;
| component-list.txt&lt;br /&gt;
| Список компонент, які завантажуються на сервер оновлення.&lt;br /&gt;
|-&lt;br /&gt;
| ignore-файл&lt;br /&gt;
| Список файлів і папок, які не потрібно завантажувати.&lt;br /&gt;
|-&lt;br /&gt;
| token.txt&lt;br /&gt;
| Токен доступу до сервера оновлення.&lt;br /&gt;
|-&lt;br /&gt;
| k2update_push.py&lt;br /&gt;
| Скрипт завантаження компонент у систему оновлення.&lt;br /&gt;
|-&lt;br /&gt;
| deb1-deb3&lt;br /&gt;
| Тестові домени для перевірки оновленої компоненти.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Типові помилки під час створення модулів ==&lt;br /&gt;
&lt;br /&gt;
Найчастіша помилка — створити код компоненти, але не підключити її до Git-репозиторію або не додати в список компонент для оновлення.&lt;br /&gt;
&lt;br /&gt;
Друга помилка — змінити код, але не оновити версію в &amp;#039;&amp;#039;&amp;#039;setup.py&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Третя помилка — не додати опис змін у &amp;#039;&amp;#039;&amp;#039;history.txt&amp;#039;&amp;#039;&amp;#039;. Через це складніше зрозуміти, що саме було змінено в новій версії.&lt;br /&gt;
&lt;br /&gt;
Четверта помилка — не налаштувати ignore-файл. У такому разі на сервер оновлення можуть потрапити зайві службові файли, наприклад &amp;#039;&amp;#039;&amp;#039;__pycache__&amp;#039;&amp;#039;&amp;#039; або &amp;#039;&amp;#039;&amp;#039;.git&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
П’ята помилка — не протестувати компоненту на тестових доменах &amp;#039;&amp;#039;&amp;#039;deb1-deb3&amp;#039;&amp;#039;&amp;#039; після завантаження.&lt;br /&gt;
&lt;br /&gt;
== Безпека під час роботи з модулями ==&lt;br /&gt;
&lt;br /&gt;
Під час створення модулів K2 ERP потрібно уважно ставитися до доступів, токенів і репозиторіїв.&lt;br /&gt;
&lt;br /&gt;
Файл:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
token.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
містить токен доступу до сервера оновлення, тому його не можна публікувати у відкритому доступі.&lt;br /&gt;
&lt;br /&gt;
SSH-ключі, паролі, токени, адреси внутрішніх репозиторіїв і службові доступи мають зберігатися контрольовано.&lt;br /&gt;
&lt;br /&gt;
Перед завантаженням компоненти потрібно перевірити, що в пакет оновлення не потрапляють локальні файли, кеші, тестові дані, тимчасові конфігурації або приватні ключі.&lt;br /&gt;
&lt;br /&gt;
== Коротко ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! Питання&lt;br /&gt;
! Відповідь&lt;br /&gt;
|-&lt;br /&gt;
| Що створюється?&lt;br /&gt;
| Модуль або компонента K2 ERP.&lt;br /&gt;
|-&lt;br /&gt;
| Де розміщується код?&lt;br /&gt;
| У каталозі components.&lt;br /&gt;
|-&lt;br /&gt;
| Як підключати компоненти?&lt;br /&gt;
| Через auto_update або вручну через Git.&lt;br /&gt;
|-&lt;br /&gt;
| Як клонувати компоненти через auto_update?&lt;br /&gt;
| python git_cmd.py clone&lt;br /&gt;
|-&lt;br /&gt;
| Як перевірити статус?&lt;br /&gt;
| git status або python git_cmd.py status&lt;br /&gt;
|-&lt;br /&gt;
| Як закомітити зміни?&lt;br /&gt;
| git commit -m &amp;quot;Назва комміту&amp;quot; або python git_cmd.py commit&lt;br /&gt;
|-&lt;br /&gt;
| Де змінюється версія?&lt;br /&gt;
| У файлі setup.py.&lt;br /&gt;
|-&lt;br /&gt;
| Де описуються зміни?&lt;br /&gt;
| У файлі history.txt.&lt;br /&gt;
|-&lt;br /&gt;
| Де задається список компонент для оновлення?&lt;br /&gt;
| У builder/config/component-list.txt.&lt;br /&gt;
|-&lt;br /&gt;
| Як завантажити компоненту?&lt;br /&gt;
| python k2update_push.py&lt;br /&gt;
|-&lt;br /&gt;
| Де тестувати?&lt;br /&gt;
| На тестових доменах deb1, deb2 і deb3.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Див. також ==&lt;br /&gt;
&lt;br /&gt;
* [[K2 ERP]]&lt;br /&gt;
* [[K2 Cloud ERP]]&lt;br /&gt;
* [[Розгортання K2 Cloud ERP Python для розробників]]&lt;br /&gt;
* [[Встановлення K2 ERP]]&lt;br /&gt;
* [[K2 ERP для Linux]]&lt;br /&gt;
* [[PyCharm]]&lt;br /&gt;
* [[Git]]&lt;br /&gt;
* [[GitLab]]&lt;br /&gt;
* [[Розробка K2 ERP]]&lt;br /&gt;
* [[Компоненти K2 ERP]]&lt;br /&gt;
* [[Оновлення K2 ERP]]&lt;br /&gt;
* [[K2 Cloud Ядро]]&lt;br /&gt;
* [[API K2 ERP]]&lt;br /&gt;
* [[Права доступу K2 ERP]]&lt;br /&gt;
* [[Безпека ERP]]&lt;br /&gt;
&lt;br /&gt;
[[Категорія:Створення модулів K2 ERP]]&lt;br /&gt;
[[Категорія:Модулі K2 ERP]]&lt;br /&gt;
[[Категорія:Компоненти K2 ERP]]&lt;br /&gt;
[[Категорія:Розробка K2 ERP]]&lt;br /&gt;
[[Категорія:K2 ERP для розробників]]&lt;br /&gt;
[[Категорія:K2 ERP Python]]&lt;br /&gt;
[[Категорія:K2 ERP]]&lt;br /&gt;
[[Категорія:K2 Cloud ERP]]&lt;br /&gt;
[[Категорія:K2 Cloud Ядро]]&lt;br /&gt;
[[Категорія:PyCharm]]&lt;br /&gt;
[[Категорія:Git]]&lt;br /&gt;
[[Категорія:GitLab]]&lt;br /&gt;
[[Категорія:Оновлення K2 ERP]]&lt;br /&gt;
[[Категорія:API K2 ERP]]&lt;br /&gt;
[[Категорія:Безпека ERP]]&lt;br /&gt;
[[Категорія:Українська ERP]]&lt;br /&gt;
[[Категорія:ERP-системи]]&lt;br /&gt;
[[Категорія:Корпоративна Wiki]]&lt;/div&gt;</summary>
		<author><name>R</name></author>
	</entry>
</feed>