Гэр / Интернет / 1c-г вэб серверээр холбож байна. Вэб хөтчүүдийг тохируулах, ашиглах. Вэб хөтчөөр дамжуулан 1C: Enterprise мэдээллийн баазтай ажиллах ерөнхий схем

1c-г вэб серверээр холбож байна. Вэб хөтчүүдийг тохируулах, ашиглах. Вэб хөтчөөр дамжуулан 1C: Enterprise мэдээллийн баазтай ажиллах ерөнхий схем

1С 8.3 платформын хувилбараас эхлэн вэб сервер дээр мэдээллийн санг нийтлэх боломжтой болсон. Энэ шийдэлмаш тохиромжтой, учир нь хөтөч дээрх холбоос дээр дарснаар та 1С дээр бүрэн ажиллах боломжтой. Зөвхөн "Enterprise" горимд ажиллах боломжтой гэдгийг анхаарна уу. Та тохируулагчийг зөвхөн зузаан клиент дээр ашиглаж болно.

Мэдээжийн хэрэг 1С нь тавигдах шаардлагуудын жагсаалтыг зарлав үйлдлийн системвэб серверээр дамжуулан 1С руу холболт хийх хөтчүүд. Гэхдээ практик дээр илүү олон боломжууд бий. Жишээлбэл, та гар утаснаасаа ердийн хөтчөөр дамжуулан 1С дээр ажиллах боломжтой.

Энэ нийтлэлд бид 1С 8.3 мэдээллийн баазыг Apache ашиглан вэб сервер дээр нийтлэх талаар алхам алхмаар авч үзэх болно. Доор тайлбарласан тохиргоонууд нь 1С дээр өөрөө хийх бөгөөд IIS вэб сервер дээр нийтлэхээс ялгаатай биш юм.

Цорын ганц ялгаа нь IIS ажиллаж байгаа сервер нь тохиргооны хувьд илүү "нарийнхан" байдаг тул сонголт нь ихэвчлэн Apache дээр байдаг.

Apache 2.4 суулгаж тохируулж байна

Юуны өмнө та Apache-г өөрөө, жишээлбэл, албан ёсны вэбсайтаас татаж авах хэрэгтэй. Одоогийн асаалттай Энэ мөчхувилбар 2.4. Суулгах явцад ямар ч төвөгтэй зүйл байхгүй, зөвхөн туслахыг дага.

Суулгах явцад серверийн талаарх мэдээлэл бүхий цонх гарч ирэх үед эхний хоёр талбарт "localhost" гэж оруулна уу. Энэ нь манай компьютер 1С байрладаг сервер болно гэсэн үг юм.

Мөн бид 80 портыг (маягтын доод талд байгаа шилжүүлэгч) ашиглах болно гэдгийг анхаарна уу. Үүнийг бусад програмууд эзэлдэггүй байх нь чухал юм.

Програмыг амжилттай суулгасны дараа тавиур дээр тусгай Apache дүрс гарч ирнэ. Үүний тусламжтайгаар та вэб серверийг эхлүүлж, зогсоож болно.

Мэдээллийн санг нийтлэх 1С 8.3

Дараа нь Apache суулгацуудТа мэдээллийн баазыг вэб сервер дээр шууд нийтлэх боломжтой. Үүнийг хийхийн тулд хаягаар очно уу хүссэн суурьтохиргооны горимд. Шаардлагатай бүх үйлдлийг энд хийх болно. Энэ тохиолдолд, дээр дурдсанчлан, та IIS ашиглах тохиолдолд энэ зааврыг ашиглаж болно.

"Удирдлага" цэснээс "Вэб серверт нийтлэх" гэснийг сонгоно уу. Нээгдсэн цонхонд бид бүх үндсэн тохиргоог орхиж, тэдгээрийн зөвхөн багахан хэсгийг өөрчлөх болно.

Вэб серверийн хувьд бид өмнө нь суулгасан Apache 2.2-г сонгох болно. Нэр нь дурын утга байж болно. Бид 1С: Баримт бичгийн менежментийг нийтэлдэг тул үүнийг "doc" гэж нэрлэх болно. Лавлах талбараас бид хаана ч байрлуулах боломжтой хоосон хавтсыг сонгох болно.

Шаардлагатай бүх өгөгдлийг оруулсны дараа "Нийтлэх" товчийг дараад Apache вэб серверийг дахин эхлүүлнэ үү.

Одоо орлоо хаягийн мөрхөтөч дээр "localhost/doc" гэж оруулна уу. Бид 1С дээр зөвшөөрлийн цонхтой.

Нууц үг, нэвтрэлт танилтаар нэвтрэн орсны дараа танил 1С бидний өмнө нээгдэнэ.

31/05/2016

Microsoft Internet Information Services (IIS) вэб серверийг 1C: Enterprise платформтой ажиллахаар тохируулах.

Нийтлэлийн талаархи ерөнхий мэдээлэл

Та бүхний мэдэж байгаагаар 1С мэдээллийн санг нийтлэх нь тохируулагчаас болон webinst хэрэгслийг ашиглан хоёуланг нь хийж болно. Нийтлэлийн алгоритмыг ITS дээр, жишээлбэл, энэ холбоос дээр илүү дэлгэрэнгүй тайлбарласан болно.

64 битийн серверт зориулж нийтлэх нь зөвхөн Linux үйлдлийн систем дэх тохируулагч эсвэл webinst хэрэгслийг ашиглах боломжтой гэдгийг тэмдэглэх нь зүйтэй. Манай ачааллын зарим туршилтанд 64 битийн IIS вэб серверүүд бага зэрэг харагдаж байсан илүү сайн гүйцэтгэлТиймээс бусад хязгаарлалт байхгүй тохиолдолд бид тэдгээрийг ашиглахыг зөвлөж байна.

Хэрэв та 32 битийн IIS вэб сервер ашиглахаар төлөвлөж байгаа бол 32 битийн програмуудыг ажиллуулахыг бүү мартаарай: "Програмын сан" жагсаалтад хэрэгтэй сан бүрийн хувьд хулганы баруун товчийг дарна уу. контекст цэссонгох" Нэмэлт сонголтууд…” (“Нарийвчилсан тохиргоо”), дараа нь “32 битийн програмуудыг идэвхжүүлэх” параметрийг “Үнэн” болгож тохируулна уу.

Баримт бичигт мөн IIS вэб сервертэй ажиллахтай холбоотой хэд хэдэн чухал зүйлийг тайлбарласан болно. Тэдгээрээс иш татахын тулд IIS вэб серверт нийтлэхдээ дараахь зүйлийг санаарай.

  • Өгөгдмөл вэб сайтад нийтлэх нь үргэлж хийгддэг.
  • Нийтлэх нь үргэлж анхдагч програмын санд (DefaultAppPool) хийгддэг.
  • 1C: Enterprise үйлдлийн системд ашигладаг програмын санд .NET дэмжлэгийг идэвхгүй болгох шаардлагатай. Үүнийг хийхийн тулд "Орчны хувилбарууд" програмын сангийн өмчийг тохируулна уу. NET Framework” (“.NET Framework хувилбар”) руу “Удирдах кодгүй”.

Эхний хоёр зүйлийн талаархи мэдээлэл нь өөрөө чухал ач холбогдолтой бөгөөд ялангуяа хэлэлцэж буй асуудлын хүрээнд ирээдүйд хэрэг болох болно. Гурав дахь зөвлөмж нь бидний туршлагаас үзэхэд заавал байх албагүй бөгөөд IIS вэб сервер нь .NET Framework v4 хувилбарыг ашиглах горимд амжилттай ажилладаг.

1С платформын янз бүрийн хувилбаруудад IIS-ийг тохируулах

Хувилбарын гурав, дөрөв дэх цифрээр ялгаатай олон вэб серверийн залгаасуудыг ашиглахын тулд та өөр өөр програмын санг ашиглах ёстой (энэ нь нэг програмын сан дотор боломжгүй). Үүний дагуу вэб серверт ашиглахаар төлөвлөж буй залгаасуудын өөр өөр хувилбарууд байгаа тул виртуал програм бүрийг хүссэн програмын сантай гараар холбох ёстой.

Тиймээс, жишээлбэл, хоёр нэмэлт програмын сан үүсгэцгээе (ерөнхий тохиолдолд илүү олон байж болно), тохь тухтай байхын тулд цөөрмийн нэр дээр бидний ашиглахаар төлөвлөж буй платформын хувилбарыг зааж өгнө үү (бид заасан товчилсон хувилбар - "8.3.6", гэхдээ энэ нь таны ашиглахад илүү тохиромжтой байж болох юм бүрэн хувилбаржишээлбэл, "8.3.6.2237", эсвэл ерөнхийдөө програмын сангуудыг програмаар нь хуваах, жишээ нь "туршилтын кластерын сан"). Санал болгож буй параметрүүдийг тохируулах (орчны хувилбар, 32 битийн програмуудыг ашиглах тэмдэг). Үүний үр дүнд та IIS вэб серверийн програмын сангуудын дараах жагсаалтыг харах ёстой:

Дараа нь тохируулагчийг ажиллуулж (администраторын нэрийн өмнөөс энэ үйлдлийг гүйцэтгэхээ бүү мартаарай) болон нийтлэлийг гүйцэтгэнэ. Баримт бичигт дурдсанчлан "Өгөгдмөл вэб сайт" бүлэгт шинэ сайтын тухай оруулга байгаа (эсвэл өмнө нь нийтэлсэн бол шинэчлэгдсэн). Энэ нийтлэлийн дэвшилтэт тохиргоонууд нь "DefaultAppPool" гэсэн үндсэн програмын санг жагсаах болно. Үүнийг өөрчлөхийн тулд та "Нарийвчилсан сонголтууд ..." эсвэл "Үндсэн тохиргоо ..." харилцах цонх руу залгаж болно. Бид гол гэж нэрлэдэг:

Бид анхдагч програмын санг ("DefaultAppPool") нийтлэгдсэн баазын 1С платформын хувилбарт ("AppPool 1C 8.3.6" эсвэл "AppPool 1C 8.3.7") тохирох програмын сангаар солино.

Хэрэв та вэб серверийн өргөтгөлийн зохицуулагчийг өөрчлөх шаардлагатай бол (жишээлбэл, тохируулагчаас 32 битээс 64 бит хувилбар руу нийтлэсний дараа) эндээс хийж болно:

Бид өөр мэдээллийн бааз болон 1С платформын өөр хувилбарт ижил зүйлийг хийдэг.

Тэгээд л болоо шаардлагатай тохиргоодууссан! Бид 1С вэб программуудтай нэгэн зэрэг ажиллахыг шалгаж, таашаал авдаг өөр өөр хувилбарууднэг вэб сервер дотор:

Дүгнэлт

Энэ нийтлэлд бид янз бүрийн хувилбаруудын 1С: Enterprise мэдээллийн баазын IIS вэб сервер дотор хэд хэдэн мэдээллийн сангийн нийтлэлийг ашиглах боломжийг олгодог аргыг тайлбарласан. Хэрэв та 1С платформын ашигласан хувилбарууд нь өөр өөр байдаг хэд хэдэн ажлын эсвэл туршилтын мэдээллийн сантай сервер дээр ажиллаж байгаа бол энэ нь зайлшгүй шаардлагатай.

Та шаардлагатай даалгавраа хялбархан биелүүлж, 1С бүтээгдэхүүнийг үргэлжлүүлэн ашиглах болно гэдэгт найдаж байна. Хэрэв танд ямар нэг зүйл болохгүй, эсвэл танд ямар нэгэн бэрхшээл тулгарвал бид туслах болно!

1С: Аж ахуйн нэгжийн технологийн нэг сайхан шинж чанар нь уг технологийг ашиглан програмын шийдэл боловсруулсан явдал юм удирдаж буй хэлбэрүүд, Windows, Linux, MacOS X дээрх нимгэн (гүйцэтгэх боломжтой) клиент болон 5 хөтөчийн вэб клиент болгон ажиллуулж болно - Chrome, Internet Explorer, Firefox, Safari, Edge гэх мэт програмын эх кодыг өөрчлөхгүйгээр. Нэмж дурдахад, нимгэн клиент болон хөтөч дээрх програмууд нь бараг адилхан ажилладаг.
10 ялгааг ол (зүссэн 2 зургийн доор):

Цонх нимгэн үйлчлүүлэгч linux дээр:

Вэб клиент дээрх ижил цонх (Chrome хөтөч дээр):

Бид яагаад вэб үйлчлүүлэгч хийсэн бэ? Бага зэрэг өрөвдмөөр ярих юм бол цаг хугацаа бидэнд ийм даалгавар тавьсан. Удаан хугацааны туршид интернетээр ажиллах нь бизнесийн хэрэглээний урьдчилсан нөхцөл болсон. Нэгдүгээрт, бид нимгэн үйлчлүүлэгчдээ интернетээр дамжуулан ажиллах чадварыг нэмсэн (зарим өрсөлдөгчид тэнд зогссон; бусад нь эсрэгээрээ нимгэн үйлчлүүлэгчээ орхиж, вэб клиентийг хэрэгжүүлэхээр хязгаарласан). Бид хэрэглэгчиддээ өөрт тохирсон үйлчлүүлэгчийн сонголтыг сонгох боломжийг олгохоор шийдсэн.

Нимгэн үйлчлүүлэгчид вэб чадавхийг нэмэх нь үйлчлүүлэгч/серверийн архитектурыг бүрэн өөрчилсөн томоохон ажил байлаа. Вэб клиент үүсгэх нь эхнээс нь эхэлсэн цоо шинэ төсөл юм.

Асуудлын томъёолол

Тиймээс, төсөлд тавигдах шаардлага: вэб клиент нь нимгэн клиенттэй ижил зүйлийг хийх ёстой, тухайлбал:
  1. Хэрэглэгчийн интерфейсийг харуулах
  2. 1С хэл дээр бичигдсэн үйлчлүүлэгчийн кодыг ажиллуул
1С дахь хэрэглэгчийн интерфэйсийг визуал засварлагчаар тайлбарласан боловч элементүүдийн пикселээр пикселийн зохион байгуулалтгүйгээр тунхаглалтайгаар; Гурав орчим төрлийн интерфейсийн элементүүдийг ашигладаг - товчлуурууд, оруулах талбарууд (текст, дижитал, огноо / цаг), жагсаалт, хүснэгт, график гэх мэт.

1С хэл дээрх үйлчлүүлэгчийн код нь серверийн дуудлага, дотоод нөөцтэй ажиллах (файл гэх мэт), хэвлэх гэх мэт олон зүйлийг агуулж болно.

Нимгэн клиент (вэбээр ажиллах үед) болон вэб клиент хоёулаа 1С програмын сервертэй холбогдохын тулд ижил төрлийн вэб үйлчилгээг ашигладаг. Үйлчлүүлэгчдийн хэрэгжилт нь мэдээжийн хэрэг өөр өөр байдаг - нимгэн үйлчлүүлэгч нь C ++ хэл дээр, вэб клиент нь JavaScript дээр бичигдсэн байдаг.

Жаахан түүх

Вэб клиент төсөл нь 2006 онд (дунджаар) 5 хүний ​​бүрэлдэхүүнтэй ажиллаж эхэлсэн. Төслийн тодорхой үе шатанд тодорхой функцийг хэрэгжүүлэхийн тулд хөгжүүлэгчид оролцсон ( хүснэгтийн баримт бичиг, диаграмм гэх мэт); Дүрмээр бол эдгээр нь нимгэн клиент дээр энэ функцийг хийсэн ижил хөгжүүлэгчид байсан. Тэдгээр. хөгжүүлэгчид өмнө нь C++ хэл дээр үүсгэсэн бүрэлдэхүүн хэсгүүдээ JavaScript дээр дахин бичсэн.

Бид анхнаасаа хоёр хэлний ойлголтын зөрүүтэй байдлаас шалтгаалан нимгэн клиент C++ кодыг вэб клиент JavaScript руу автоматаар (наад зах нь хэсэгчлэн) хөрвүүлэх санаанаас татгалзсан; вэб клиентийг эхнээс нь JavaScript дээр бичсэн.

Төслийн эхний давталтуудад вэб үйлчлүүлэгч нь 1С хэл дээрх үйлчлүүлэгчийн кодыг шууд JavaScript болгон хөрвүүлсэн. Нимгэн үйлчлүүлэгч өөр өөрөөр ажилладаг - суулгасан 1С хэл дээрх кодыг байт код болгон хөрвүүлж, дараа нь энэ байт кодыг үйлчлүүлэгч дээр тайлбарладаг. Дараа нь вэб үйлчлүүлэгч үүнийг хийж эхэлсэн - нэгдүгээрт, энэ нь гүйцэтгэлийн өсөлтийг өгсөн, хоёрдугаарт, нимгэн болон вэб үйлчлүүлэгчдийн архитектурыг нэгтгэх боломжтой болсон.

Вэб үйлчлүүлэгчийн дэмжлэгтэй 1С: Enterprise платформын анхны хувилбар 2009 онд гарсан. Тухайн үед вэб клиент нь Internet Explorer болон Firefox гэсэн 2 хөтчийг дэмждэг байсан. Анхны төлөвлөгөө нь Opera-г дэмжих байсан боловч тухайн үед Opera дахь програмыг хаах зохицуулагчтай холбоотой шийдвэрлэх боломжгүй асуудлаас болж (програм хаагдаж байгааг 100% итгэлтэй хянах боломжгүй байсан бөгөөд тэр үед холболтыг таслах процедурыг гүйцэтгэх боломжгүй байсан. 1С програмын сервер) эдгээр төлөвлөгөөнөөс татгалзах шаардлагатай болсон.

Төслийн бүтэц

Нийтдээ 1C: Enterprise платформ нь JavaScript дээр бичигдсэн 4 төсөлтэй.
  1. WebTools нь бусад төслүүдэд ашигладаг хуваалцсан номын сангууд юм (бид энд мөн Google Closure Library-г оруулсан болно).
  2. Formatted Document Control
  3. Хуваарийн хяналт (нимгэн клиент болон вэб клиент дээр JavaScript дээр хэрэгждэг)
  4. Вэб үйлчлүүлэгч
Төсөл бүрийн бүтэц нь Java төслүүдийн бүтэцтэй төстэй (эсвэл .NET төслүүд - аль нь танд илүү ойр байна); Бидэнд нэрийн орон зай байгаа бөгөөд нэрийн талбар бүр дотор байрладаг тусдаа хавтас. Хавтас дотор файлууд болон нэрийн орон зайн ангиуд байдаг. Вэб клиент төсөлд 1000 орчим файл байдаг.

Бүтцийн хувьд вэб клиент нь дараахь дэд системүүдэд хуваагддаг.

  • Удирдагдсан үйлчлүүлэгчийн програмын интерфейс
    • Ерөнхий хэрэглээний интерфейс (системийн цэс, самбар)
    • Удирдагдсан маягтын интерфэйс нь бусад зүйлсээс гадна 30 орчим удирдлага (товчлуур, янз бүрийн төрөлоролтын талбарууд - текст, дижитал, огноо / цаг гэх мэт, хүснэгт, жагсаалт, график гэх мэт.)
  • Үйлчлүүлэгч дээрх хөгжүүлэгчдийн ашиглах боломжтой объектын загвар (нийт 400 гаруй төрөл: удирдаж буй интерфейсийн объектын загвар, өгөгдлийн найрлагын тохиргоо, нөхцөлт формат гэх мэт)
  • Оруулсан хэлний орчуулагч 1С
  • Хөтөчийн өргөтгөлүүд (JavaScript-д дэмжигддэггүй функцэд ашиглагддаг)
    • Криптографтай ажиллах
    • Файлуудтай ажиллах
    • Технологи гадаад бүрэлдэхүүн хэсгүүд, тэдгээрийг нимгэн болон вэб клиентүүдэд ашиглах боломжийг олгодог

Хөгжлийн онцлог

Дээр дурдсан бүх зүйлийг JavaScript дээр хэрэгжүүлэх нь тийм ч амар ажил биш юм. Магадгүй 1С вэб клиент нь JavaScript дээр бичигдсэн хамгийн том клиент талын програмуудын нэг юм - ойролцоогоор 450,000 мөр. Бид вэб клиентийн кодонд объект хандалтат хандлагыг идэвхтэй ашигладаг бөгөөд энэ нь ийм том төслийн ажлыг хялбаршуулдаг.

Үйлчлүүлэгчийн кодын хэмжээг багасгахын тулд бид эхлээд өөрийн хөрвүүлэгчийг ашигласан бөгөөд платформын 8.3.6 хувилбараас (2014 оны 10-р сар) эхлэн Google Closure Compiler ашиглаж эхэлсэн. Тоогоор ашиглахын үр нөлөө нь будилсны дараа вэб клиентийн хүрээний хэмжээ юм:

  • Өөрийн гэсэн бүдүүвч - 1556 кб
  • Google Closure Compiler - 1073 kb
Google Closure Compiler-ийг ашигласнаар вэб клиентийн гүйцэтгэлийг өөрсдийнхөө хөрвүүлэгчтэй харьцуулахад 30%-иар сайжруулахад тусалсан. Нэмж дурдахад, програмын ашигласан санах ойн хэмжээ 15-25% (хөтөчөөс хамаарч) буурсан байна.

Google Closure Compiler нь объект хандалтат кодтой маш сайн ажилладаг тул вэб үйлчлүүлэгчийн хувьд түүний үр ашиг хамгийн өндөр байдаг. Closure Compiler нь бидний хувьд хэд хэдэн сайн зүйлийг хийдэг:

  • Төслийг бүтээх үе шатанд статик төрлийг шалгаж байна (бид кодыг JSDoc тэмдэглэгээгээр бүрхсэнээр хангагдсан). Үр дүн нь статик бичих бөгөөд C++ хэл дээр бичихтэй маш ойролцоо түвшинд байна. Энэ нь төслийн эмхэтгэлийн үе шатанд гарсан алдааны нэлээд их хувийг олж авахад тусалдаг.
  • Муухайрах замаар кодын хэмжээг багасгах
  • Гүйцэтгэх кодыг хэд хэдэн оновчтой болгох, жишээлбэл:
    • Inline функцийн орлуулалт. JavaScript дээр функцийг дуудах нь нэлээд үнэтэй үйлдэл бөгөөд байнга хэрэглэгддэг жижиг аргуудыг дотор нь орлуулах нь кодыг ихээхэн хурдасгадаг.
    • Эмхэтгэх үед тогтмол тоолох. Хэрэв илэрхийлэл нь тогтмолоос хамааралтай бол түүнийг тогтмолын бодит утгаар орлуулах болно
Бид WebStorm-ийг вэб үйлчлүүлэгч хөгжүүлэх орчин болгон ашигладаг.

Кодын шинжилгээнд бид SonarQube ашигладаг бөгөөд энд статик код анализаторуудыг нэгтгэдэг. Анализаторын тусламжтайгаар бид JavaScript эх кодын чанар муудаж байгааг хянаж, түүнээс урьдчилан сэргийлэхийг хичээдэг.

Бид ямар даалгавар хийсэн/шийдвэрлэж байна

Төслийг хэрэгжүүлэх явцад бид шийдвэрлэх шаардлагатай хэд хэдэн сонирхолтой ажлуудтай тулгарсан.

Сервер болон цонхны хооронд өгөгдөл солилцох

Эх кодыг бүдгэрүүлэх нь системийн үйл ажиллагаанд саад учруулж болзошгүй нөхцөл байдал байдаг. Төөрөгдөлөөс болж вэб клиентийн гүйцэтгэх кодын гаднах код нь бидний гүйцэтгэх кодоос өөр функц болон параметрийн нэртэй байж болно. Бидний гадаад код нь:
  • Серверээс өгөгдлийн бүтэц хэлбэрээр ирдэг код
  • Өөр програмын цонхны код
Сервертэй харилцахдаа эргэлзээ төрүүлэхгүйн тулд бид @expose шошгыг ашигладаг:

/** * @constructor * @extends(Base.SrvObject) */ Srv.Core.GenericException = функц () ( /** * @type (string) * @expose */ this.descr; /** * @type (Srv.Core.GenericException) * @expose */ this.inner; /** * @type (string) * @expose */ this.clsid; /** * @type (boolean) * @expose */ this. кодлогдсон;)
Бусад цонхтой харилцахдаа төөрөгдөлд орохгүйн тулд бид экспортлогдсон интерфейс гэж нэрлэгддэг (бүх аргыг экспортлох боломжтой интерфэйс) ашигладаг.

/** * DropDownWindow удирдлагын экспортлогдсон интерфэйс * * @interface * @struct */ WebUI.IDropDownWindowExp = function()() /** * Сонголтыг урагш эсвэл хойш нь 1 * * @param (boolean) isForward * @ param (boolean ) checkOnly * @return (boolean) * @expose */ WebUI.IDropDownWindowExp.prototype.moveMarker = функц (isForward, checkOnly)() /** * Сонголтыг эхлэл эсвэл төгсгөл рүү зөөнө * * @param (boolean) ) isFirst * @param (boolean) checkOnly * @return (boolean) * @expose */ WebUI.IDropDownWindowExp.prototype.moveMarkerTo = функц (isFirst, checkOnly)() /** * @return (boolean) * @expose */ WebUI.IDropDownWindowExp.prototype .selectValue = function()()

Бид Виртуал DOM-г түгээмэл болохоос өмнө ашигласан)

Нарийн төвөгтэй вэб UI-тай харьцдаг бүх хөгжүүлэгчдийн нэгэн адил бид DOM нь динамик хэрэглэгчийн интерфэйсүүдэд тохиромжгүй гэдгийг хурдан ойлгосон. Бараг тэр даруй UI-тай ажиллахыг оновчтой болгохын тулд Virtual DOM-ийн аналогийг хэрэгжүүлсэн. Үйл явдлыг боловсруулах явцад бүх DOM өөрчлөлтүүд санах ойд хадгалагдах бөгөөд зөвхөн бүх үйлдлүүд дууссаны дараа хуримтлагдсан өөрчлөлтүүд нь DOM модонд хэрэглэгдэх болно.

Вэб үйлчлүүлэгчийн оновчлол

Вэб клиентээ илүү хурдан ажиллуулахын тулд бид хөтөчийн стандарт функцуудыг (CSS гэх мэт) дээд зэргээр ашиглахыг хичээдэг. Тиймээс маягтын командын мөрийг (бараг бүх өргөдлийн маягт дээр байрладаг) зөвхөн CSS дээр суурилсан динамик зохион байгуулалттай хөтөчөөр зурдаг.

Туршилт хийх

Функциональ болон гүйцэтгэлийн туршилтын хувьд бид өмчийн хэрэгсэл (Java болон C++ хэл дээр бичигдсэн) болон Selenium дээр суурилуулсан туршилтын багцыг ашигладаг.

Манай хэрэгсэл нь бүх нийтийнх бөгөөд энэ нь танд бараг ямар ч цонхны програмыг турших боломжийг олгодог бөгөөд ингэснээр нимгэн клиент болон вэб клиентийг туршихад тохиромжтой. Уг хэрэгсэл нь 1С програмын шийдлийг скрипт файл болгон эхлүүлсэн хэрэглэгчийн үйлдлийг бүртгэдэг. Үүний зэрэгцээ дэлгэцийн ажлын хэсгийн зургийг - лавлагаа - бичдэг. Вэб клиентийн шинэ хувилбаруудыг хянах үед хэрэглэгчийн оролцоогүйгээр хувилбаруудыг тоглодог. Дэлгэцийн зураг нь лавлагаатай ямар ч үе шатанд таарахгүй тохиолдолд туршилт амжилтгүй болсон гэж тооцогддог бөгөөд үүний дараа чанарын мэргэжилтэн шалгалт хийдэг - энэ нь алдаа эсвэл системийн үйл ажиллагаанд төлөвлөсөн өөрчлөлт үү. Төлөвлөсөн зан үйлийн хувьд стандартууд автоматаар шинээр солигддог.

Энэхүү хэрэгсэл нь мөн програмын гүйцэтгэлийг 25 миллисекундын нарийвчлалтайгаар хэмждэг. Зарим тохиолдолд бид скриптийн хэсгүүдийг давталт хийдэг (жишээлбэл, захиалгын оруулгыг хэд хэдэн удаа давтах), гүйцэтгэлийн цаг хугацааны доройтлыг шинжлэхийн тулд. Бүх хэмжилтийн үр дүнг дүн шинжилгээ хийх бүртгэлд тэмдэглэнэ.


Манай туршилтын хэрэгсэл ба програмыг туршиж байна

Манай хэрэгсэл болон Селен нь бие биенээ нөхдөг; Жишээлбэл, хэрэв дэлгэцийн аль нэгний товчлуур байршлаа өөрчилсөн бол Selenium үүнийг хянахгүй байж магадгүй, гэхдээ манай хэрэгсэл үүнийг анзаарах болно. дэлгэцийн агшинг стандарттай пикселээр пикселээр нь харьцуулдаг. Мөн энэ хэрэгсэл нь гар эсвэл хулганаас оролтыг боловсруулахтай холбоотой асуудлуудыг хянах боломжтой, учир нь үүнийг хуулбарладаг.

Хоёр хэрэгсэл (манай болон Селен) дээрх туршилтууд нь манай хэрэглээний шийдлүүдийн ердийн ажлын хувилбаруудыг ажиллуулдаг. 1С: Enterprise платформыг өдөр бүр бүтээсний дараа тестүүд автоматаар эхэлдэг. Хэрэв скриптүүд удааширвал (өмнөх хувилбартай харьцуулахад) бид удаашралын шалтгааныг судалж, засах болно. Бидний шалгуур бол энгийн - шинэ угсралт өмнөхөөсөө удаан ажиллах ёсгүй.

Хөгжүүлэгчид удаашруулсан тохиолдлыг судлахын тулд янз бүрийн хэрэгслийг ашигладаг; голчлон DynaTrace-ийн Dynatrace AJAX Edition ашигладаг. Өмнөх болон шинэ угсралт дээрх асуудалтай үйлдлийн гүйцэтгэлийн бүртгэлийг бүртгэж, дараа нь бүртгэлд дүн шинжилгээ хийнэ. Үүний зэрэгцээ, нэг үйлдлийн гүйцэтгэлийн хугацаа (миллисекундээр) шийдвэрлэх хүчин зүйл биш байж болох юм - хог цуглуулах гэх мэт үйлчилгээний процессуудыг хөтөч дээр үе үе эхлүүлдэг бөгөөд тэдгээр нь функцүүдийн гүйцэтгэх хугацаатай давхцаж, зургийг гажуудуулж болзошгүй юм. Энэ тохиолдолд илүү хамааралтай параметрүүд нь гүйцэтгэсэн JavaScript зааврын тоо, DOM дээрх атомын үйлдлийн тоо гэх мэт байх болно. Хэрэв ижил хувилбар дахь заавар/үйл ажиллагааны тоо шинэ хувилбарнэмэгдсэн - энэ нь бараг үргэлж гүйцэтгэлийн уналт гэсэн үг бөгөөд үүнийг засах шаардлагатай.

Түүнчлэн, гүйцэтгэл буурах шалтгаануудын нэг нь Google Closure Compiler ямар нэг шалтгааны улмаас функцийн дотор орлуулалт хийж чадаагүй (жишээлбэл, функц рекурсив эсвэл виртуаль шинж чанартай байдаг) байж болно. Энэ тохиолдолд бид эх кодыг дахин бичих замаар нөхцөл байдлыг засахыг хичээдэг.

Хөтөчийн өргөтгөлүүд

Хэрэглэсэн шийдэлд JavaScript-д байхгүй функц шаардлагатай тохиолдолд бид хөтчийн өргөтгөлүүдийг ашигладаг:
  • файлуудтай ажиллах
  • криптографтай ажиллах
  • гадаад бүрэлдэхүүн хэсгүүдтэй ажиллах
Манай өргөтгөлүүд хоёр хэсгээс бүрдэнэ. Эхний хэсэг нь хөтчийн өргөтгөл (ихэвчлэн Chrome болон Firefox-д зориулсан JavaScript өргөтгөлүүд) гэж нэрлэгддэг бөгөөд хоёр дахь хэсэг нь бидэнд хэрэгтэй функцийг хэрэгжүүлдэг хоёртын өргөтгөлтэй харьцдаг. Бид Windows, Linux болон MacOS-д зориулсан хоёртын өргөтгөлийн 3 хувилбарыг бичдэг гэдгийг тэмдэглэх нь зүйтэй. Хоёртын өргөтгөл нь 1С: Enterprise платформын нэг хэсэг болгон нийлүүлэгдсэн бөгөөд 1С програмын сервер дээр байрладаг. Вэб клиентээс анх удаа дуудахдаа клиентийн компьютерт татаж аваад хөтөч дээр суулгадаг.

Safari дээр ажиллахдаа манай өргөтгөлүүд NPAPI ашигладаг бол Internet Explorer - ActiveX технологи дээр ажилладаг. Microsoft Edge нь өргөтгөлүүдийг хараахан дэмждэггүй тул вэб клиент хязгаарлалттай ажилладаг.

Цаашдын хөгжил

Вэб үйлчлүүлэгч хөгжүүлэх багийн нэг ажлын хэсэг бол Цаашдын хөгжилфункциональ байдал. Вэб үйлчлүүлэгчийн үйл ажиллагаа нь нимгэн үйлчлүүлэгчийн функцтэй ижил байх ёстой бөгөөд бүх шинэ функцууд нь нимгэн клиент болон вэб үйлчлүүлэгчийн аль алинд нь нэгэн зэрэг хэрэгждэг.

Бусад ажлууд нь архитектурыг хөгжүүлэх, дахин засварлах, гүйцэтгэл, найдвартай байдлыг сайжруулах явдал юм. Жишээлбэл, нэг чиглэл бол асинхрон ажлын загвар руу шилжих явдал юм. Вэб клиентийн нэг хэсэг нь сервертэй харилцах синхрон загвар дээр суурилагдсан. Асинхрон загвар нь одоо хөтчүүдэд (зөвхөн хөтчүүдэд биш) илүү хамааралтай болж байгаа бөгөөд энэ нь биднийг синхрон дуудлагыг асинхрон дуудлагаар сольж (мөн кодыг өөрчлөх) замаар вэб клиентийг өөрчлөхөд хүргэдэг. Асинхрон загварт аажмаар шилжих нь суллагдсан шийдлүүдийг дэмжиж, тэдгээрийг аажмаар дасан зохицох шаардлагатай гэж тайлбарладаг.

Шошго: шошго нэмэх

1C 8.3 (DB - MSSQL) бүхий Windows сервер байдаг.
Даалгавар бол Линукс вэб сервер дээр мэдээллийн баазыг хэвлэх ажлыг тохируулах явдал юм.
Нарийн талууд - Apache-д зориулсан 1С модуль нь зөвхөн 2.0 ба 2.2-тэй ажилладаг бөгөөд Одоогийн хувилбарихэнх тархалтад - 2.4+
Би мартахгүйн тулд өөртөө илүү ихийг бичдэг. За, та хэзээ ч мэдэхгүй, гэнэт өөр хэн нэгэн хэрэг болно - та зөв тушаалуудыг хайж форумыг тойрон гүйх шаардлагагүй.

Төмөр - гигабайт RAM, нэг цөм, 20 гигабайт диск өгсөн. Өргөтгөхөд хэзээ ч оройтдоггүй.
OS: Debian Stable, би үүнд дассан.

Би ssh серверийг оруулаад хамгийн бага хэмжээг тогтоосон боловч вэбийг оруулаагүй болно. Энэ асуудал руугаа буцаж орцгооё.

Суулгасны дараа үндсэн тохиргооамтлахын тулд би ихэвчлэн utf8 хэлийг тохируулж, sudo, mc, vim, үлдсэнийг нь шаардлагатай бол тавьдаг.
Дараа нь та apache 2.2 суулгах хэрэгтэй. Тэгээд хий зөв замзүгээр л deb багцыг татаж авахаас илүү. :)

Эхлээд /etc/apt/sources.list руу холбоос бүхий мөрүүдийг нэмнэ үү өмнөх хувилбархуваарилалт.
deb http://mirror.yandex.ru/debian/ wheezy main deb-src http://mirror.yandex.ru/debian/ wheezy main
Та мэдээж бичиж болно хуучин тогтвортой- одоогоор бас зөв байх болно. Гэхдээ зөвхөн бодит хувилбар дээр, учир нь эрт орой хэзээ нэгэн цагт шинэ тогтвортой хувилбар гарах болно хуучин тогтвортойтэгээд apache 2.2-ын оронд 2.4 байх болно. Хэдийгээр тэр үед 1С шинэчлэгдэж, Apache-ийн шинэ хувилбаруудтай ажиллах болно гэж найдаж байна. Гэхдээ хэн мэдэх вэ? :)
Хаана mirror.yandex.ru- репозитортой таны дуртай серверийн нэрийг тэнд бичсэн болно.

Дараа нь бид индексүүдийг шинэчилнэ - apt-get шинэчлэлт- мөн тушаалаар apache-д юу байгааг харна уу apt-cache showpkg apache2
Маш их гаралт байгаа боловч бид зөвхөн гаралтын эхлэлийг сонирхож байна:
Багц: apache2 Хувилбар: 2.4.10-10+deb8u3 (/var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_binary-i386_Packages) i386_Packages MD5: Тайлбар хэл: en File: /varlistt/s yandex.ru_debian_dists_stable_main_i18n_Translation-en MD5: Тодорхойлолт Хэл: en Файл: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_i18n_Translation-en MD5 : 2.4/list/subse/ debian.org_dists_stable_updates_main_binary-i386_Packages) Хэл: en Файл: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_i18n_Translation-en MD5: Тайлбар Хэл: en Файл:/var/lation_tb_bists/mainapror. en MD5: 2.2.22 -13+deb7u6 (/var/lib/apt/lists/mirror.yandex.ru_deb ian_dists_wheezy_main_binary-i386_Packages) Тодорхойлолт Хэл: Файл: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_wheezy_main_binary-i386_Packages MD5: Тодорхойлолт Хэл: en Файл: /var/libs/libary-i386_d.mag.main_t_defile. : ru Файл: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_wheezy_main_i18n_Translation-ru MD5:

2.4.10-аас гадна 2.2.22-13+deb7u6 - танд хэрэгтэй зүйл байгааг бид харж байна.
Бид тавих: apt-get install apache2=2.2.22-13+deb7u6
Эсвэл илүү нарийвчлалтай: apt-get install apache2=2.2.22-13+deb7u6 apache2-mpm-worker=2.2.22-13+deb7u6 apache2.2-common=2.2.22-13+deb7u6 apache2.2-bin=2.2.22-13 +deb7u6, мөн бусад хамаарлыг автоматаар татах болно.

Үүний дараа бид Apache-г санамсаргүйгээр шинэчлэхгүйн тулд түр зогсоосон.

Apt-mark hold apache2 apache2-mpm-worker apache2.2-common apache2.2-bin apache2-г хүлээсэн гэж тэмдэглэсэн. apache2-mpm-worker-г хийсэн гэж тэмдэглэсэн. apache2.2-нийтлэг нь хийгдсэн гэж тэмдэглэгдсэн. apache2.2-bin нь хийгдсэн гэж тэмдэглэгдсэн.
Та хөтчөө эхлүүлэхээс залхуурсан эсэхээ шалгахын тулд apache2 start болон telnet үйлчилгээг 80-р порт руу ажиллуулж болно.

telnet localhost 80
Оролдож байна::1... Localhost-д холбогдсон. Зугтах дүр нь "^]". нэг 501 Арга хэрэгжээгүй

Хэрэгжүүлээгүй арга

1-ээс /index.html-г дэмждэггүй.


1cweb порт 80 дээрх Apache/2.2.22 (Debian) сервер
Холболтыг гадаад хост хаасан.

Тангараглах - энэ нь ажилладаг гэсэн үг юм.

Одоо бид 1С тавьж байна.
Зөвхөн 1С вэб үйлчилгээ шаардлагатай (багц 1c-enterprise83-ws). Тэгээд 1c-enterprise83-нийтлэг, хараат байдалд бүртгэгдсэн. Тэгээд 1c-enterprise83-сервер, энэ нь хамааралд тодорхойлогдоогүй боловч үүнгүйгээр хэвлэх хэрэгсэл "Segmentation error" гэж бичдэг.
Зарчмын хувьд зөвхөн Apache-д зориулсан модуль л хэрэгтэй wsap22.soбагцаас 1c-enterprise83-ws, бусад бүх зүйлийг даван туулж болно текст засварлагчхийх. Гэхдээ би залхуу хүн бөгөөд тохиргоог гараар хийхээс илүүтэйгээр 1С дээр хэдэн мегабайт зарцуулсан нь дээр. :)

Дараа нь та нийтлэгдсэн 1С мэдээллийн сангийн тохиргоог хадгалах хавтас үүсгэх хэрэгтэй. Энэ нь вэб серверийн мод дээр боломжтой, гэхдээ би үүнийг тусад нь, шууд үндэс дээр / 1s хийсэн нь дээр.
Үүний дараа хамт хавтаснаас суулгасан файлууд 1С ( /opt/1C/v8.3/i386) нийтлэх хэрэгслийг ажиллуул вэбинстдараах параметрүүдтэй (би туршилтын мэдээллийн санг нийтэлдэг):
./webinst -apache22 -wsdir testlitupp -dir /1c/testlitupp -connstr "Srvr=10.0.0.4;Ref=testlitupp;" -confPath /etc/apache2/apache2.conf Нийтэлсэн

Apache22 бол вэб серверийн бидний хувилбар юм
-wsdir testlitupp - нийтлэгдсэн мэдээллийн сан бэлэн байх вэб сервер дээрх хавтас (http://yourserver/testlitupp)
-dir /1c/testlitupp - нийтлэх тохиргоотой default.vrd файлыг хадгалах хавтас.
-connstr "Srvr=10.0.0.4;Ref=testlitupp;" - 1С серверийн ip болон нийтлэгдсэн мэдээллийн сангийн нэр
-confPath /etc/apache2/apache2.conf - apache тохиргооны зам

Хэрэв "Хэвлэгдсэн" гэж бичсэн бол бүх зүйл сайхан болсон. Хэрэв "Segmentation error" гэж бичсэн бол та оруулахаа мартсан байх магадлалтай 1c-enterprise83-сервер.
Үр дүнд үндэслэн бидэнд default.vrd файл байна

Мөн вэб серверийн тохиргооны файл дахь хэд хэдэн шинэ мөрүүд:

LoadModule _1cws_module "/opt/1C/v8.3/i386/wsap22.so" # 1c нийтлэл "/testlitupp" "/1c/testlitupp/" AllowOverride All Options Байхгүй Захиалга зөвшөөрөх, үгүйсгэх Бүх SetHandler 1c-програмаас зөвшөөрөх ManagedApplicationDescriptor "/1c/testlitupp/default.vrd"
Бид Apache-г дахин эхлүүлж (үйлчилгээний apache2 дахин эхлүүлэх) тэнд юу нийтлэгдсэнийг харахаар очно.
Нийтэлсэн, нууц үг асууна.

Тэгээд түүнийг баазад оруулаарай.

Ажилладаг. Нэмэлт нийтлэлийн тохиргоог vrd файлуудыг засварлах замаар хийдэг (жишээлбэл, дибаг хийхийг идэвхжүүлэх) бөгөөд таны 1С програмистууд вэб клиентийн интерфейсийг дуусгахад оролцох ёстой.
Хэрэв та үйлчилгээг гараар холбох гэх мэт сонголтуудыг нэмбэл "base="/testlitupp" ib="Srvr=10.0.0.4;Ref=testlitupp;" гэсэн мөрийн сүүлчийн зураасыг арилгахаа бүү мартаарай. vrd файл / >", Би үүнтэй удаан хугацаанд тоглосон. Хэрэв та устгаж, дараа нь ямар нэгэн зүйл нэмэхгүй бол нэмэлт мэдээлэлгүйгээр "алдаа 500" гарч ирнэ.
Вэб серверийн ачаалал ямар байх вэ - Би хараахан мэдэхгүй байна, энэ нь бидний хувьд туршилтын горимд ажиллаж байгаа бөгөөд хангалттай хуваарилагдсан нөөц байгаа. Гэхдээ хэрэгцээ нэмэгдэх тусам санах ой эсвэл цөм нэмэх нь асуудал биш юм.

Ерөнхийдөө, бусад linux түгээлтүүдбүх зүйл ижил аргаар хийгддэг, ялгаа нь зөвхөн суулгах аргуудад л байдаг хуучин хувилбар apache.