Odoo bazasida maxsus modul boʻlsa, uning yangi versiya uchun tayyor varianti chiqmaguncha baza yangilanmaydi. Hujjat tartibni shunday beradi: ishlanmalar toʻxtatiladi, kod avval boʻsh bazada, soʻng yangilangan bazada moslanadi. Maʼlumotni koʻchirish, nomi oʻzgargan maydonlarni saqlash va xatolarni tuzatish uchun upgrade skriptlar yoziladi. Bunday skript modul yangilanayotganda ishlaydi, shuning uchun modul versiyasi raqamini oshirib qoʻyish muhim.
Odoo hujjatida bitta jumla bor, uni ogohlantirish deb oʻqish kerak. Bazada maxsus modul boʻlsa, shu modulning yangi versiya uchun tayyor varianti paydo boʻlmaguncha baza yangilanmaydi. Yaʼni Odoo jamoasi standart qismni oʻzi yangilaydi, lekin sizning kodingizni yangilamaydi, shuning uchun kod bilan bogʻliq ish butunlay sizning tomoningizda qoladi. Bu ish kimning zimmasida, qaysi tartibda bajariladi va qayerda xato qilish oson? Maqola shu savollarga javob beradi.
Maxsus modul nima va kim javobgar
Hujjat maxsus modulni shunday taʼriflaydi: Odoo ning standart kodini kengaytiradigan va Studio vositasi bilan yaratilmagan har qanday modul. Studio da kod yozmasdan qilingan sozlama bu taʼrifga kirmaydi, javobgarlik ham shu chegara boʻyicha boʻlinadi.
Enterprise obunasidagi yangilash xizmati standart ilovalarni, Studio dagi sozlamalarni va alohida qoʻllab-quvvatlash obunasi bor ishlanmalarni qamrab oladi. Ichkarida yoki uchinchi tomon yozgan, shartnomasi yoʻq modullar bu xizmatga kirmaydi. Hujjat yana bir narsani ochiq yozadi: yangi versiya maxsus modulni buzsa, uni yangi versiyaga moslash modul qoʻllab-quvvatchisining ishi. Demak, qoʻllab-quvvatchi kim ekanini yangilashdan oldin bilish kerak.
Oltita qadam
Maxsus bazani yangilash tartibi hujjatda oltita qadamga boʻlingan:
- Ishlanmalarni toʻxtatish va ularni savol ostiga olish.
- Yangilangan test bazani soʻrash.
- Modulni boʻsh bazada oʻrnatiladigan qilish.
- Modulni yangilangan bazada ishlaydigan qilish.
- Puxta sinash va mashq oʻtkazish.
- Ishchi bazani yangilash.
Ketma-ketlikning mantigʻi shunday: avval kodning yangi versiyada umuman yuklanishini tekshiramiz, keyin haqiqiy maʼlumot bilan ishlashini. Buni teskari qilsak, xatolarning sababini topish qiyinlashadi, chunki kod xatosi va maʼlumot xatosi aralashib ketadi.
Birinchi qadam: ishlanmani toʻxtatish va qayta koʻrib chiqish
Hujjat kod omborini toʻliq muzlatishni tavsiya qiladi. Aks holda har yangi oʻzgarish yana yangilanadi va qaytadan sinaladi, shuning uchun bundan faqat xatolarni tuzatish mustasno. Muzlatilgan davrda bajariladigan ish ham aniq: mavjud ishlanmalarni yangi versiyadagi imkoniyatlar bilan solishtirish va iloji boricha kodsiz yechim topish.
Bu qadam vaqt oladi, lekin natijasi katta, chunki standart Odoo ga allaqachon kirgan funksiya uchun maxsus kodni qoldirish ortiqcha yuk. Hujjatning fikricha, ortiqchalikni olib tashlash yangilashni yengillashtiradi va texnik qarzni kamaytiradi. Solishtirish uchun reliz eslatmalari ishlatiladi. Masalan, Odoo 20 da xodimlarning xarajatlari uchun alohida menyu olib tashlandi, hisoblar guruhlari oʻrniga ota-hisoblar kirdi, aktivlar modellari amortizatsiya modellariga almashdi. Maxsus kod shu joylarga tayansa, uni birinchi navbatda koʻrib chiqish kerak.
Yangi versiyada kod darajasida nima oʻzgaradi
Maxsus kod uchun eng muhim hujjat ORM oʻzgarishlar roʻyxati. Unda har versiyada dasturchilar ishlatadigan qatlamga kiritilgan oʻzgarishlar yoziladi, muhimi shuki, roʻyxat Online ning oraliq versiyalarini ham qamrab oladi. 18.0 dan 20.0 ga oʻtayotgan modul 19.0 dan 19.4 gacha boʻlgan hamma oʻzgarishni birdaniga oladi. Bu tahririyat xulosasi, roʻyxatning oʻzi bunday deb yozmaydi.
| Versiya | Oʻzgarish | Nimani tekshirish kerak |
|---|---|---|
| 19.0 | Eski ichki paket va yozuv orqali kursorga, kontekst va foydalanuvchiga murojaat eskirgan deb belgilandi | Eskirgan chaqiruvlar |
| 19.3 | Ikkilik maydonlarning turi yangi obyektga almashdi | Fayl va rasm maydonlari bilan ishlash |
| 19.4 | Kirish huquqlari va yozuv qoidalari birlashgan yangi mexanizm, yangi HTTP server | Maxsus huquq qoidalari |
| 20.0 | Ikkilik maydonlar uzatish formati va fayl nomi oʻzgardi, jadval soʻrovini beruvchi usul olib tashlandi | Hisobot va eksport kodi |
Ikkinchi qadam: standart yangilash ishlayaptimi
Kod muzlatilgach, Odoo dan yangilangan test baza soʻraladi. Bu bosqichning maqsadi maxsus modul bilan ishlash emas. Hujjatga koʻra, maqsad standart yangilash jarayoni xatosiz oʻtishini va test baza oʻz vaqtida yetib kelishini tekshirish. Yangilash muvaffaqiyatsiz tugasa, Odoo yordami yangilash testi uchun alohida murojaat orqali soʻraladi. Hujjat shu ikki ishni parallel yuritishni tavsiya qiladi: test baza tayyorlanayotgan paytda modul kodi moslanaveradi.
Uchinchi qadam: boʻsh bazada oʻrnatish
Yangilangan test bazani olishdan oldin modul yangi versiyaning boʻsh bazasida oʻrnatiladi. Sababi ikkita. Birinchidan, kod yangi versiyaga mosligi aniq koʻrinadi. Ikkinchidan, ishchi bazaning boshqa dogʻlari, yaʼni Studio sozlamalari, sayt sahifalari, pochta shablonlari va tarjimalari aralashmaydi. Modullar bittadan oʻrnatilib, har biridagi xato va ogohlantirish tuzatiladi.
Odatda quyidagi muammolar chiqadi:
- Notoʻgʻri modul bogʻliqliklari.
- Interfeys fayllari va koʻrinish sintaksisining oʻzgarishi.
- Nomi oʻzgargan yoki yoʻq boʻlgan standart maydon, model va koʻrinishlarga murojaat.
- Koʻrinishda joyi koʻchgan yoki olib tashlangan bogʻlanish nuqtalari.
- Nomi oʻzgargan yoki olib tashlangan usullar.
Oʻrnatish xatosiz tugagani ishlash xatosiz ekanini bildirmaydi. Hujjat koʻrinishlar, pochta shablonlari, hisobotlar, avtomatik harakatlar, standart jarayonlardagi oʻzgarishlar va hisoblanuvchi maydonlarni alohida sinashni tavsiya qiladi. Avtomatik testlar yozilgan boʻlsa, ular yangi versiyaga moslanib, yana ishga tushiriladi. Keyin kod tozalanadi: ortiqcha, standartga kirib ketgan va izohga olingan kodlar olib tashlanadi, standart testlar esa modul bogʻliqliklari boʻyicha muvaffaqiyatli oʻtishi kerak.
Toʻrtinchi qadam: maʼlumot va upgrade skriptlar
Boʻsh bazada hammasi yaxshi boʻlgach, kod yangilangan bazada sinaladi. Yangilangan bazada kod bilan maʼlumot uchrashadi, va oʻsha yerda tuzilma farqlari chiqadi. Ularni upgrade skriptlar hal qiladi. Skript — Python tilida yozilgan fayl, uning ichida bitta funksiya bor, yangilash jarayoni uni modul yangilanayotganda chaqiradi. Funksiya bazaga SQL soʻrov yuborishi mumkin, ORM va Odoo ning yordamchi kutubxonasidan ham foydalanadi.
Skriptlar modul ichidagi maxsus papkada saqlanadi. Papka ichida versiya nomli boʻlim bor, versiya Odoo ning asosiy versiyasidan va modulning kichik versiyasidan iborat, masalan 17.0.2.0. Fayl nomining boshlanishi skript qaysi bosqichda ishlashini belgilaydi. Qoida muhim: skript faqat modul yangilanayotganda ishlaydi, boʻlimdagi versiya esa oʻrnatilgan versiyadan yuqori va yangilanadigan versiyadan oshmasligi kerak. Modul versiyasi raqami oshirilmasa, skript ishlamaydi.
| Bosqich | Qachon ishlaydi | Misol |
|---|---|---|
| Pre | Modul yuklanishidan oldin | Eski nomdagi maʼlumotni saqlab qolish |
| Post | Modul va uning bogʻliqliklari yuklanib, yangilangandan keyin | Hamma ustun mavjud boʻlganda maʼlumotni koʻchirish |
| End | Shu versiya uchun barcha modullar yangilangach | Umumiy yakuniy tuzatishlar |
Bir bosqich ichida fayllar nomining alifbo tartibida bajariladi. Hujjat murakkab misol keltiradi: Odoo 15 dan 16 ga oʻtganda obuna modeli sotuv buyurtmasiga qoʻshildi va maxsus maydonlar avtomatik koʻchmadi, ularni SQL soʻrov bilan eski jadvaldan yangisiga oʻtkazish kerak boʻldi. Soʻrov post bosqichida yozildi, chunki barcha ustunlar shu vaqtga kelib mavjud boʻladi.
Yana bir gipotetik misol. Aytaylik, maxsus modul mijoz kartasiga qarz chegarasi maydonini qoʻshgan va yangi versiyada maydon nomini oʻzgartirmoqchisiz. Baza eski va yangi nomni ikki alohida maydon deb biladi, shuning uchun skriptsiz eski qiymatlar eski maydonda qoladi, yangisi esa boʻsh chiqadi. Hujjat shu sababli nomi oʻzgargan modellar, maydonlar va tashqi identifikatorlarni skript bilan qayta nomlashni talab qiladi.
Skriptlarning boshqa vazifalari ham bor:
- Juda koʻp yozuvli modelda hisoblanuvchi maydon qiymatini SQL bilan saqlab, yangilash vaqtini qisqartirish.
- Hisoblash usuli oʻzgargan maydonlarni qayta hisoblash.
- Keraksiz maxsus modullarni oʻchirish.
- Xato maʼlumot yoki notoʻgʻri sozlamani tuzatish.
Koʻp ishlar uchun tayyor kutubxona bor. Bu Odoo ning oʻzi standart modullarda ishlatadigan upgrade utils. U GitHub da ochiq ombor sifatida turadi, LGPL-3 litsenziyasiga ega va Odoo 7.0 dan hozirgi versiyagacha ishlashga moʻljallangan. Kutubxona maydon, model va tashqi identifikatorlarni qayta nomlash, maydonlarni qayta hisoblash, modulni oʻchirish kabi amallarni tayyor funksiya sifatida beradi va bilvosita bogʻlangan yozuvlarni ham izchil qoldiradi. Odoo.sh da uni omborning talablar roʻyxatiga qoʻshish tavsiya etiladi.
Skriptlar qayerda ishlaydi
Bu hostingga bogʻliq. Online da ishlamaydi: Python fayli boʻlgan maxsus modul oʻrnatish u yerda taqiqlangan. Odoo.sh da test tarmogʻi yangilash rejimiga oʻtganda har yangi commit yangilangan zaxirani tiklaydi va maxsus modullarni yangilaydi, bu yangilashga skriptlar ham kiradi. Ishchi bazani yangilashda ham skriptlar platforma tomonidan bajariladi. Oʻz serverida yangilangan baza yuklanadi va maxsus modullar buyruq qatoridagi yangilash opsiyasi bilan yangilanadi.
Yangilangandan keyin ikki tekshiruv
Yangilangan bazada maxsus modul sinalganda hujjat ikki narsaga alohida eʼtibor beradi. Birinchisi, yangilash vaqtida muammo chiqargan koʻrinishlar oʻchirib qoʻyiladi, ular yangilash hisobotida koʻrsatiladi va keyin qayta yoqiladi yoki keraksiz boʻlsa olib tashlanadi, buning uchun ham skript tavsiya etiladi. Ikkinchisi, yangilanmaydi deb belgilangan yozuvlar modul yangilanganda ham oʻzgarmaydi. Yangi versiya talab qilgan oʻzgarish ularga skript bilan kiritiladi.
Beshinchi va oltinchi qadam: mashq va ishchi bazaga oʻtish
Modul yangilangan bazada ishlagach, yana bir sinov turi boshlanadi. Standart skriptlar ham, sizning bazangiz ham oʻzgarib turadi, shuning uchun test bazani vaqti-vaqti bilan qayta soʻrab turish kerak. Ishchi bazani yangilashdan bir kun oldin butun jarayonni toʻliq mashq qilib koʻrish tavsiya etiladi. Ishchi yangilash esa yangilash hujjatidagi hosting uchun tartib bilan oʻtadi.
Amalda nima qilish mumkin
Quyidagi qadamlar hujjat mantiqidan chiqarilgan, ularni tahririyat tavsiyasi deb oʻqing:
- Maxsus modullar roʻyxatini tuzing va har biri uchun javobgar odamni, uning shartnomasi borligini aniqlang.
- Har modul uchun savol bering: bu funksiya endi standart Odoo da bormi?
- Modullarni yangi versiyaning boʻsh bazasida bittadan oʻrnatib, xatolar roʻyxatini yuriting.
- Maʼlumotni oʻzgartiradigan har bir kod oʻzgarishi uchun alohida upgrade skript rejalashtiring.
- Modul versiyasi raqamini oshirishni tekshiruv roʻyxatiga kiriting, aks holda skript ishlamaydi.
Maxsus modul yangilashda eng koʻp vaqt oladigan qism. Avval kod yangi versiyada ishlashi, keyin maʼlumot yangi tuzilmaga oʻtishi kerak va ikkalasi alohida tekshiriladi. Keyingi savol shu: sizdagi modullardan qaysi biri endi standart Odoo bilan almashtirilishi mumkin?
Asosiy atamalar
- Maxsus modul
- Kompaniya uchun alohida yozilgan, Odoo ning standart kodini kengaytiradigan qoʻshimcha modul.
- Upgrade skript
- Yangilash vaqtida maʼlumotni yangi tuzilmaga moslaydigan kichik dastur.
- Boʻsh baza
- Hech qanday kompaniya maʼlumoti yoʻq, yangi oʻrnatilgan baza. Kodning yangi versiyaga mosligini tekshirishga qulay.
- Test baza
- Ishchi bazaning yangilangan nusxasi, unda jarayonlar xavfsiz sinab koʻriladi.
- Studio
- Kod yozmasdan maydon va jarayon qoʻshish uchun Odoo ning ichki vositasi.
- ORM
- Dasturchi baza jadvallari bilan Odoo orqali ishlaydigan qatlam.
- Texnik qarz
- Bugun qulay boʻlgani uchun qoldirilgan, lekin keyinroq ortiqcha ish keltiradigan kod.
- Mashq
- Ishchi yangilashdan oldin butun jarayonni nusxada oxirigacha oʻtkazib koʻrish.
- Qoʻllab-quvvatchi
- Maxsus modulni yangi versiyaga moslashga javob beradigan kishi yoki tashkilot.
- Tashqi identifikator
- Odoo ichidagi yozuvga barqaror nom berish usuli. Kod shu nom orqali yozuvni topadi.
Manbalar
Maqola quyidagi manbalarga tayanadi:
- Odoo 20.0 hujjatlari, Database management: Upgrade (maxsus modul ogohlantirishi, xizmat qamrovi, javobgarlik). https://www.odoo.com/documentation/20.0/administration/upgrade.html (koʻrilgan: 23-oktabr, 2026)
- Odoo 20.0 hujjatlari, Developer: Upgrade a customized database (oltita qadam, boʻsh baza, skriptlar, sinov, mashq). https://www.odoo.com/documentation/20.0/developer/howtos/upgrade_custom_db.html (koʻrilgan: 23-oktabr, 2026)
- Odoo S.A., Odoo 20 Release Notes, 2026-yil sentyabr (olib tashlangan va almashtirilgan funksiyalar). https://www.odoo.com/odoo-20-release-notes (koʻrilgan: 23-oktabr, 2026)
- Odoo 20.0 hujjatlari, Developer: ORM Changelog (19.0 dan 20.0 gacha oʻzgarishlar). https://www.odoo.com/documentation/20.0/developer/reference/backend/orm/changelog.html (koʻrilgan: 23-oktabr, 2026)
- Odoo 20.0 hujjatlari, Developer: Upgrade scripts (tuzilma, bosqichlar, bajarilish qoidasi). https://www.odoo.com/documentation/20.0/developer/reference/upgrades/upgrade_scripts.html (koʻrilgan: 23-oktabr, 2026)
- Odoo 20.0 hujjatlari, Developer: Upgrade utils (yordamchi kutubxona va oʻrnatish). https://www.odoo.com/documentation/20.0/developer/reference/upgrades/upgrade_utils.html (koʻrilgan: 23-oktabr, 2026)
- Odoo S.A., odoo/upgrade-util, README va litsenziya, GitHub (Odoo 7.0 dan hozirgi versiyagacha moʻljallangan, LGPL-3). https://github.com/odoo/upgrade-util (koʻrilgan: 23-oktabr, 2026)