Гэр / Интернет дээр ажиллах / Гадаад холболт 1с. V8: COM холболт. OLE холболт үүсгэнэ үү

Гадаад холболт 1с. V8: COM холболт. OLE холболт үүсгэнэ үү

Нэг 1С тохиргооноос нөгөө рүү өгөгдөл дамжуулах нэг арга бол COM ашиглан програм хангамжийн холболт юм. Олон компаниуд хэд хэдэн өөр суурийг ашигладаг бөгөөд тэдгээрийн хооронд тодорхой холболт, хамаарал байх ёстой. Зөвхөн өгөгдөл дамжуулахаас гадна тодорхой өгөгдөл боловсруулах шаардлагатай бол COM холболт нь оновчтой механизм байх болно. Өөр 1С мэдээллийн сангаас өгөгдөлд дүн шинжилгээ хийх чадвар нь аливаа хөгжүүлэгчдэд хэрэгтэй.

Бид COM-ээр дамжуулан 1С мэдээллийн сан руу холбогддог

COM холболтыг 1С дээр хэрэгжүүлэхийн тулд COMConnector хэмээх тусгай механизмыг ашигладаг. Энэ объектыг платформтой хамт суулгасан бөгөөд мэдээллийн санг холбоход ашигладаг. 8.2 ба 8.3 хувилбаруудын хувьд "V82.COMConnector" ба "V83.COMConnector" гэсэн өөр өөр нэртэй объектуудыг ашигладаг болохыг тэмдэглэх нь зүйтэй.

Лиценз нь мэдээллийн санд COM холболт хийх хугацаанд зарцуулагддаг гэдгийг санаарай - та хэд хэдэн холболтыг нэгэн зэрэг хийхээс зайлсхийж болохгүй. Энэ нь хязгаарлагдмал тооны лицензтэй байгууллагуудад онцгой ач холбогдолтой юм. Энэ асуудлыг шийдэж болно ердийн ажлуудбайхгүй үед гүйх идэвхтэй холболтуудхэрэглэгчид мэдээллийн санд.

Өөр мэдээллийн сантай холбогдож, шаардлагатай мэдээллийг авахын тулд та дараах өгөгдлийг мэдэж байх ёстой.

  1. Энэ нь ямар төрөл вэ - файл эсвэл клиент-сервер;
  2. Энэ нь хаана байрладаг;
  3. Та үүнийг ямар нэр, нууц үгээр оруулах боломжтой;
  4. Та ямар өгөгдөл сонирхож байна.

Эхний гурван цэгээс эхлэн COM холболтыг хэрэгжүүлэхийн тулд та параметрийн мөр үүсгэх хэрэгтэй. IB-ийн төрлөөс хамааран өөр өөр байх болно Гадаад төрх. Хүлээн авсан мөрийг ашигласнаар та ямар ч аргаар дүн шинжилгээ хийх, боловсруулах зорилгоор өөр мэдээллийн сангаас мэдээлэл цуглуулах боломжтой холболт хийгдсэн.

ConnectionParametersFileIB = "Файл=""Үндсэн_зам""; Usr=""Хэрэглэгчийн_нэр"";Pwd=""Нууц үг"""; ConnectionParametersClientServerIB = "Srvr=""Серверийн_Нэр""; Ref=""Үндсэн_Нэр""; Usr=""Хэрэглэгчийн_Нэр""; Pwd=""Нууц үг""";

Холболтын функц нь энгийн бөгөөд хэрэв бүх параметрүүд зөв бол асуулт гаргах ёсгүй. Дибаг хийх, дүн шинжилгээ хийх ажлыг хурдасгахын тулд болзошгүй алдаануудхолболтыг Attempt бүтцэд оруулах нь дээр. Функц нь "COM объект" төрлийн утгыг буцааж өгөх бөгөөд та шаардлагатай өгөгдлийг олж авах шаардлагатай болно.

&AtServer функц ConnectToBase() экспортын ConnectionParametersIB = "Файл=""E:\base 1c\ERP""; Usr=""Администратор"";Pwd=""1"""; V83COMCon= Шинэ COMObject("V83.COMConnector"); Буцах оролдлого V83COMCon.Connect(ConnectionParametersIB); Онцгой байдлын тайлан(ErrorDescription()); Тодорхойгүй буцаах; оролдлогын төгсгөл; Төгсгөлийн функцууд

COM холболтоор дамжуулан та зөвхөн өгөгдлийг сонгоод зогсохгүй холбогдох мэдээллийн сандаа нэмэх боломжтой. Бид COM объектоор дамжуулан 4 анхдагч өгөгдлийн төрлийг дамжуулах боломжтой гэдгийг санаарай. Бусад төрлийг платформд суулгасан хайлтын функцийг ашиглан зааж өгөх шаардлагатай. Глобал платформын функцууд нь COM холболтоор дуудагддаг гэдгийг анхаарна уу.

Бид 1С мэдээллийн сангаас мэдээлэл авдаг

Хүссэн объектыг хүлээн авсны дараа та өөр мэдээллийн сангаас өгөгдлийг унших хэрэгтэй. Үүнийг хийхийн тулд бид функцээс "COM объект" төрлийн хүлээн авсан утгыг ашиглан 1С 8.3-т COM холболтоор хүсэлт илгээдэг. Эхлээд мэдээллийн санд холбогдож, дараа нь хүсэлтийг гүйцэтгэх нь чухал юм. Гүйцэтгэл нь параметр болгон "Хүсэлт" гэсэн мөр хэлбэрээр объектын төрлийг зааж өгсөн NewObject аргаар явагдана.

&OnServer процедур TestCOMOnServer() Холболт = ConnectToBase(); Хэрэв TypeValue(Connection) Type("Тодорхойгүй") бол QueryBPO = Connection.NewObject("Query"); Query BPZO.Text = "Эхний 15 | Хэрэглэгчийн лавлахыг сонго. Нэр AS Нэр | FROM | Хэрэглэгчийн лавлах AS хэрэглэгчийн лавлах"; Сонголт = QueryBPO.Run().select(); While Sample.next() давталтын тайлан(Selection.Number); Төгсгөлийн мөчлөг; EndIf; Процедурын төгсгөл >

Жишээлбэл, тодорхой хэлтсийн хэрэглэгчдийн талаарх мэдээллийг авахын тулд бид хүсэлтэд параметрээр дамжуулан нөхцөлийг тавина. Нэг параметр болно энгийн төрөл- тэмдэгт мөр, дэд хэсэг нь "Аж ахуйн нэгжийн бүтэц" лавлах элементийн холбоос юм. Асуулгын үр дүн нь COM холболт үүссэн мэдээллийн санд байгаа төрлийн тоологдсон талбаруудтай хүснэгт юм. Хэрэв та тэдгээрийг өөр төрөл рүү хөрвүүлэх шаардлагатай бол платформын стандарт функцуудыг ашиглана уу:

  • Шугам();
  • Тоо();
  • Огноо ().
RequestBPO = Connection.NewObject("Хүсэлт"); QueryBPO.Text = "Эхлээд 15-ыг сонго | Хэрэглэгчийн лавлах.Нэр АС Нэр |FROM | Лавлах.Хэрэглэгч АС Хэрэглэгчийн лавлах I ХААНА | Хэрэглэгчийн лавлах.Хэлтэс = &DesiredDepartment | Мөн UserDirectory.Нэр ""%"" + &DesiredName+ ""%" "" ; BPZO Request.SetParameter("Хүссэн хэлтэс", Холболт.Директорууд.Аж ахуйн нэгжийн бүтэц.FindByCode("00-000023")); RequestBPO.SetParameter("ШаардлагатайНэр","Екатерина"); Сонголт = QueryBPO.Run().select(); While Selection.next() давталтын тайлан (Selection.Name); Төгсгөлийн мөчлөг;

Хэрэв та массивыг хэд хэдэн параметрээр, жишээлбэл, хуваалтаар сонгохын тулд мэдээллийн сан руу шилжүүлэх шаардлагатай бол NewObject командыг бас ашигладаг. Үүний нэгэн адил та утгын жагсаалт эсвэл хүснэгтийг дамжуулж, холболтоор дамжуулан өөр мэдээллийн сангийн элементүүдээр дүүргэж болно. Бүх зүйл танд хайх боломжтой. одоо байгаа аргуудплатформын объект, механизм.

RequestBPO = Connection.NewObject.("Хүсэлт"); QueryBPO.Text = "Эхлээд 15-ыг СОНГОХ | Хэрэглэгчийн лавлах.Нэр AS Нэр | FROM | Directory.Users AS Хэрэглэгчийн лавлах I ХААНА | User Directory.Department In (&DesiredDepartment) | and UserDirectory.Name like ""%"" + &DesiredName+ "" %" ""; Дэд хэсгүүд Массив = Connection.NewObject("Массив"); Департаментуудын массив.Нэмэх(Connection.Catalogs.EnterpriseStructure.FindByCode("00-000023")); Departs array.Add(Connection.Catalogs.EnterpriseStructure.FindByCode("00-000038")); хэлтэс массив.Нэмэх(Connection.Catalogs.EnterpriseStructure.FindByCode("00-000046")); Query BPZO.SetParameter("Хүссэн дэд хэсэг", Дэд хэсгүүдийн массив); RequestBPO.SetParameter("ШаардлагатайНэр","Екатерина"); Сонголт = QueryBPO.Run().select(); While Selection.next() давталтын тайлан (Selection.Name); Төгсгөлийн мөчлөг;

Баримт бичиг эсвэл лавлах элементүүдийг шилжүүлэхдээ тодорхой объектыг шилжүүлэхийг хянах асуулт үргэлж гарч ирдэг. COM холболтын тусламжтайгаар та ийм асуудлыг өвөрмөц танигчаар шийдэж чадна. Та "GetLink" функцийг ашиглан одоогийн IB-ийн танигчаар залгах боломжтой мэдээллийн сангаас объектыг олох хэрэгтэй. Хэрэв байхгүй бол та үүнийг COM холболт ашиглан үүсгэж болно.

StrIdent = String(Directories.Users.FindByCode("00-0000313").UniqueIdentifier()); Хэрэв NOT ValueFilled(Connection.Catalogs.Users.GetReference(Connection.NewObject("UniqueIdentifier", StrIdent))) Дараа нь NewUser = Connection.Catalogs.Users.CreateItem(); NewUser.Name = Directories.Users.FindByCode("00-0000313").Нэр; NewUser.Individual = Directories.Users.FindByCode("00-0000313"). Хувь хүн; NewUser.Write(); EndIf;

Мөн COM холболт нь "Гадаад холболт" шинж чанарыг идэвхжүүлсэн нийтлэг 1С модулиудын горим, функцийг ашиглах эрхтэй. Энэ нөхцлөөс гадна дуудагдсан функц эсвэл процедур нь экспортын функц байх ёстой бөгөөд сервер дээр гүйцэтгэсэн интерактив үйлдлүүдийг агуулаагүй болно. Үгүй бол та хүчингүй үйлдлийн тухай алдааг харах болно.

Нийлмэл..; VariableFromFunction = Холболт..; функцийн дуудлага> нийтлэг модулийн нэр> процедурын дуудлага> нийтлэг модулийн нэр>

1С дахь өөр мэдээллийн сантай гадаад холболт хийх боломжууд нь нэлээд өргөн бөгөөд олон ажлыг гүйцэтгэх боломжийг танд олгоно. Багаж хэрэгслийг зөв үнэлж, хамгийн сайн шийдлийг сонгох чадвартай байх нь чухал юм. Ихэнх тохиолдолд энэ ур чадвар нь зөвхөн туршлагатай эсвэл туршлагатай мэргэжилтнүүдийн ажлын жишээг судлах замаар л гарч ирдэг.

1С мэдээллийн сангийн хооронд өгөгдөл солилцох сонголтуудын нэг бол COM холболтоор дамжуулан солилцох явдал юм.

COM холболтыг ашигласнаар та нэг 1С мэдээллийн сангаас нөгөөд холбогдож, өгөгдөл уншиж, бичиж болно. Та энэ аргыг өгөгдлийн сангийн клиент-сервер хувилбарууд болон файлын мэдээллийн санд хоёуланг нь ашиглаж болно. Энэ нийтлэлд бид ийм нэгдлүүдийн жишээнд дүн шинжилгээ хийх болно. Жишээ нь платформ 8.2-г ашигладаг.

Та 1С програмын хувьд хоёр төрлийн COM объект үүсгэж болно. Энэ V82. ХэрэглээТэгээд V82.COM Холбогч. Тохиолдолд V82. Хэрэглээ 1С програмын бараг бүрэн хуулбарыг эхлүүлэв. ашиглах тохиолдолд V82.COM Холбогчжижиг серверийн хэсэг ажиллаж байна.
Энэ тохиолдолд ажлын хурд илүү өндөр боловч зарим функц ажиллахгүй байж магадгүй юм. Ялангуяа, маягттай ажиллах нийтлэг модулиудүүний төлөө хамтран ажиллах өмч гадаад холболтууд. Та голчлон ашиглах хэрэгтэй V82.COM Холбогчзөвхөн функциональ дутагдалтай тохиолдолд л V82. Хэрэглээ. Хурдны ялгаа нь ялангуяа том мэдээллийн сан дээр мэдэгдэхүйц байх болно.

Ингээд эхэлцгээе

  1. COM объект үүсгэцгээе
    • Учир нь V82. ХэрэглээХолболт = Шинэ COMObject("V82.Application" ) ;
    • Учир нь V82.COM ХолбогчХолболт = Шинэ COMObject("V82.COMConnector" );
  2. Холболтын мөр үүсгэцгээе
    • өгөгдлийн сангийн сервер хувилбарын хувьд ConnectionString = "Srvr = " "ServerName" ";Ref = " "BaseName" ;
    • өгөгдлийн сангийн файл хувилбарын хувьд ConnectionString = "File = " "PathKBase" "; Usr = хэрэглэгчийн нэр; Pwd = нууц үг";
  3. Өгөгдлийн сантай холболт хийж байнаХолболтыг оролдох = Холболт. Холбох(ConnectionString); Exception Message = New MessageToUser; Захиа. Текст = + DescriptionErrors() ; Захиа. Мэдээлэх() ; EndTry;
  4. Суурьаас салгаж байнаХолболт = Тодорхойгүй;

    Объектийн хувьд V82. Хэрэглээхолболтыг заавал салгах шаардлагатай, эс тэгвээс бүрэн бус сесс өлгөөтэй хэвээр байх бөгөөд дараа нь гараар устгах шаардлагатай болно. Тохиолдолд V82.COM ХолбогчХолболт хийгдсэн процедурын төгсгөлд холболт автоматаар зогсдог.Бас нэг жижиг мөч байна.

    Холболт хийж буй хэрэглэгчийн хувьд тохиргоон доторх "Хөтөлбөрийг хаахдаа баталгаажуулахыг хүсэх" нүдийг идэвхгүй болгох ёстой.

Одоо бүх кодыг нэгтгэж үзье

Холболт = Шинэ COMObject("V82.Application" ) ; //Холболт = Шинэ COMObject("V82.COMConnector"); ConnectionString = "Srvr = ""Server1C"";Ref = ""MyBase""; Usr = Peter; Pwd = 123" ; //ConnectionString = "Файл = ""С:\MyBase""; Usr = Peter; Pwd = 123";Холболтыг оролдох = Холболт. Холбох(ConnectionString); Exception Message = New MessageToUser; Захиа. Текст = "Өгөгдлийн санд холбогдох боломжгүй"+ DescriptionError() ; Захиа. Мэдээлэх() ; EndTry; Холболт = Тодорхойгүй;

Холболтын төрлийн хувьд V82. Хэрэглээаргыг анх үүсгэсэн COM объектод ашигладаг ба for V82.COM Холбогчаргыг холболтод хэрэглэнэ. хүсэлттэй цаашдын ажил явж байна стандарт гэсэн үг 1С. кодонд энэ нь иймэрхүү харагдаж байна:

Хүсэлт = Холболт. NewObject("Хүсэлт"); // Учир нь V82.COM Холбогч Хүсэлт = Холболт. NewObject("Хүсэлт"); // Учир нь V82. Хэрэглээ Хүсэлт. Текст = "СОНГОХ | Байгууллагуудын байр суурь. | Байгууллагын албан тушаал.Нэр| FROM | Лавлах. Байгууллагын албан тушаал AS Байгууллагын албан тушаал "; Үр дүн = Хүсэлт. Гүйцэтгэх (); Жишээ = Үр дүн. Choose(); Сонгон шалгаруулалтын үеэр. Next() Cycle EndCycle ;

1C: Enterprise 8.3 хувилбарын хувьд COMObjects үүсгэх үед та ашиглах ёстойг эс тооцвол бүх зүйл өөрчлөгдөөгүй хэвээр байна. "V83.COMConnector"эсвэл V83. Хэрэглээ.

) Яг зөв

Үүний зэрэгцээ 10 оноо ч татдаггүй хэвлэлүүд зүгээр л "хөөрөх" байхыг би нэг бус удаа харсан.
Яагаад ийм зүйл болсон бэ? Магадгүй хэн нэгэнд таалагдсан нь ойлгомжтой.


Би энэ тухай ярьж байгаа бөгөөд танд хэр их хэрэгтэй байгааг ойлгохын тулд нийтлэлийг үнэлгээгээр уншихгүй байх, эсвэл тийм ч энгийн биш +/- гэж үнэлэхгүй байх нь сайхан байх болно гэж хэлж байна. Надад таалагдсан зүйлийн хувьд би үүнийг ингэж засч залруулах болно: Одууд ийм байдлаар бүрэлдэж, олон хүмүүс сайтад цугларч, олон хүмүүст таалагдсан тул тэр маш их оноо авсан, энэ бол асуудал гэдгийг та өөрөө ойлгож байна. боломжийн. нийтлэл гармагц нүүр хуудасдараа нь энэ нь зөвхөн хүсэлтээр аль хэдийн олж болно, тиймээс саналаар дамжин өнгөрөх хүн бүр. Мөн үндсэн хуудсан дээр дэмжихийн тулд миний ойлгож байгаагаар тэд зүгээр л байнгын сэтгэгдэл = нийтлэлийг сурталчлахыг зөвшөөрдөг.
Үүний тулд тэд гудамжны гудамжинд дэлгүүр байрлуулдаг - эцсийн эцэст гол нь бүтээгдэхүүний чанар, хамааралтай эсэх нь чухал биш, харин тухайн газрын чадвар, алхаж буй хүмүүс маргааш нь хаях зүйлээ худалдаж авдаг. зүгээр л үйл явцын төлөө. Энэ бол алдартай өвчин юм - шопоманиа. Эсвэл зүгээр л урсгалыг нэмэгдүүлэх нь зөв худалдан авагчийн магадлалыг нэмэгдүүлдэг.

Мөн давуу болон сул талууд нь ... зарцуулсан цаг хугацаа, хөдөлмөрт "баярлалаа" л юм


Тэдгээр. Хасах нь бас "баярлалаа" гэж тооцогддог уу? Тэгэхээр ийм тохиолдолд заавал тавих шаардлагатай юу, бусад хүмүүс хэр сонирхолтой гэж үзэж байгаа талаар таны хандлагыг мэдэхийг хүссэн юм? Өгүүллэг нь таны хувьд хор хөнөөлтэй/муу, эсвэл зүгээр л ашиггүй/хоосон үед тавих уу.
Миний бодлоор нийтлэл нь зөвхөн үнэлгээний өсөлт мэт харагдаж байна, учир нь:
1. Миний өгсөн төрлүүдийн тухай асуудлыг зохиогч ерөнхийдөө үл тоомсорлодог байсан ч олон тооны сэтгэгдэл бичихээс залхуураагүй байв.
2. Өгүүллэгт тодорхой алдаа гарсан байна: энэ нь цорын ганц арга зам гэж хэлсэн

V82 = Шинэ COMobject("V82.ComConnector"); Код = ContractorCOM.Code;


Гэхдээ би үүнийг дараах боловсруулалтын тусламжтайгаар тайван хийдэг.

Мэдэгдэл(Үндсэн. Лавлах. Эсрэг талууд. Нэрээр олох ("ХХК"). Код);


мөн бүх зүйл сайхан байна! Тэгээд би V82.ComConnector холболтыг сонгоно
Зохиолч өгүүлэлдээ онцолсон ийм асуудлуудыг агуулсан байхыг огтхон ч тоохгүй байгаа ч ямар нэгэн байдлаар хариу үйлдэл үзүүлэхгүй байгаа нь ямар нэг хачирхалтай.
3. Гэхдээ "Анги байхгүй" гэсэн алдаа гарч ирэхэд асуудал гарсаар байна
4. Гэхдээ 8.2 суулгаж, дараа нь 8.1 суулгасан үед асуудал гардаг - ердийн UT-BP солилцооны тусламжтайгаар OLE / COM-оор солилцохыг оролдоорой!
5. Эхлэгчдэд цаг алдахгүйн тулд OLE / COM-ээр дамжуулан бүх нийтээр холбогдох боломжийг олгодог сайт дээрх үндсэн боловсруулалтыг зааж өгнө үү, та тэдэнд зориулж бичээрэй! Дашрамд хэлэхэд, яагаад ч юм түүний зураг чамтай гайхагддаг, яагаад гэж? Үүний үр дүнд гавьяат дээр 2 үг, хөшигний ард 6 үг.

Ерөнхийдөө би чам руу шавар хаядаггүй, гэхдээ тодорхой цоорхойг зааж өгдөг боловч ямар ч хариу үйлдэл үзүүлэхгүй. Хэрэв энэ нь таны хуваалцсан туршлага юм бол энэ нь ямар нэгэн байдлаар алдаатай, бүрэн бус байна.
Хэрэв зохиогч бүх алдааг цуглуулах хүсэлтэй байсан бол тэр дор хаяж хэн нэгний туршлагыг сонсож, сэтгэгдлүүдийг нь няцаахгүй байх ёстой гэж хэлэх гэсэн юм. Уншсан хүн зохиолчоосоо илүү мэддэг, түүнд хэлдэг (заримдаа буруу), тэр ч бас эсэргүүцдэг нөхцөл байдал үүсдэг. Үүний үр дүнд бүх мэдээлэл нийтлэлд биш, харин тайлбарт байна! Хөгжилтэй! Энэ нь ихэвчлэн тохиолддог, гэхдээ тэр үед та хамгийн сайн сайхныг хүсч буй зүйлдээ амрах шаардлагагүй - би энэ нь хэрхэн илүү дээр болохыг харуулж байна, бусад хүмүүс үүнийг харуулдаг! Үүнийг нийтлэлд оруулаарай, энэ нь үнэ цэнэтэй байх болно, хүн бүр энэ мөргөлдөөнийг унших сонирхолгүй байдаг.


Түлхүүр үг: COM, холболт, гадаад, OLE, Автоматжуулалт, Холбох, ComConnector, Srvr

Өгөгдөл рүү нэвтрэхийн тулд 1C: Enterprise 8.0 COM холболтыг ашиглахдаа автоматжуулалтын серверийг ашиглахтай харьцуулахад дараахь давуу талуудтай.

  1. Тусдаа процесс үүсгэх шаардлагагүй тул холболтыг илүү хурдан тохируулна үйлдлийн систем, мөн бүх үйлдлийг дуудлагын процессын хүрээнд гүйцэтгэдэг;

  2. Давж заалдах шатны зохион байгуулалт нь процесс хоорондын харилцаа холбоог зохион байгуулах шаардлагагүй тул 1C: Enterprise объектын шинж чанар, арга барилд илүү хурдан нэвтрэх;
  3. Үйлдлийн системийн нөөцийн хэрэглээ бага.

Ерөнхийдөө COM холболтоор 1C: Enterprise 8.0-тэй ажиллах нь автоматжуулалтын серверийн горимд 1C: Enterprise-тэй ажиллахтай адил юм. Гол ялгаа нь дараах байдалтай байна.

  1. Автоматжуулалтын серверийн хувьд бүрэн хэмжээний 1C: Enterprise 8.0 програмыг ажиллуулж, COM холболтын хувьд харьцангуй жижиг процессын COM серверийг ажиллуулдаг.

  2. COM холболтоор ажиллах үед ажиллах боломжгүй функциональ байдал 1С: Enterprise 8.0 хэрэглэгчийн интерфейсийн зохион байгуулалттай холбоотой нэг арга зам;
  3. COM холболттой ажиллахдаа 1C: Enterprise 8.0 тохиргооны програмын модулийг ашигладаггүй. COM холболттой ажиллахад түүний үүргийг гадаад холболтын модуль гүйцэтгэдэг.

1.1 COM холболтыг хэрхэн бий болгох

COM холболтоор дамжуулан 1C: Enterprise 8.0 өгөгдөлд хандах хандалтыг зохион байгуулахын тулд дараах дарааллыг гүйцэтгэнэ.

  1. COM объектыг V8.COMConnector танигчаар үүсгэсэн бөгөөд түүний тусламжтайгаар холболтыг бий болгодог;

  2. өмнө үүсгэсэн V8.COMConnector объектын Connect аргыг дуудна. Connect арга нь COM холболтын объектын лавлагааг буцаана мэдээллийн бааз 1С: Аж ахуйн нэгж 8.0;
  3. хүлээн авсан COM холболтын объектоор дамжуулан дуудлага хийдэг хүлээн зөвшөөрөгдсөн аргууд, холболт үүсгэсэн мэдээллийн сангийн шинж чанарууд болон объектууд.

Чухал! COM холболтод хэрэглэгчийн интерфэйс байхгүй тул COM холболтод бүх объект, түүнчлэн шинж чанар, аргуудыг ашиглах боломжгүй байдаг.

1С: COM холболтоор гаднаас хандах боломжтой аж ахуйн нэгжийн объектууд:

  1. Экспортолсон хувьсагч ба гадаад холбоосын модулийн журам/функц

  2. Экспортолсон хувьсагч ба нийтлэг модулиудын процедур/функц
  3. Хуваалцсан модулийн шинж чанарыг тохируулах замаар бүхэл бүтэн модулиудыг оруулах, оруулахгүй байх

  4. Урьдчилан процессор ашиглан нийтлэг модулиудын фрагментуудыг оруулах, оруулахгүй байх
  5. Глобал контекст 1С: Enterprise 8.0, үйлчлүүлэгчийн програмтай хатуу холбоотой объектуудыг эс тооцвол (TextDocument, SpreadsheetDocument, ...)

1.2 Гадаад холболтын модуль

Өмнө дурьдсанчлан, COM холболтоор ажиллах үед хэрэглээний модулийн үүргийг гаднах холболтын модуль гүйцэтгэдэг. Энэ модуль нь AtStartSystemWork() ба AtShutdownSystem() үйл явдал зохицуулагчтай байж болох бөгөөд эдгээр нь холболтыг эхлүүлэх болон дуусгах үед гүйцэтгэх үйлдлүүдийг агуулж болно.

Процедурууд, функцууд болон гадаад нэгдсэн модульд тодорхойлсон глобал хувьсагчид түлхүүр үгЭкспорт нь хэрэглээний модулийн нэгэн адил дэлхийн контекстийн нэг хэсэг болдог.

1.3 Ерөнхий модулиуд

Нийтлэг модулиудын хувьд "Клиент", "Сервер" болон "Гадаад холболт" шинж чанаруудыг нэвтрүүлсэн. Эдгээр нь клиент-серверийн хувилбар болон COM холболтын горимд модулиудын хэрэглээг тохиргоонд тодорхойлох зорилготой юм.

1.4 "V8.COMConnector" объект

V8.COMConnector COM объектын шийддэг цорын ганц ажил бол 1C: Enterprise 8.0 мэдээллийн баазтай COM холболт үүсгэх явдал юм. V8.COMConnector объектын нэг тохиолдлоор хязгааргүй тооны холболт үүсгэж болно. V8.COMConnector объект нь нэг Connect аргатай COM тохиргоо-1С: Enterprise 8.0 мэдээллийн сантай холбогдох.

<СтрокаСоединенияИБ>

IB холболтын мөр нь Parameter=Value хэлбэрийн фрагментуудын хэлхээ юм. Фрагментууд нь бие биенээсээ ";" -ээр тусгаарлагдана. Хэрэв утга агуулагдаж байвал хоосон зайны тэмдэгтүүд, дараа нь давхар хашилтанд (") оруулах ёстой.

Нийтлэг параметрүүд:

usr - хэрэглэгчийн нэр;
pwd - нууц үг.

Файлын хувилбарт дараах параметрийг тодорхойлсон:

Файл - мэдээллийн сангийн лавлах.

Үйлчлүүлэгч-сервер хувилбарын хувьд дараах параметрүүдийг тодорхойлсон:

Srvr - 1C: Байгууллагын серверийн нэр;
Ref - сервер дээрх мэдээллийн сангийн нэр.

Холбох арга нь 1C: Enterprise 8.0 мэдээллийн сантай COM холболт үүсгэж, COM холболтын объектын лавлагааг буцаана.

// Холбогч объект үүсгэгдсэн
V8 = Шинэ COMObject("V8.COMConnector");
// COM холболтын объект үүсгэх
Холболт = V8.Connect("Файл=""c:\InfoBases\Trade""; Usr=""Захирал"";")

1.5 "COM холболт" объект

1C: Enterprise мэдээллийн баазтай COM холболт нь түүний дэлхийн контекстэд бүрэн нэвтрэх боломжийг олгодог ("Гүйцэтгэх контекст"-ийг үзнэ үү. програм хангамжийн модуль"). Тиймээс COM холболт нь өөрийн аргуудтай байж болно: системийн тогтмолууд, тохируулагч дээр заасан объектуудын утгууд, менежер ашиглан ханддаг (жишээлбэл, тогтмолууд, тооллого, лавлах, баримт бичиг, баримт бичгийн бүртгэл, тайлан, боловсруулалт, төрөл бүрийн төлөвлөгөө). шинж чанар, төлөвлөгөөний данс, тооцооны төрлийн төлөвлөгөө, регистр), түүнчлэн Экспортын түлхүүр үг бүхий гадаад холболтын модульд зарласан хувьсагчид.

Үүнээс гадна COM холболттой нэмэлт арга NewObject, үүний тусламжтайгаар та тодорхой төрлийн утгыг үүсгэж болно.

ts = Холболт. NewObject("ValueTable");

String method 1C:Enterprise утгуудын стринг дүрслэлийг авах боломжийг танд олгоно.

Харах = Connection.String(Data.UniqueIdentifier());

1.6. COM холболттой ажиллах онцлог

Автоматжуулалт болон COM холболт дээр TRUE ба FALSE нь -1 (хасах нэг) ба 0 гэсэн утгатай байна.

COM холболтын санг зохион байгуулах боломжтой. Үүний зэрэгцээ 1С: Enterprise сервер дээр ADVANCE дээр хост дээр хэд хэдэн COM холболтын объектууд үүсдэг бөгөөд шинэ объект үүсгэх шаардлагагүй тул холболт үүсгэхэд бүр бага хугацаа шаардагдана.

Асуулгын текстийг үүсгэхэд зориулагдсан шинэ Query Builder объект хэрэгжсэн заасан тохиргоо. Энэ объект нь хүснэгтийн баримт бичигт тайлан харуулах болон хэрэглэгчийн интерфейстэй холбоотой бусад ажлуудтай холбоогүй тайлан бүтээгчийн функцийг дэмждэг. Энэ объектыг 1С: Enterprise сервер болон COM холболтод ашиглаж болно.

1С: Enterprise сервер дээр суурилагдсан хэл ажиллаж байх үед COM объектуудыг ашиглах боломжтой.

COM алдааг 1C: Enterprise-ийн үл хамаарах зүйл болгон хөрвүүлдэг.

Хэрэв тохиргоо нь хүчингүй объект үүсгэхийг оролдвол, жишээ нь хүснэгтийн баримт бичиг, гадна холболтын модуль, ерөнхий модуль эсвэл объектын модульд, дараа нь COM холболтыг үл хамаарах зүйл болгон үүсгэж болохгүй.

Хэвлэх (Ctrl+P)

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

com холболт

Та 1С програмын хувьд хоёр төрлийн COM объект үүсгэж болно. Энэ бол холболтууд юм V83. Хэрэглээ болон com холболтууд V83.COM Холбогч . Тохиолдолд V83. Хэрэглээ 1С програмын бараг бүрэн хуулбарыг эхлүүлэв. Хэрэглэсэн тохиолдолд V83.COM Холбогчжижиг серверийн хэсэг ажиллаж байна. Энэ тохиолдолд ажлын хурд илүү өндөр боловч зарим функц ажиллахгүй байж магадгүй юм. Ялангуяа гадаад холболттой ажиллах шинж чанарыг тохируулаагүй маягт, нийтлэг модулиудтай ажиллах. Та голчлон ашиглах хэрэгтэй V83.COM Холбогчзөвхөн функциональ дутагдалтай тохиолдолд л V83. Хэрэглээ. Хурдны ялгаа нь ялангуяа том мэдээллийн сан дээр мэдэгдэхүйц байх болно. Платформын хувьд 8.2-г ашигладаг V82.Application эсвэл V82.COMConnector

OLE холболт үүсгэнэ үү

Холболт = Шинэ COMObject(“V83.Application” );

COM холболт үүсгэнэ үү

Холболт = Шинэ COMObject(“V83.COMConnector” );

Холболтын мөр

//Клиент-сервер сонголтын хувьд
StringConnection= “Srvr = “ “ServerName” “;Ref = “ “BaseName” ;
//Файлын горимын сонголтын хувьд:
StringConnection= "Файл = " "PathBase" “; Usr = Хэрэглэгчийн нэр; Pwd = Нууц үг";
оролдлого
Холболт = Холболт . Холбох(ConnectionString);
Үл хамаарах зүйл
Message = New MessageToUser;
Захиа . Текст = "Мэдээллийн санд холбогдож чадсангүй" + ТодорхойлолтАлдаа(); Захиа . Мэдээлэх();
EndTry;

Холболтыг таслах

Холболт = Тодорхойгүй;
Объектийн хувьд V83. Хэрэглээхолболтыг заавал салгах шаардлагатай, эс тэгвээс бүрэн бус сесс өлгөөтэй хэвээр байх бөгөөд дараа нь гараар устгах шаардлагатай болно. Тохиолдолд V83.COM ХолбогчХолболт хийгдсэн процедурын төгсгөлд холболт автоматаар зогсдог.Бас нэг жижиг мөч байна. Холболт хийж буй хэрэглэгчийн хувьд тохиргоон доторх "Хөтөлбөрийг хаахдаа баталгаажуулахыг хүсэх" нүдийг идэвхгүй болгох ёстой.

NewObject() арга

Шинэ объект үүсгэхийн тулд та NewObject() аргыг ашиглаж болно, жишээлбэл:

Учир нь V83.COM Холбогч

COM хүсэлт = Холболт. NewObject( "Хүсэлт") ;
TableCOM = Холболт. NewObject( "Үнийн хүснэгт") ;
ArrayCOM = Холболт. NewObject("Массив");

WidCOM = Connection.NewObject

Учир нь V83. Хэрэглээ

QueryOLE = Холболт. NewObject(" Хүсэлт") ;
TableOLE = Холболт. NewObject("Үнийн хүснэгт") ;
ArrayOLE = Connection.NewObject(“Массив”);
WidCOM = Connection.NewObject(“Өвөрмөц танигч”, StringUID);

COM хүсэлт . Текст ="СОНГО
| Байгууллагуудын байр суурь.
| Байгууллагын албан тушаал.Нэр
| FROM | Лавлах.Албан тушаалБайгууллага
Байгууллагын байр суурь”;

Үр дүн = RequestCOM. Гүйцэтгэх ();
Дээж = үр дүн. () сонгоно уу;
Сонгон шалгаруулалтын үеэр. Дараачийн()Цикл
EndCycle;
Та мөн тохиргооны объектын менежерүүдийг ашиглаж болно:
DirectoryCOM = Холболт. Лавлах номууд. DirectoryName;
DocumentCOM = Холболт. Баримт бичиг. Баримт бичгийн нэр;
RegisterCOM = Холболт. Бүртгэлийн мэдээлэл. Бүртгэлийн нэр;

COM холболтоор дугаар авах, харьцуулах

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

Enum элемент = Connection.Directories.Directory1.FindByCode(1).Attribute1;

PossibleValues ​​= EnumElement.Metadata().EnumValues;

EnumElementNumber = PossibleValues.Index(PossibleValues.Find(Connection.XMLString(EnumElement)));

Хэрэв EnumItemNumber = 0 бол мэдээлэх( "EnumValue1");

Бусад тохиолдолд EnumItemNumber = 1 Дараа ньТайлан("EnumValue2");

EndIf;

Объектыг COM-оор ID-аар авах

Тохируулгын объектын менежерүүдээр дамжуулан бид com объектыг авдаг, жишээлбэл:
DocumentCOM = Холболт. Баримт бичиг. Баримт бичгийн нэр;

Дараа нь бид өвөрмөц танигч мөрийг авна:

StringUID = Connection.string ( DocumentCOM.UniqueIdentifier())

ID = Шинэ Y өвөрмөц ID(StringUID);
ХАМТ linkByIdentifier = Documents[DocumentName].GetLink(Identifier);

Хэрэв та com объектыг ID-аар баримтаар олох шаардлагатай бол дараах байдлаар бичих хэрэгтэй.

WidCOM = Connection.NewObject(“UniqueIdentifier”,StringUID);
LinkByIdentifier = Connection.Documents[DocumentName].GetLink(UidCOM);