1s සිට com සම්බන්ධතාවය හරහා දත්ත ලබා ගැනීම. V8: COM සම්බන්ධතාවය. COM සම්බන්ධතාවය හරහා ගණන් බැලීම් ලබා ගැනීම සහ සංසන්දනය කිරීම

ප්‍රශ්නය: COM IE 11 භාවිතයෙන් අඩවියක් විග්‍රහ කිරීම


සුබ දිනක්.!
ප්රශ්නය වේදනාකාරී ලෙස හොඳින් දන්නා අතර, ඔබ වෙබ් අඩවියෙන් තොරතුරු ලබා ගත යුතුය. නමුත් සූක්ෂ්මතා තිබේ:
1. කෙලින්ම authorization page එකට යන්න විදියක් නෑ (මුලින්ම home page එකට ගිහින් LogIn ලින්ක් එක click කරලා authorization form එක අරන් ලොග් වෙන්න විතරයි).
2. ඔබ හරහා වෙබ් අඩවියට පිවිසිය යුතුය සෙවුම් තීරුවදත්ත සොයන්න, ඉන්පසු එය කියවා නැවත සොයන්න (දත්ත රුසියානු සහ ඉංග්‍රීසි භාෂාවෙන් විය හැකිය, එනම් සෙවීම සඳහා දත්ත රුසියානු භාෂාවෙන් නම්, ඔබ වෙබ් අඩවියේ “රුසියානු අනුවාදය” සෙවිය යුතු අතර මෙය තවත් සබැඳියකි වෙනත් පිටුවකට. ඉංග්‍රීසි සම්බන්ධයෙන්ද එයම ගැටලුවකි).

අවසානයේ:
- මුල් පිටුවට යන්න - ලොග් වන්න - දත්ත සොයන්න - (අවශ්‍ය නම්, වෙබ් අඩවියේ වෙනත් අනුවාදයකට යන්න) - එය ගන්න.

ගැටලුව:
සබැඳියක් අනුගමනය කරන විට "ලේඛන" දේපල තුළට දත්ත කියවනු නොලැබේ.
එය ස්ථාන දෙකකින් සිදු වේ:
- අපි ලොග් වීමට සබැඳිය අනුගමනය කරන විට (මෙය බොත්තමක් නොවේ, නමුත් සබැඳියක් පමණි);
- අපි වෙබ් අඩවියේ භාෂාව වෙනස් කරන විට (සබැඳියක් ද).

සටහන
අවසර ලබා දීමේ අදියරේදී සබැඳියක් අනුගමනය කිරීමට පෙර, ඔබට සබැඳියක් ලැබුනේ නම්, com වසා දමා IE.navigate("link") ක්‍රමය හරහා සංක්‍රමණය සමඟ එය නැවත විවෘත කළහොත්, "ලේඛන" දේපලෙහි දත්ත සාමාන්‍ය ලෙස යයි. නමුත් වෙබ් අඩවියේ භාෂාව වෙනස් කිරීමේදී ඔබට එකම දේ කිරීමට නොහැකි වනු ඇත, මන්ද ... මට නැවත ලොග් වීමට අවශ්‍ය වන අතර මට මෙම ගැටලුව හරියටම විසඳා ගැනීමට අවශ්‍ය නැත.

මෙන්න කේතය:

&සේවාදායක ක්‍රියාපටිපාටියේ SetWaitingIE(IE, SecondCall=False) IE නොවේ නම්.කාර්යබහුල නම් D = CurrentDate() + 3; D >= CurrentDate() Loop IE.Busy නම් Abort; නම් අවසන්; EndCycle; නම් අවසන්; IE.Busy Loop EndLoop අතරතුර; IE.ReadyState අතරතුර< 4 Цикл КонецЦикла; Попытка Если IE.Document.ReadyState = Null Тогда IE.Refresh(); УстановитьОжиданиеИЕ(IE); КонецЕсли; Пока IE.Document.ReadyState <>"සම්පූර්ණ" සයිකල් එන්ඩ් සයිකල්; ව්යතිරේකය SecondCall නම් ආපසු යන්න; වෙනත් සබැඳිය = IE.LocationURL; IE.Quit(); IE = GetCOM("InternetExplorer.Application"); IE.Navigate(Link); SetExpectIE(IE, True); නම් අවසන්; EndAttempt; EndProcedure &OnClient Function PerformUserAuthorization(IE, Link, Login, Password, Authorized=False, SC=0) උත්සාහ මූලද්‍රව්‍ය = IE.Document.GetElementsByName("පරිශීලක නාමය"); Elements.Length = 1 නම් Elements Loop එක සඳහා El.Value = Login; EndCycle; නම් අවසන්; මූලද්‍රව්‍ය = IE.Document.GetElementsByName("මුරපදය"); Elements.Length = 1 නම් Elements Loop එක සඳහා El.Value = Password; EndCycle; නම් අවසන්; IE.Document.GetElementById("ID").Click(); SetWaitingIE(IE); Authorized = True; ව්‍යතිරේකයක් නම් CN > 3 එවිට වැරදි ලෙස ආපසු යන්න; නම් අවසන්; IE.Quit(); IE.Navigate(Link); SetWaitingIE(IE); MF = MF + 1; PerformUserAuthorization (IE, Link, Login, Password, SCH) නම් Return True; නම් අවසන්; EndAttempt; ආපසු පැමිණීමේ අවසරය; EndFunction &OnClient Procedure Upload(Command) SpTables = GetListTablesForUpload(); SpTables = False නම් ආපසු යන්න; නම් අවසන්; IE = GetCOM("InternetExplorer.Application"); SpTable.SOURCE_LIST සිට එක් එක් පේළිය සඳහා සයිකල් RA = Row.ID; සම්පත් = String.RESOURCE; IE.Navigate(සම්පත්); SetWaitingIE(IE); පේළිය නම් උත්සාහ කරන්න.NEW_PAGE_IN_LOGIN = 1 එවිට පන්ති = IE.Document.GetElementsByClassName("ClassName"); Classes.Length = 1 නම් එක් එක් පන්තිය සඳහා Classes වෙතින් Loop Resource = Class.All(0).Href; ගබ්සා කරන්න; EndCycle; උත්සාහ කරමින් IE.Quit(); IE = IE.Navigate(සම්පත්); SetWaitingIE(IE); ව්‍යතිරේක වාර්තාව("" +String.NAME + "" අඩවියට සම්බන්ධ වීම අසාර්ථක විය!"); ගබ්සා කරන්න; EndAttempt; එසේ නොමැතිනම් වාර්තා කරන්න("" +String.NAME + "" අඩවියට සම්බන්ධ වීම අසාර්ථක විය!"); ගබ්සා කරන්න; නම් අවසන්; නම් අවසන්; UserAuthorization (IE, Resource, String.LOGIN, String.PASSWORD) සිදු නොකරන්නේ නම්, පසුව වාර්තා කරන්න ("" + String.NAME + "" අඩවියේ පරිශීලක අවසරය සම්පූර්ණ කර නොමැත!"); ගබ්සා කරන්න; නම් අවසන්; සම්පත් = IE.LocationURL; පුද්ගලයන්ගේ ලැයිස්තුව = SpTable.FACE_CODES.FindLines(නව ව්‍යුහය("මූලාශ්‍රය", RA)); ListNotFound = නව අරාව; පුද්ගලයන්ගේ ලැයිස්තුවෙන් එක් එක් පුද්ගලයා සඳහා චක්‍ර PersonName = පුද්ගලයා.NAME_IN_SITE; මෙය රුසියානු = අක්ෂර කේතය (පුද්ගල නාමය, 1) >= 1040; TechResource = ?(මෙය රුසියානු, StrReplace(Resource, "en_US", "ru_RU"), StrReplace(Resource, "ru_RU", "en_US")); TekResurs නම්<>IE.LocationURL පසුව RootClasses = IE.Document.GetElementsByClassName("ClassName"); RootClasses.Length = 1 නම් RootClass වලින් සෑම RootClass සඳහාම Loop Classes = RootClass.Children; ගබ්සා කරන්න; EndCycle; AmGroup = False; RuGroup = False; පන්ති ලූපයෙන් සෑම පන්තියක් සඳහාම HPreg(Class.ClassName) = "dropdown-header" එවිට AmGroup = Find(Class.InnerText, "Americans") > 0; RuGroup = Find(Class.InnerText, "යුරෝපය") > 0; වෙනත් නම් HPreg(Class.ClassName)<>"තෝරාගත්" පසුව AmGroup සහ Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 එවිට IE.Navigate(පන්තිය) .සියල්ල (1).Href); SetWaitingIE(IE); ගබ්සා කරන්න; නම් අවසන්; නම් අවසන්; EndCycle; නම් අවසන්; නම් අවසන්; IE.Document.GetElementById("ID").Value = PersonName; FindButton = IE.Document.GetElementById("ID"); FindButton.Focus(); FindButton.Click(); SetExpect (IE) කිරීමට උත්සාහ කිරීම; //ලැබුණු දත්ත පරිපථය ExceptionListNotFound.Add(Person); දිගටම කරගෙන යන්න; EndAttempt; EndCycle; ව්යතිරේක වාර්තාව("දෝෂය:" + සංකේත.PS + ErrorDescription()); ගබ්සා කරන්න; EndAttempt; EndCycle; IE.Quit(); ක්රියා පටිපාටියේ අවසානය

පිළිතුර:

මාතෘකාව ඉතා සිත්ගන්නා සුළුය, නමුත් පුද්ගලිකව, අවාසනාවකට මෙන්, මෙම ගැටළුව කෙසේ හෝ තේරුම් ගැනීමට මට අත්දැකීමක් හෝ අවස්ථාවක් නොමැත. ඔබට මෙම මාතෘකාව පිළිබඳ තොරතුරු සොයාගත හැකි නම්, කරුණාකර එය බෙදා ගන්න.
--- සංගමයක්පණිවිඩ, 2016 අප්රේල් 29 ---

මට තේරෙන විදියට SQl database එකට ප්‍රවේශයක් නැද්ද?

--- පණිවිඩ ඒකාබද්ධ කිරීම, 2016 අප්රේල් 29 ---

හොඳයි, විග්‍රහ කරන්නේ නම්, කුමන ආකාරයේ ප්‍රවේශයක්ද?

ප්‍රශ්නය: COM සම්බන්ධතාවය 1C 8.3 - 1C 8.3 සම්බන්ධතාවයේ නිදොස්කරණය ඇතුළු කළ හැකිද?


8.3.6 (BP 3.0) වේදිකාවේ ඇති එක් දත්ත ගබඩාවක සිට ස්වයං-ලිඛිත දත්ත සමුදායක බාහිර සම්බන්ධතා මොඩියුලයට (එමෙන්ම ක්‍රියාත්මක වන) සැකසුම් භාවිතයෙන් COM සම්බන්ධතාවයක් හරහා සම්බන්ධ වන විට එය දෝෂහරණය කළ හැකිද යන්න සංසදයේ සාමාජිකයින්ගෙන් ඇසීමට මට අවශ්‍ය විය. වේදිකාවේ 8.3.6) සහ සැකසුම් භාවිතයෙන් ක්‍රියා පටිපාටි වලින් අපනයන අමතන්න? දත්ත සමුදායන් දැනට ගොනු මත පදනම් වන අතර ඒවා එක් පරිගණකයක පිහිටා ඇත, නමුත් සේවාදායක අනුවාදයක් සැලසුම් කර ඇත. මෙම කාලය වන තුරු, COM සම්බන්ධතාවයක් හරහා ක්‍රියාත්මක කිරීම සඳහා අත්තනෝමතික කේතය සම්ප්‍රේෂණය කිරීමට මෙන්ම දෝෂ ලොග් කිරීමට මම පහත ඉදිකිරීම් භාවිතා කළෙමි. බාහිර සම්බන්ධතා මොඩියුලයේ ස්වයං-ලිඛිත දත්ත ගබඩාවේ ක්‍රියා පටිපාටිවල කොටස් මෙන්න:

Function ExecuteIn(CodeExecute, Auxiliary Parameter = "") අපනයනය
ආරක්ෂක පරීක්ෂාව (); // වෙනත් පරිශීලකයෙකු වෙනුවෙන් බාහිරව සම්බන්ධ වන විට අනිෂ්ට කේතය ක්‍රියාත්මක කිරීමට දරන උත්සාහයන්ට එරෙහිව ආරක්ෂාවපිළිතුර = "0" //කිසිවක් ආපසු නොදිය යුතු නම්, කේතයේ දෝෂ නොමැති නම්  //ආපසු හරි යයි  //නිසා සම්ප්‍රේෂණය කරන ලද කේතය දෝෂ අඩංගු විය හැකිය, එවිට අපි එය ක්‍රියාත්මක කිරීම උත්සාහයකින් ආවරණය කරන්නෙමු.ක්‍රියාත්මක කිරීමට උත්සාහ කරන්න (CodeExecute); // COM සම්බන්ධතාවයක් හරහා වෙනත් පරිගණකයක තන්තුවක් ලෙස කේතය ක්‍රියාත්මක කරන්න (Libra Base External Connection Module)ව්යතිරේක   //දෝෂයක් තිබේ නම්, එහි පෙළ ආපසු එවන්නප්‍රතිචාරය = ErrorDetailView(ErrorInfo()); EndAttempt ; ආපසු පිළිතුර; EndFunction Function TestConnection(InParameter, OutParameter) ExportSecurityCheck(); // වෙනත් පරිශීලකයෙකු වෙනුවෙන් බාහිරව සම්බන්ධ වන විට අනිෂ්ට කේතය ක්‍රියාත්මක කිරීමට දරන උත්සාහයන්ට එරෙහිව ආරක්ෂාව. OutParameter = "COM සම්බන්ධතාවය හරහා පරිමාණ පදනම සමඟ සම්බන්ධයක් තිබේ!"; Return True ; අවසන් කාර්යය
BP 3.0 සිට මම පහත කොටස ක්‍රියාත්මක කරමි:
උත්සාහය
Com = නව COMObject("V83.COMConnector"); Connection = Com.Connect ("File=""C:\1 c\Base_1C\Libra""; Usr=""ComExchange""; Pwd=""1"";"); TellUser("පරීක්ෂණය සමත් විය! පරිමාණ දත්ත ගබඩාවට සම්බන්ධයක් ඇත"); ව්යතිරේක දෝෂය = ErrorDetailView(ErrorInfo()); TellUser("Libra පදනමට COM සම්බන්ධතාවයක් නොමැත! විස්තර"+දෝෂය); Com=අනිශ්චිත ; ආපසු ; EndAttempt ; පිටතට = ""; තුළ = "1"; Connection.Communication Test(In, Out) නම් TellUser("පරිමාණ වින්‍යාසය සහිත සන්නිවේදන පරීක්ෂණය සාර්ථකයි! පිළිතුර: "+Out); එසේ නොමැතිනම් TellUser("පරිමාණ වින්‍යාසය සමඟ සන්නිවේදන පරීක්ෂණය අසාර්ථක විය! පිළිතුර: "+Out); නම් අවසන් ;
ඇත්ත වශයෙන්ම, Execute(CodeString1C8) ක්‍රියාකරුට ඇතුළු වීමට නොහැකි වනු ඇති බව මට වැටහී ඇත, නමුත් දුරස්ථ මොඩියුල ක්‍රියා පටිපාටියක් ඇමතීමේ දී එවැනි හැකියාවක් තිබේද? බාහිර සම්බන්ධතාවයප්‍රධාන දත්ත සමුදායෙන් Connection.TestConnections(In, Out) ඔවුන්ගේ ඇමතුම් ක්‍රියාපටිපාටියේ ආරක්‍ෂක පරීක්‍ෂාව() ශ්‍රිතයේ එම debugger සැසිය තුළ එහි කේතය ඇතුළත් කිරීමටද?
මම දැනටමත් මෙම ගැටලුව සම්බන්ධයෙන් සොයා ගත හැකි ලියකියවිලි දෙස බැලුවෙමි. මම වින්‍යාස දෙකෙහිම සෑම තැනකම නිදොස්කරණය සහ බිඳීම් සක්‍රීය කිරීමට විකල්ප සකස් කළෙමි. මම වින්‍යාසකරුවන් දෙකම දියත් කළෙමි.
බාහිර සම්බන්ධතා මොඩියුලයේ පැත්තෙන් ආරක්ෂක චෙක්පත් () ක්‍රියා පටිපාටිය තවදුරටත් දෝෂහරණය කිරීමට මෙම තත්වය තුළ පවා හැකිද?

ප්රශ්නය: COM සම්බන්ධතාවයේ වැරදි IP ලිපිනය


සේවාදායකයන් අතර V83.ComConnector හරහා ලේඛන මාරු කරන සැකසුම් ඇත. Server 1 (1C අනුවාදය 8.2.19.90) සැමවිටම Server 2 වෙත සම්බන්ධ වේ (8.3.8.2033 අනුවාදය). සම්බන්ධතා රේඛාවේ සේවාදායකය 2 හි IP ලිපිනය අඩංගු වූ අතර සියල්ල හොඳින් ක්‍රියාත්මක විය. සර්වර් 1 හිදීම මම ස්ථාපනය කරන ලද වේදිකාව සේවාදායකය 2, අනුවාදය 8.3.9.2033 ලෙස ද දුටුවෙමි (මෙය වැදගත් නම්).

ගැටළුව වන්නේ සර්වර් 2 හි IP ලිපිනය වෙනස් වීම, ක්‍රියාකාරීත්වය ක්‍රියා කිරීම නැවැත්වීම සහ මම සම්බන්ධතා රේඛාවට නව IP එකක් ඇතුළු කළ විට, සැකසුම් දෝෂයක් ඇති කරයි, එහි විස්තරය තවමත් පැරණි IP (!) සහ පෙළ වේ. “සම්බන්ධතාවයක් ඇති කර ගැනීමට ගත් උත්සාහය අසාර්ථක වූයේ, අවශ්‍ය ප්‍රතිචාරය අවශ්‍ය කාලය තුළ වෙනත් පරිගණකයකින් නොලැබීම නිසා හෝ ස්ථාපිත සම්බන්ධතාවයදැනටමත් සම්බන්ධිත පරිගණකයකින් වැරදි ප්‍රතිචාරයක් නිසා."

ඔවුන් සියල්ල නැවත ආරම්භ කළා, හැඹිලි ඉවත් කළා යනාදිය, පරිපාලකයින් දිවුරනවා ඔවුන්ගේ පැත්තෙන් සියල්ල හරි බව, ඔබට RDP හරහා එක් සේවාදායකයකින් තවත් සේවාදායකයකට ලොග් විය හැකිය.

කුමක් විය හැකිද, එය විසඳන්නේ කෙසේද? මම අන්තර්ජාලය පුරා බැලූ අතර එවැනි තත්වයක් සොයාගත නොහැකි විය!

පිළිතුර:() 100% විශ්වාසයි! මම උත්සාහ කරන දෙවන දිනයේ, මම ලිවූ පරිදි, මම එය දෝශ නිරාකරණ යන්ත්‍රයකින් බලමි, සම්බන්ධතා පරීක්ෂණයක් සඳහා මම මෝඩ තනි සෛල සැකසීමක් පවා නිර්මාණය කළෙමි, එම දෝෂය මතු වේ, එපමණයි

ප්රශ්නය: විවිධ අනුවාද සඳහා COM සම්බන්ධතාවය


ආයුබෝවන් සියල්ලටම.
මා සතුව විවිධ දත්ත සමුදායන්ගෙන් විවිධ දත්ත රැස්කර සෑම දෙයක්ම එක ගොඩකට ගෙන එන “ඒකාබද්ධ කිරීම” දත්ත සමුදායක් ඇත. ගැටලුව වන්නේ ඔබ මෙම දත්ත සමුදායන් වෙත com හරහා සම්බන්ධ වීමට අවශ්‍ය වීමයි, නමුත් ඒවා විවිධ අනුවාදයන් බැවින් අවසානයේ මට එවැනි දෝෂයක් ලැබේ.
සම්බන්ධතා දෝෂය!(ExternalProcessing.TransferHistory.Form.Form.Form(12)) : සන්දර්භය ක්‍රමය ඇමතීමේ දී දෝෂයක් (සම්බන්ධ කරන්න) : ව්‍යතිරේකයක් සිදු විය (V83.COMConnector. 1 ) : සේවාලාභියා සහ සේවාදායක අනුවාද 1 C:Enterprise අතර නොගැලපීම අනුවාද වෙනස් වන අතර සේවාදායකය (8.3. 8.1964 - 8.3. 6.2332), සේවාදායක යෙදුම: COM සම්බන්ධතාවය

මම එක් සම්බන්ධතාවයක් සකස් කළෙමි, තවත් එකක් වැටේ ...

කෙසේ හෝ, සංරචක සේවාව හරහා, ඔබට එක් එක් අනුවාදය සඳහා "ඔබගේම පන්ති (සම්බන්ධක)" නිර්මාණය කළ හැකි බව මම දනිමි, පසුව පන්තියේ වේදිකා අනුවාදයට අනුරූප වන නව COM වස්තුවක් නිර්මාණය කළ හැකිය ... සමහර විට මම වැරදියි.

මට මේ ප්‍රශ්නෙන් ගොඩ එන්න උදව් කරන්න...

පිළිතුර:එච්චරයි... මම ප්‍රශ්නය අයින් කරන්නම්..

ප්‍රශ්නය: Com පිරවීම සැකසීමේ දෝෂයකි


ආයුබෝවන්.
8.2 සිල්ලර 1.
මම 8.1 ට සම්බන්ධ කරන්නේ සාමාන්‍ය conf එකක් නොවේ.
මම කොම් හරහා දත්ත සමුදායට සම්බන්ධ වී ලේඛනයක් සෑදීමට උත්සාහ කරමි, නමුත් “CreateDocument()” හෝ “GetObject()” ඇමතීමෙන් ක්‍රියා පටිපාටියේ දෝෂයක් ඇතිවේ. සැකසුම් පිරවීම. fig බලන්න.

මම 8.1 දත්ත සමුදාය තුළම එකම දේ උත්සාහ කරමි, නමුත් කිසිදු දෝෂයක් නොමැති අතර, මම ද පිරවුම් සැකසුම් ඇතුළත් නොකරමි.
වැරදි විය හැක්කේ කුමක් ද?

පිළිතුර: turboq, වංක ලෙස ලියා ඇති ලේඛන මොඩියුලයක්!

මිනිත්තු 5 කට පසුව එකතු කරන ලදී
ඇය කැඳවනු නොලැබේ! ඇය සම්පාදනය කිරීමට උත්සාහ කරයි! නමුත් ComConnector හරහා සම්බන්ධ වන විට Dialog Mode ගැටළුව නොපවතී, ලේඛන මොඩියුලය සම්පාදනය කළ නොහැක.
එවැනි අවස්ථාවන් සඳහා, වස්තු මොඩියුලයක සංවාදයක් සමඟ වැඩ කිරීමට අවශ්‍ය වූ විට, ප්‍රොසෙසරයට උපදෙස් භාවිතා කරන්න

මෙය ඔබගේ වැරැද්දක් නොව, ඔබ සම්බන්ධ කරන දත්ත ගබඩාවේ ලේඛන මොඩියුලයේ දෝෂයකි.

දත්ත සමුදාය තුළ, කේතය සේවාදායකයා මත ක්‍රියාත්මක වන අතර සංවාද මාදිලියක් ඇත, එබැවින් සෑම දෙයක්ම දෝෂයකින් තොරව සිදු වේ.

සම්බන්ධතාවය සඳහා ComConnector, V8.Application භාවිතා නොකරන්න, එවිට අතුරු මුහුණත දේවල් ඔබට ලබා ගත හැක.

මිනිත්තු 5 කට පසුව එකතු කරන ලදී
=======================================================================================================================
බාහිර සම්බන්ධතාවයේ විස්තරයෙන් (SP) ComConnections ගැන ඔබ කියවිය යුතු දේ මම තද අකුරින් උද්දීපනය කළෙමි

විස්තර:

සාමාන්‍යයෙන්, බාහිර සම්බන්ධතාවයක් හරහා 1C: Enterprise 8 සමඟ වැඩ කිරීම 1C: Enterprise සමඟ සේවාදායක ස්වයංක්‍රීය මාදිලියේ වැඩ කිරීමට සමාන වේ. ප්රධාන වෙනස්කම් පහත පරිදි වේ:

  • ස්වයංක්‍රීය සේවාදායකයක් සම්බන්ධයෙන්, සම්පූර්ණ 1C: ව්‍යවසාය 8 යෙදුමක් දියත් කරනු ලබන අතර, බාහිර සම්බන්ධතාවයකදී, ක්‍රියාවලිය තුළ සාපේක්ෂව කුඩා COM සේවාදායකයක් දියත් කෙරේ.
  • බාහිර සම්බන්ධතාවයක් හරහා වැඩ කරන විට ලබා ගත නොහැක ක්රියාකාරිත්වය, 1C:Enterprise 8 පරිශීලක අතුරුමුහුණත සංවිධානයට සම්බන්ධ එක් ආකාරයක් හෝ වෙනත්;
  • බාහිර සම්බන්ධතාවයක් ධාවනය කරන විට, කළමනාකරණය කරන ලද යෙදුම් මොඩියුලය (මොඩියුලය නිතිපතා යෙදුම) වින්‍යාසය 1C: ව්‍යවසාය 8. බාහිර සම්බන්ධතාවයක් සමඟ වැඩ කිරීමේදී එහි කාර්යභාරය බාහිර සම්බන්ධතා මොඩියුලය මගින් ඉටු කරයි.
බාහිර සම්බන්ධතාවයක් භාවිතා කරන විට, ස්වයංක්‍රීය සේවාදායකයක් භාවිතා කිරීමට සාපේක්ෂව පහත වාසි ඇත:
  • වෙනම ක්‍රියාවලියක් නිර්මාණය කිරීමට අවශ්‍ය නොවන බැවින් වේගවත් සම්බන්ධතා සැකසුම මෙහෙයුම් පද්ධතිය, සහ සියලු ක්රියාවන් ඇමතුම් ක්රියාවලිය තුළ සිදු කරනු ලැබේ;
  • 1C හි ගුණාංග සහ ක්‍රම වෙත වේගවත් ප්‍රවේශය: ව්‍යවසාය වස්තු, ප්‍රවේශයක් සංවිධානය කිරීමට අන්තර් ක්‍රියාවලි සන්නිවේදනය අවශ්‍ය නොවන බැවින්;
  • මෙහෙයුම් පද්ධති සම්පත් අඩු පරිභෝජනය.
බාහිර සම්බන්ධතාවයක් හරහා 1C: Enterprise 8 දත්ත වෙත ප්‍රවේශය සංවිධානය කිරීම සඳහා, පහත ක්‍රියා අනුපිළිවෙල සිදු කරනු ලැබේ:
  • COM සම්බන්ධතා කළමනාකරු නිර්මාණය කර ඇති අතර, එහි ආධාරයෙන් සම්බන්ධතාවය ස්ථාපිත කර ඇත;
  • COM සම්බන්ධතා කළමනාකරුගේ සම්බන්ධක ක්රමයට ඇමතුමක් ලබා ගනී. Connect ක්‍රමය මඟින් බාහිර සම්බන්ධතාවයක් ලබා දෙයි තොරතුරු පදනම 1C: ව්යවසාය 8;
  • බාහිර සම්බන්ධතාවයක් හරහා, සම්බන්ධතාවය ස්ථාපිත කර ඇති තොරතුරු පදනමේ වලංගු ක්‍රම, ගුණාංග සහ වස්තූන් වෙත ප්‍රවේශය සිදු කෙරේ.
වැදගත්! පරිශීලක අතුරුමුහුණතක් නොමැතිකම නිසා, බාහිර සම්බන්ධතාවයක සියලුම වස්තූන්, ගුණාංග සහ ක්රම භාවිතා කළ නොහැක.
පිටත එකතුව සපයයි සම්පූර්ණ ප්රවේශයඑහි ගෝලීය සන්දර්භයට. එබැවින්, එහි ක්‍රම ලෙස බාහිර සම්බන්ධතාවයක් තිබිය හැකිය: පද්ධති නියතයන්, වින්‍යාසකරු තුළ දක්වා ඇති වස්තූන්ගේ අගයන්, කළමනාකරුවන් භාවිතයෙන් සිදු කරනු ලබන ප්‍රවේශය (උදාහරණයක් ලෙස, නියතයන්, ගණන් බැලීම්, නාමාවලි, ලේඛන, ලේඛන ලඝු-සටහන්, වාර්තා , සැකසීම, ලක්ෂණ වර්ගවල සැලසුම්, ගිණුම් ප්‍රස්ථාර , ගණනය කිරීමේ ආකාරයේ සැලසුම්, රෙජිස්ටර්), මෙන්ම අපනයන මූල පදය සමඟ බාහිර සම්බන්ධතා මොඩියුලයේ ප්‍රකාශිත විචල්‍යයන්.

පවතින බව:

අනුකලනය.

ප්රශ්නය: COM සම්බන්ධතාවය, ලක්ෂණ ආකාරයේ සැලැස්ම


කර්තව්‍යය වන්නේ COM සම්බන්ධතාවයක් හරහා ලාක්ෂණික වර්ගවල දන්නා සැලැස්මක නව මූලද්‍රව්‍යයක් වැඩසටහන්ගතව නිර්මාණය කිරීමයි. සම්බන්ධතාවය ස්ථාපිත කර ඇත, මෙහි සියල්ල හොඳයි.

මම ලියන්නේ මෙහෙමයි.

TypeDescriptionTech = New TypeDescription("DirectoryLink. Counterparties"); PurposeProperties = සම්බන්ධතාවය. ලක්ෂණ වර්ගවල සැලසුම්. වස්තූන්ගේ කාණ්ඩවල ගුණාංගවල අරමුණු. FindByName("නාමාවලිය "පුද්ගලයින්""); NewElement = සම්බන්ධතාවය. ලක්ෂණ වර්ගවල සැලසුම්. වස්තු ගුණාංග. CreateItem (); නව මූලද්රව්යය. නම = දේපල නම; නව මූලද්රව්යය. දේපල පැවරීම = දේපල පැවරීම; නව මූලද්රව්යය. ValueType = DescriptionTypesTech;

අන්තිම පේළිය වැඩ කරන්නේ නැහැ. මෙය තේරුම් ගත හැකි ය, එය 1C ක්‍රියාත්මක වන දත්ත සමුදාය සඳහා එවැනි වර්ගයක් සොයා ගනී, නමුත් අමුණා ඇති දත්ත සමුදාය සඳහා මට වර්ගයක් අවශ්‍ය වේ. එය ලබා ගන්නේ කෙසේද?

මගේ අනුවාදයේ, "අභිරුචි ලැයිස්තුව" අගය සහිත මූලද්රව්යයක් සරලව නිර්මාණය කර ඇත. එය ප්රතිපත්තිමය වශයෙන් ක්රියා කරයි, නමුත් කෙසේ හෝ කැතයි.

වේදිකාව 8.3. COM සම්බන්ධතාවයක් පූර්ව අවශ්යතාවකි. එහි භාවිතයෙන් තොරව විසඳුම් උනන්දුවක් නොදක්වයි.

පිළිතුර:

රෝල්ස්. ස්තූතියි, එය වැඩ කළා.

ප්රශ්නය: COM සම්බන්ධතාවය. විමසුම් පරාමිති ගැටළුව


සුබ දිනක්.
COM සම්බන්ධතාවය හරහා ඉල්ලීමේ ගැටලුවක්.

Perem TK; ArrayItems = COM.NewObject("Array"); TZNomenclature චක්‍රයේ එක් එක් රේඛාව සඳහා නාමකරණය = COM.Directories.Nomenclature.GetLink(COM.NewObject("UniqueIdentifier", Abbr(String.Nomenclature.Identifier))); නාමකරණය Array.Add(නාමකරණය); EndCycle; ArrayItems නම්.Quantity()<>0 එවිට Request = COM.NewObject("ඉල්ලීම"); Request.Text = "වරණ මිල = &වර්ගය මිල |සහ ඉන්වෙන්ටරි ඉන්වෙන්ටරි B ( &නාමකරණය) |සහ ඉන්වෙන්ටරි සහ ද්‍රව්‍ය.මෙම සමූහය = අසත්‍ය |සහ රෙජිස්ට්‍රාර් සබැඳි ලේඛනය. විකුණුම් මිල නියම කිරීම) AS නාමකරණය මිලSliceLast"; Request.SetParameter("අයිතම අරාව", අයිතම අරාව); Request.SetParameter("DataDoc", EndDay(ParametersStructure.DataDoc)); Request.SetParameter("PriceType", COM.Directories.PriceTypes.GetRef(COM.NewObject("UniqueIdentifier", ParameterStructure.PriceType.Identifier))); TZ = COM.NewObject("අගය වගුව"); TK = Request.Run().Upload(); එසේ නොමැතිනම් TK = New ValueTable; TK.Columns.Add("නාමකරණය"); TK.Columns.Add("මිල"); TK.Columns.Add("ප්‍රතිශතය"); TK.Columns.Add("VAT අනුපාතය"); නම් අවසන්;

ගැටළුව නිශ්චිතවම අයිතමය හෝ අයිතම මාලාවක් සමඟ වේ; ඔබ ඒවා පරාමිතියක් ලෙස සකසන්නේ නම්, ඉල්ලීම හිස් මිලක් ලබා දෙයි; ඔබ මෙම පරාමිතිය කිසිසේත් සඳහන් නොකරන්නේ නම්, ඉල්ලීම නිවැරදි දත්ත ලබා දෙයි.
එම බාහිර දත්ත ගබඩාවේ විමසුම් කොන්සෝලය තුළ, සෑම දෙයක්ම ගැටළු නොමැතිව සකසනු ලැබේ.
වැරදි විය හැක්කේ කුමක් ද?

පිළිතුර:

VremTable හරහා එය කිරීමට උත්සාහ කරන්න. තීරු resp සමඟ අගයන් වගුවක් සාදන්න. වැනි, එය පුරවන්න, එය ඉල්ලීම තුලට ඇද දමන්න, ඉන්පසු අභ්යන්තර සම්බන්ධතාවයක් සමඟ එය යොදන්න.

ප්‍රශ්නය: ගොනු දත්ත සමුදායේ සිට ගොනු දත්ත ගබඩාවට Com සම්බන්ධතාවය


සුභ උදෑසනක්. මා සතුව 8.3 ගොනු දත්ත සමුදායක් ඇත, එයින් මම com සම්බන්ධතාවයක් භාවිතයෙන් වෙනත් ගොනු දත්ත සමුදායකට සම්බන්ධ වීමට උත්සාහ කරමි:

නාමාවලිය = "C:\Users\1C\Workflow (test)"; පරිශීලක = "පරිපාලක"; මුරපදය = ""; සම්බන්ධතා පරාමිතීන් = "ගොනුව = "+ ඩිරෙක්ටරි +"; Usr = "+ පරිශීලක +"; Pwd = "+ මුරපදය+";"; V83 = නව COMObject("V83.COMConnector"); උත්සාහ සම්බන්ධතාවය = V83.Connect (සම්බන්ධතා පරාමිතීන්); ව්යතිරේක වාර්තාව ("ලේඛන ප්රවාහයට සම්බන්ධ විය නොහැක!"); EndAttempt;


දෝෂ විස්තරයකින් තොරව ව්යතිරේකයක් දමනු ලැබේ.
දත්ත සමුදායන් දෙකම 8.3 හි දියත් කිරීමට බල කෙරේ. නාමාවලිය සහ පරිශීලකයා නිවැරදිව සඳහන් කර ඇත. හේතුව කුමක් විය හැකිද?

පිළිතුර:

මම කේතයේ V82 = නව COMObject (" රේඛාව ලියන්නෙමි. V83.COMConnector");සහ ඉතිරි කේතය වෙනස්කම් නොමැතිව පහත පරිදි වේ.

මූලාශ්‍ර සහ ගමනාන්ත වේදිකාවල අනුවාද වෙනස් වූ විට දෝෂයක් ඇතිවේ.

පුස්තකාලයේ කුමන අනුවාදය ලියාපදිංචි කළ යුතුද සහ එය ලියාපදිංචි කළ යුත්තේ කොතැනද යන්න පැහැදිලි නැත.

මම හිතන්නේ මට පුස්තකාලය ලියාපදිංචි කිරීමට අවශ්‍යයි, අනුවාදය 8.2.18.61, මම මෙය කරන්නේ bat ගොනුවක් හරහා

regsvr32 /n /i:user "C:\Program Files (x86)\1cv82\8.2.18.61\bin\comcntr.dll"
විරාමයක්

msk-test1c:1641 -- මෙය සේවාදායකය 8.3.5.1098 වේ
V82 = නව COMObject("V82. COMConnector"); වාර්තාව ("ගිණුම්කරණය 3.0 වෙත සම්බන්ධ කරන්න..."); උත්සාහ සම්බන්ධය = V82. සම්බන්ධ කරන්න ("srvr = ""msk- test1c:1641""; ref = ""db_test""; usr = ""පරිපාලක""; pwd = ""123"""); දැනුම් දෙන්න ("Hurray සම්බන්ධතාවය ස්ථාපිත කර ඇත!"); ව්යතිරේක වාර්තාව ("දත්ත සමුදායට සම්බන්ධයක් නැත!"); වාර්තාව(දෝෂ විස්තරය()); // තොරතුරු = දෝෂය පිළිබඳ තොරතුරු(); // වාර්තාව ("විස්තරය= "" + තොරතුරු. විස්තරය + """); // වාර්තාව ("ModuleName= "" + Info.ModuleName + """); // වාර්තාව ("LineNumber=" + Info.LineNumber); // වාර්තාව ("SourceLine= "" + Info.SourceString + """); ආපසු පැමිණීම; අවසන් උත්සාහය;

පුස්තකාලය, සේවාදායකයා මත, 8.2 සේවාදායකයේ, 8.3 සේවාදායකයේ ලියාපදිංචි කළ යුත්තේ කොතැනින්ද? පහත රූපය.
(සේවාදායක-සේවාදායක අනුවාදය සඳහා සහ 1C දත්ත ගබඩාවේ ගොනු අනුවාදය සඳහා)

පිළිතුර:වෙබ් සේවාවක් හරහා එක් ටර්මිනලයක් සමඟ සන්නිවේදනය කිරීමේ කාර්යයක් තිබුණි. පදනම, හොඳයි, අපි සැහැල්ලු බර කියමු. එසේම 0.5 හෝ වේගවත්ද?

කියන්න අමාරුයි - මට ප්‍රමාණවත් දත්ත නැහැ. අපි තත්පර 0.5 කින් සතුටු වුණා, තෙවන පාර්ශ්ව යන්ත්‍රයක අනවශ්‍ය 1C සේවාදායකයා අඩු කිරීම, 1C එන්ජිම යාවත්කාලීන කිරීමෙන් පසු පුස්තකාල අනුවාදවල සමමුහුර්ත කිරීම අඩු කිරීම, දෙවියන් විසින් විනාශ කරන ලද comsafearray අඩු කිරීම, සාමාන්‍ය නම් සහ ක්ෂේත්‍ර වර්ග... ඔහු අප ගැන සිතුවේය. අනෙක් පැත්ත (1C සමඟ ඒකාබද්ධ වන පද්ධතියක්) ඔවුන්ගේ 1C ඇමතුම් නව "පද්ධති සන්නිවේදන ආකෘතියකට" නැවත ලිවිය යුතු බව පෙනී ගිය විට "ඔවුන්ට තේරෙන්නේ නැත". නමුත් පරීක්ෂණ දත්ත සමුදායේ එක් කාර්යයක් වරක් උත්සාහ කර ඇති අතර, දැන් අපි "හැකි ඉක්මනින් සේවාව වෙත මාරු වෙමු" යනුවෙන් විහිළුවට ලක් කර ඇත.

ප්‍රශ්නය: Com objects සඳහා TypeContains භාවිතා කරන්නේ කෙසේද?


Attribute.Type.ContainsType(Type("DirectoryLink.Nomenclature")) නම් එහි Nomenclature = True; නම් අවසන්;

තවත් 1c දත්ත සමුදායක් සමඟ කොම් සම්බන්ධතාවයකින් "ප්‍රොප්ස්" ලැබුණි. සංසන්දනය කිරීමේදී දෝෂයක් ඇතිවේ:

(ExternalProcessing.Coefficient Recalculation.Form.Form.Form(183)): සන්දර්භය ක්‍රමය ඇමතීමේ දී දෝෂයකි (ContainsType)
Attribute.Type.ContainsType(Type("DirectoryLink.Nomenclature")) නම්
නිසා:
ව්යතිරේකයක් සිදු විය (1C:ව්යවසාය 8.3.8.1964): වර්ගය නොගැලපීම (පරාමිති අංකය "1")

එය කොම් වර්ගය සමඟ සැසඳිය යුතු යැයි මම සැක කරමි? වර්ගය නිවැරදිව පරීක්ෂා කරන්නේ කෙසේද?

පිළිතුර:

එය පෙරළෙන්නේ නැත. මම ප්‍රශ්නය විසඳුවේ මෙහෙමයි.
බාහිර සම්බන්ධතා පිරික්සුම් කොටුව සලකුණු කර ඇති සාමාන්‍ය මොඩියුලයේ ග්‍රාහක දත්ත ගබඩාවේ, කේතය වන්නේ:

Function CheckAttributeType(Attribute, Type) Export Return Attribute.Type.ContainsType(Type(type)); අවසන් කාර්යය

මම සම්බන්ධ වන දත්ත සමුදාය තුළ, මම Com හරහා ක්රියා පටිපාටිය අමතන්නෙමි:

ComConnection.Avis_ExchangeProcedures.CheckAttributeType(Attribute, "DirectoryLink.Nomenclature")

මුද්‍රණය කරන්න (Ctrl+P)

1C දත්ත සමුදායන් අතර දත්ත හුවමාරු කිරීමේ විකල්පයන්ගෙන් එකක් වන්නේ COM සම්බන්ධතාවයක් හරහා හුවමාරු කිරීමයි. COM සම්බන්ධතාවයක් භාවිතා කරමින්, ඔබට එක් 1C දත්ත ගබඩාවක සිට තවත් දත්ත ගබඩාවකට සම්බන්ධ වී දත්ත කියවීමට හෝ ලිවීමට හැකිය. මෙම ක්‍රමය ග්‍රාහක-සේවාදායක දත්ත සමුදා අනුවාදවල සහ ගොනු දත්ත සමුදායන්හි භාවිතා කළ හැක. මෙම ලිපිය 8.3 වේදිකාවේ මෙම ආකාරයේ සම්බන්ධතා ගැන සාකච්ඡා කරයි

com සම්බන්ධතාවය

1C යෙදුම සඳහා ඔබට COM වස්තු වර්ග දෙකක් සෑදිය හැක. මෙය ඔලේ සම්බන්ධතා වේ V83.යෙදුම සහ com සම්බන්ධතා V83.COM සම්බන්ධකය . අවස්ථාවක V83.යෙදුම 1C යෙදුමේ සම්පූර්ණ පිටපතක් දියත් කෙරේ. භාවිතයේ දී V83.COM සම්බන්ධකයකුඩා සේවාදායක කොටසක් දියත් කර ඇත. මෙම නඩුවේ මෙහෙයුම් වේගය වැඩි වේ, නමුත් සමහර කාර්යයන් ලබා ගත නොහැක. විශේෂයෙන්, බාහිර සම්බන්ධතා සමඟ වැඩ කිරීමේ දේපල සකසා නොමැති ආකෘති සහ පොදු මොඩියුල සමඟ වැඩ කිරීම. බොහෝ විට ඔබ භාවිතා කළ යුතුය V83.COM සම්බන්ධකයසහ ක්‍රියාකාරීත්වය නොමැති අවස්ථාවක පමණි V83.යෙදුම. මෙහෙයුම් වේගයෙහි වෙනස විශාල පරිමා දත්ත සමුදායන් මත විශේෂයෙන් සැලකිය හැකිය. වේදිකාව 8.2 සඳහා භාවිතා වේ V82.Application හෝ V82.COMConnector

OLE සම්බන්ධතාවයක් ස්ථාපිත කරන්න

සම්බන්ධතාවය = නව COMObject("V83.Application" );

COM සම්බන්ධතාවයක් ස්ථාපිත කරන්න

සම්බන්ධතාවය = නව COMObject ("V83.COMConnector" );

සම්බන්ධතා තන්තුව

//Client-server විකල්පය සඳහා
සම්බන්ධක පෙළ= “Srvr = ““ServerName” “;Ref = “ “BaseName” ;
// ගොනු මාදිලි විකල්පය සඳහා:
සම්බන්ධක පෙළ= "ගොනුව = ""PathKBase" "; Usr = පරිශීලක නාමය; Pwd = මුරපදය";
උත්සාහය
සම්බන්ධතාවය = සම්බන්ධතාවය . සම්බන්ධ කරන්න(ConnectionString) ;
ව්යතිරේක
පණිවිඩය = New MessageToUser;
පණිවුඩය . පෙළ = "දත්ත සමුදායට සම්බන්ධ වීමට අපොහොසත් විය" + විස්තර දෝෂ(); පණිවුඩය . වාර්තා කිරීමට();
EndAttempt ;

විසන්ධි කිරීම

සම්බන්ධතාවය = නිර්වචනය නොකළ ;
වස්තුව සඳහා V83.යෙදුමසම්බන්ධතාවය අවසන් කිරීම අවශ්ය වේ, එසේ නොමැතිනම් අසම්පූර්ණ සැසියක් පවතිනු ඇත, පසුව එය අතින් මකා දැමිය යුතුය. අවස්ථාවක V83.COM සම්බන්ධකයකනෙක්ෂන් එක හදපු ක්‍රියාපටිපාටිය ඉවර උනාම කනෙක්ෂන් එක ඉබේම කැඩෙනවා.ඒ වගේම තව පොඩි පොයින්ට් එකක් තියෙනවා. සම්බන්ධතාවය සිදු කරනු ලබන පරිශීලකයා සඳහා, "වැඩසටහන වසා දැමීමේදී තහවුරු කිරීම ඉල්ලීම" පිරික්සුම් කොටුව එහි සැකසුම් තුළ අක්රිය කළ යුතුය.

NewObject() ක්‍රමය

නව වස්තුවක් සෑදීමට, ඔබට NewObject() ක්‍රමය භාවිතා කළ හැක, උදාහරණයක් ලෙස:

සදහා V83.COM සම්බන්ධකය

RequestCOM = සම්බන්ධතාවය. නව වස්තුව( "ඉල්ලීම") ;
TableCOM = සම්බන්ධතාවය. නව වස්තුව( "වටිනාකම් වගුව") ;
ArrayCOM = සම්බන්ධතාවය. NewObject ("Aray" );

ViewCOM =Connection.NewObject

සදහා V83.යෙදුම

RequestOLE = සම්බන්ධතාවය. නව වස්තුව (" ඉල්ලීම") ;
TableOLE = සම්බන්ධතාවය. නව වස්තුව("වටිනාකම් වගුව") ;
ArrayOLE = Connection.NewObject("අරාව");
ViewCOM =Connection.NewObject("Unique Identifier", StringUID);

RequestCOM . පෙළ ="තෝරා
| සංවිධානවල තනතුරු කේතය,
| සංවිධානවල තනතුරු.නම
|FROM | නාමාවලිය. සංවිධානවල තනතුරු
සංවිධානවල තනතුරු ලබා ගන්නේ කෙසේද";

ප්රතිඵලය = RequestCOM. ධාවනය ();
නියැදිය = ප්රතිඵලය. තෝරා () ;
බයි තේරීම. ඊළඟ()චක්රය
EndCycle ;
ඔබට වින්‍යාස වස්තු කළමනාකරුවන් ද භාවිතා කළ හැකිය:
DirectoryCOM = සම්බන්ධතාවය. නාමාවලි. නාමාවලියේ නම;
DocumentCOM = සම්බන්ධතාවය. ලේඛනගත කිරීම. ලේඛන නාමය;
RegisterCOM = සම්බන්ධතාවය. තොරතුරු ලේඛන. ලියාපදිංචි නාමය ;

COM සම්බන්ධතාවය හරහා ගණන් බැලීම් ලබා ගැනීම සහ සංසන්දනය කිරීම

වින්‍යාසය තුළ අර්ථ දක්වා ඇති ගණන් කිරීමේ මූලද්‍රව්‍යවල අගයන් සංසන්දනය කිරීම සඳහා, මෙම මූලද්‍රව්‍ය ප්‍රාථමික වර්ග වලින් එකකට පරිවර්තනය කිරීම අවශ්‍ය වේ, ඒවා සංසන්දනය කිරීම පහසුය. එවැනි වර්ග සංඛ්‍යාත්මක වර්ගයක් හෝ නූල් වර්ගයක් විය හැකිය. ඔබට ගණන් කිරීමේ මූලද්‍රව්‍යයක අගය මෙවැනි සංඛ්‍යාත්මක වර්ගයකට පරිවර්තනය කළ හැක:

Enum අයිතමය = Connection.Directories.Directory1.FindByCode(1).Props1;

PossibleValues ​​= Enum Element.Metadata().Enum Values;

EnumerationElementNumber = PossibleValues.Index(PossibleValues.Find(Connection.XMLString(EnumerationElement)));

EnumerationItemNumber = 0 නම් වාර්තා කරන්න( "ගණක අගය 1");

ElseIfEnumerationItemNumber = 1 ඉන්පසුවාර්තාව ("ගණනය කිරීමේ අගය2");

නම් අවසන්;

හැඳුනුම්කාරකය මගින් COM හරහා වස්තුවක් ලබා ගැනීම

වින්‍යාස වස්තු කළමනාකරුවන් හරහා අපි කොම් වස්තුවක් ලබා ගනිමු, උදාහරණයක් ලෙස:
DocumentCOM = සම්බන්ධතාවය. ලේඛනගත කිරීම. ලේඛන නාමය;

එවිට අපට අද්විතීය හඳුනාගැනීමේ පෙළක් ලැබේ:

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

හැඳුනුම්කාරකය = නව යූ අනන්‍ය හඳුනාගැනීම් (StringUID);
සමග linkByIdentifier = Documents[DocumentName].GetLink(Identifier);

ඔබට හැඳුනුම්කාරකය මඟින් ලේඛනය මගින් කොම් වස්තුවක් සොයා ගැනීමට අවශ්‍ය නම්, ඔබ මෙසේ ලිවිය යුතුය:

WidCOM = සම්බන්ධතාවය.NewObject("Unique Identifier", StringUID);
LinkByIdentifier = Connection.Documents[DocumentName].GetLink(WidCOM);

එක් 1C වින්‍යාසයකින් තවත් දත්තයකට දත්ත මාරු කිරීමේ එක් ක්‍රමයක් වන්නේ COM භාවිතා කරන මෘදුකාංග සම්බන්ධතාවයකි. බොහෝ සමාගම් විවිධ දත්ත සමුදායන් කිහිපයක් භාවිතා කරයි, ඒවා අතර නිශ්චිත සම්බන්ධතා සහ පරායත්තතා තිබිය යුතුය. දත්ත මාරු කිරීමට පමණක් නොව, ඇතැම් දත්ත සැකසුම් සිදු කිරීමට අවශ්ය නම්, COM සම්බන්ධතාවය ප්රශස්ත යාන්ත්රණයක් වනු ඇත. වෙනත් 1C දත්ත ගබඩාවකින් දත්ත විශ්ලේෂණය කිරීමේ හැකියාව ඕනෑම සංවර්ධකයෙකුට ප්‍රයෝජනවත් වේ.

අපි COM හරහා 1C දත්ත ගබඩාවට සම්බන්ධ කරමු

1C හි COM සම්බන්ධතාවයක් ක්රියාත්මක කිරීම සඳහා, COMConnector නමින් විශේෂ යාන්ත්රණයක් භාවිතා වේ. මෙම වස්තුව වේදිකාව සමඟ ස්ථාපනය කර ඇති අතර තොරතුරු පදනම් සම්බන්ධ කිරීමට භාවිතා කරයි. 8.2 සහ 8.3 අනුවාද සඳහා විවිධ නම් සහිත වස්තූන් භාවිතා කරන බව සටහන් කළ යුතුය - පිළිවෙලින් “V82.COMConnector” සහ “V83.COMConnector”.

දත්ත සමුදායට COM සම්බන්ධතාවයේ කාලසීමාව බලපත්‍රයක් වැය වන බව මතක තබා ගන්න - සම්බන්ධතා කිහිපයක් එකවර ක්‍රියාත්මක කිරීමත් සමඟ රැගෙන නොයන්න. සීමිත බලපත්‍ර සංඛ්‍යාවක් ඇති ආයතන සඳහා මෙය විශේෂයෙන් වැදගත් වේ. තොරතුරු පදනමට සක්‍රීය පරිශීලක සම්බන්ධතා නොමැති විට ක්‍රියාත්මක වන සාමාන්‍ය කාර්යයන් ආධාරයෙන් මෙම ගැටළුව විසඳා ගත හැකිය.

වෙනත් දත්ත සමුදායකට සම්බන්ධ වීමට සහ අවශ්‍ය තොරතුරු ඉල්ලා සිටීමට, ඔබ පහත දත්ත දැන සිටිය යුතුය:

  1. එය කුමන වර්ගයද - ගොනුව හෝ සේවාදායක-සේවාදායකය;
  2. එය පිහිටා ඇත්තේ කොහේද;
  3. ඔබට ලොග් වීමට භාවිතා කළ හැකි නම සහ මුරපදය කුමක්ද?
  4. ඔබ උනන්දු වන්නේ කුමන දත්තද?

පළමු කරුණු තුනෙන්, COM සම්බන්ධතාවයක් ක්රියාත්මක කිරීම සඳහා, ඔබ පරාමිති මාලාවක් සෑදිය යුතුය. තොරතුරු ආරක්ෂණ වර්ගය අනුව, එය වෙනස් වේ පෙනුම. ලැබුණු තන්තුව භාවිතා කරමින්, සම්බන්ධතාවයක් සාදනු ලබන අතර, එහි ආධාරයෙන් ඔබට ඕනෑම ක්‍රමයක් භාවිතා කරමින් විශ්ලේෂණය සහ සැකසීම සඳහා වෙනත් දත්ත සමුදායකින් දත්ත රැස් කළ හැකිය.

සම්බන්ධතා පරාමිතීන්FileIB = "File=""Path_to_database""; Usr=""User_name"";Pwd=""මුරපදය"""; සම්බන්ධතා පරාමිතීන්ClientServerIB = "Srvr=""Server_Name""; Ref=""Database_Name""; Usr=""User_Name""; Pwd=""මුරපදය""";

සම්බන්ධතා කාර්යය සරල වන අතර සියලු පරාමිති නිවැරදිව සඳහන් කර ඇත්නම් කිසිදු ප්රශ්නයක් මතු නොකළ යුතුය. නිදොස්කරණය සහ විශ්ලේෂණය වේගවත් කිරීම සඳහා විය හැකි දෝෂ"උත්සාහ කරන්න" ඉදිකිරීමේ සම්බන්ධතාවය ඇතුළත් කිරීම වඩා හොඳය. කාර්යය "COM වස්තුව" ආකාරයේ අගයක් ලබා දෙනු ඇත, ඔබ අවශ්ය දත්ත ලබා ගැනීමට කටයුතු කරනු ඇත.

&OnServer Function ConnectToBase() exportConnectionIB Parameters = "File=""E:\1c database\ERP""; Usr=""Administrator"";Pwd=""1"""; V83COMCon= නව COMObject("V83.COMConnector"); උත්සාහය ආපසු V83COMCon.Connect(IB සම්බන්ධතා පරාමිතීන්); ව්යතිරේක වාර්තාව (දෝෂ විස්තරය()); නිර්වචනය නොකළ ආපසු යන්න; EndAttempt; අවසන් කාර්යය

COM සම්බන්ධතාවයක් හරහා ඔබට දත්ත තෝරා ගැනීමට පමණක් නොව, ඔබ සම්බන්ධ කරන දත්ත සමුදායට එකතු කළ හැකිය. අපට COM වස්තුවක් හරහා ප්‍රාථමික දත්ත වර්ග 4ක් මාරු කළ හැකි බව මතක තබා ගන්න. වේදිකාවේ ගොඩනඟන ලද සෙවුම් කාර්යයන් භාවිතයෙන් වෙනත් වර්ග සඳහන් කිරීමට සිදුවේ. ගෝලීය වේදිකා කාර්යයන් ද COM සම්බන්ධතාවයක් හරහා කැඳවනු ලබන බව කරුණාවෙන් සලකන්න.

අපි 1C දත්ත ගබඩාවෙන් දත්ත ලබා ගනිමු

ඔබට අවශ්‍ය වස්තුව ලැබුණු පසු, ඔබට වෙනත් දත්ත සමුදායකින් දත්ත කියවිය යුතුය. මෙය සිදු කිරීම සඳහා, අපි ශ්රිතයෙන් "COM වස්තුව" වර්ගයේ ලැබුණු අගය භාවිතා කරමින් 1C 8.3 හි COM සම්බන්ධතාවයක් හරහා ඉල්ලීමක් භාවිතා කරමු. මුලින්ම දත්ත සමුදායට සම්බන්ධ වී පසුව ඉල්ලීම ක්රියාත්මක කිරීම වැදගත් වේ. ක්‍රියාත්මක කිරීම NewObject ක්‍රමය හරහා සිදු වේ, වස්තු වර්ගය පරාමිතියක් ලෙස තන්තු ආකාරයෙන් සඳහන් කරයි - “ඉල්ලීම”.

&OnServer පටිපාටිය TestCOMOnServer() සම්බන්ධතාවය = ConnectToBase(); TypeValue(සම්බන්ධතාවය) වර්ගය("නොපැහැදිලි") නම් RequestBPZO = Connection.NewObject("ඉල්ලීම"); RequestBPZO.Text = "පළමු 15 තෝරන්න | නාමාවලිය භාවිතා කරන්නා. නම ලෙස නාමාවලිය | සිට | Directory.users AS DirectoryUser"; Select = RequestBPZO.Execute().select(); Selection.next() loop Report(Selection.Number) අතරතුර; EndCycle; නම් අවසන්; ක්රියා පටිපාටියේ අවසානය >

උදාහරණයක් ලෙස, යම් දෙපාර්තමේන්තුවක පරිශීලකයින් පිළිබඳ තොරතුරු ලබා ගැනීම සඳහා, අපි පරාමිති හරහා ඉල්ලීමෙහි කොන්දේසියක් සකස් කරමු. එක් පරාමිතියක් සරල වර්ගයක් වනු ඇත - නූලක්, සහ බෙදීම ඩිරෙක්ටරි මූලද්රව්යය "ව්යවසාය ව්යුහය" වෙත සබැඳියක් වනු ඇත. විමසුමේ ප්රතිඵලය වන්නේ COM සම්බන්ධතාවය සිදු වූ දත්ත සමුදායේ පවතින ආකාරයේ ලැයිස්තුගත ක්ෂේත්ර සහිත වගුවකි. ඔබට ඒවා වෙනත් වර්ගවලට පරිවර්තනය කිරීමට අවශ්‍ය නම්, සම්මත වේදිකා කාර්යයන් භාවිතා කරන්න:

  • රේඛාව ();
  • අංකය();
  • දිනය ().
RequestBPZO = Connection.NewObject("ඉල්ලීම"); RequestBPZO.Text = "පළමු 15 තෝරන්න | නම ලෙස නාමාවලි පරිශීලක.නම | සිට | නාමාවලිය.පරිශීලක ලෙස නාමාවලිය පරිශීලක මම කොහිද | DirectoryUser.Department = &අවශ්‍ය දෙපාර්තමේන්තු | සහ නාමාවලියUser."%"""" ++ "අවශ්‍ය නාමය වැනි නම BPZO.SetParameter ("අවශ්‍ය දෙපාර්තමේන්තුව", සම්බන්ධතාවය. නාමාවලි. ව්‍යවසාය ව්‍යුහය. කේතය මගින් සොයන්න("00-000023")); RequestBPZO.SetParameter("අවශ්‍ය නම","Ekaterina"); Select = RequestBPZO.Execute().select(); Selection.next() loop Report(Selection.Name) අතරතුර; EndCycle;

පරාමිති කිහිපයක් මත පදනම්ව තේරීම සඳහා ඔබට අරාවක් දත්ත ගබඩාවට මාරු කිරීමට අවශ්‍ය නම්, උදාහරණයක් ලෙස, දෙපාර්තමේන්තු, NewObject විධානය ද භාවිතා වේ. ඒ හා සමානව, ඔබට සම්බන්ධතාවයක් හරහා වෙනත් දත්ත සමුදායක අංග සමඟ ඒවා පුරවා අගය ලැයිස්තුවක් හෝ වගුවක් සම්මත කළ හැකිය. ඔබට සෙවීමට සියල්ල තිබේ පවතින ක්රමවේදිකා වස්තූන් සහ යාන්ත්රණ.

RequestBPZO = Connection.NewObject.("ඉල්ලීම"); RequestBPZO.Text = "පළමු 15 තෝරන්න | නාමාවලිය පරිශීලක.නම ලෙස නම | සිට | නාමාවලිය.පරිශීලක ලෙස නාමාවලිය පරිශීලක මම කොහිද | නාමාවලිය පරිශීලක.දෙපාර්තමේන්තු B (&අවශ්‍ය දෙපාර්තමේන්තු) | සහ නාමාවලියපරිශීලක."%" වැනි නම "%""" + &Necess "; දෙපාර්තමේන්තු අරාව = Connection.NewObject("Array"); දෙපාර්තමේන්තු අරාව. එකතු කරන්න (සම්බන්ධතා. නාමාවලිය. ව්‍යවසාය ව්‍යුහය. කේතය මගින් සොයන්න("00-000023")); දෙපාර්තමේන්තු අරාව. එකතු කරන්න(සම්බන්ධතා. නාමාවලිය. ව්‍යවසාය ව්‍යුහය. කේතය මගින් සොයන්න("00-000038")); දෙපාර්තමේන්තු අරාව. එකතු කරන්න(සම්බන්ධතා. නාමාවලිය. ව්‍යවසාය ව්‍යුහය. කේතය මගින් සොයන්න("00-000046")); BPZO.SetParameter ඉල්ලීම ("අවශ්‍ය දෙපාර්තමේන්තුව", දෙපාර්තමේන්තු අරාව); RequestBPZO.SetParameter("අවශ්‍ය නම","Ekaterina"); Select = RequestBPZO.Execute().select(); Selection.next() loop Report(Selection.Name) අතරතුර; EndCycle;

ලේඛන හෝ නාමාවලි මූලද්රව්ය මාරු කිරීමේදී, නිශ්චිත වස්තුවක් මාරු කිරීම පාලනය කිරීමේ ප්රශ්නය සෑම විටම පැන නගී. COM සම්බන්ධතා ආධාරයෙන්, එවැනි ගැටළු අද්විතීය හඳුනාගැනීමක් හරහා විසඳා ගත හැකිය. "GetLink" ශ්‍රිතය භාවිතා කරමින්, හැඳුනුම්පත තන්තුවක් ලෙස භාවිතා කරමින් වත්මන් තොරතුරු ආරක්ෂණයෙන් හඳුනාගැනීම මගින් ඔබට ප්ලග්-ඉන් දත්ත ගබඩාවේ වස්තුවක් සොයා ගැනීමට අවශ්‍ය වේ. එකක් සොයාගත නොහැකි නම්, ඔබට එය COM සම්බන්ධතාවයක් භාවිතයෙන් නිර්මාණය කළ හැකිය.

StrIdent = String(Directories.Users.FindByCode("00-0000313").UniqueIdentifier()); අගය පුරවා නොමැති නම්(Connection.Directories.Users.GetLink(Connection.NewObject("UniqueIdentifier", StrIdent))) එවිට NewUser = Connection.Directories.Users.CreateItem(); NewUser.Name = Directories.Users.FindByCode("00-0000313").නම; NewUser.Individual = Directories.Users.FindByCode("00-0000313").Individual; NewUser.Write(); නම් අවසන්;

එසේම, "බාහිර සම්බන්ධතා" ගුණාංගය සක්‍රීය කර ඇති පොදු 1C මොඩියුල වලින් ක්‍රියා පටිපාටි සහ කාර්යයන් භාවිතා කිරීමට COM සම්බන්ධතාවයකට අයිතිය ඇත. මෙම කොන්දේසියට අමතරව, හැඳින්වෙන ශ්‍රිතය හෝ ක්‍රියා පටිපාටිය අපනයනය කළ යුතු අතර සේවාදායකයේ සිදු කරන අන්තර්ක්‍රියාකාරී ක්‍රියා ඇතුළත් නොවිය යුතුය. එසේ නොමැතිනම්, මෙහෙයුම අවලංගු වීම පිළිබඳ දෝෂයක් ඔබට පෙනෙනු ඇත.

සංයෝගය..; VariableFunction = Connection..; කාර්යය ඇමතුම> සාමාන්‍ය මොඩියුලයේ නම> ක්‍රියා පටිපාටිය ඇමතුම> සාමාන්‍ය මොඩියුලයේ නම>

1C හි වෙනත් දත්ත සමුදායක් සමඟ බාහිර සම්බන්ධතාවයක් සඳහා ඇති හැකියාව තරමක් පුළුල් වන අතර ඔබට බොහෝ කාර්යයන් කිරීමට ඉඩ සලසයි. මෙවලම් නිවැරදිව තක්සේරු කිරීමට සහ ප්රශස්ත විසඳුම තෝරා ගැනීමට හැකි වීම වැදගත් වේ. බොහෝ අවස්ථාවන්හීදී, මෙම කුසලතාව පළපුරුද්දෙන් හෝ පළපුරුදු විශේෂඥයින්ගේ වැඩ පිළිබඳ උදාහරණ අධ්යයනය කිරීමෙන් පමණක් පෙනේ.


මූල පද: COM, සම්බන්ධතාවය, බාහිර, OLE, ස්වයංක්‍රීයකරණය, සම්බන්ධ කිරීම, ComConnector, Srvr

දත්ත වෙත ප්‍රවේශ වීමට 1C:Enterprise 8.0 COM සම්බන්ධතා භාවිතා කරන විට, ස්වයංක්‍රීය සේවාදායකයක් භාවිතා කිරීමට සාපේක්ෂව පහත වාසි ඇත:

  1. වෙනම මෙහෙයුම් පද්ධති ක්‍රියාවලියක් නිර්මාණය කිරීමේ අවශ්‍යතාවයක් නොමැති බැවින් සහ ඇමතුම් ක්‍රියාවලිය තුළ සියලුම ක්‍රියා සිදු කරනු ලබන බැවින් වේගවත් සම්බන්ධතා පිහිටුවීම;

  2. 1C හි ගුණාංග සහ ක්‍රම වෙත වේගවත් ප්‍රවේශය: ව්‍යවසාය වස්තු, ප්‍රවේශයක් සංවිධානය කිරීමට අන්තර් ක්‍රියාවලි සන්නිවේදනය අවශ්‍ය නොවන බැවින්;
  3. මෙහෙයුම් පද්ධති සම්පත් අඩු පරිභෝජනය.

සාමාන්‍යයෙන්, COM සම්බන්ධතාවයක් හරහා 1C:Enterprise 8.0 සමඟ වැඩ කිරීම 1C:Enterprise සමඟ සේවාදායක ස්වයංක්‍රීය මාදිලියේ වැඩ කිරීමට සමාන වේ. ප්රධාන වෙනස්කම් පහත පරිදි වේ:

  1. ස්වයංක්‍රීය සේවාදායකයක් සම්බන්ධයෙන්, සම්පූර්ණ 1C: ව්‍යවසාය 8.0 යෙදුමක් දියත් කරන අතර, COM සම්බන්ධතාවයකදී, සාපේක්ෂව කුඩා ක්‍රියාවලියේ COM සේවාදායකයක් දියත් කෙරේ.

  2. COM සම්බන්ධතාවයක් හරහා වැඩ කරන විට, 1C: 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 ක්‍රමය 1C:Enterprise 8.0 infobase සමඟ COM සම්බන්ධතා වස්තුවකට සබැඳියක් ලබා දෙයි;
  3. ලැබුණු COM සම්බන්ධතා වස්තුව හරහා, සම්බන්ධතාවය ස්ථාපිත කර ඇති තොරතුරු පදනමේ වලංගු ක්රම, ගුණාංග සහ වස්තූන් වෙත ප්රවේශ වේ.

වැදගත්! COM සම්බන්ධතාවයක පරිශීලක අතුරුමුහුණතක් නොමැතිකම හේතුවෙන්, COM සම්බන්ධතාවයක සියලුම වස්තූන්, ගුණාංග සහ ක්‍රම භාවිතා කළ නොහැක.

1C: COM සම්බන්ධතාවයක් හරහා බාහිරව ප්‍රවේශ විය හැකි ව්‍යවසාය වස්තු:

  1. බාහිර සම්බන්ධ කිරීමේ මොඩියුලයේ අපනයනය කරන ලද විචල්‍යයන් සහ ක්‍රියා පටිපාටි/කාර්යයන්

  2. අපනයනය කරන ලද විචල්‍යයන් සහ පොදු මොඩියුලවල ක්‍රියා පටිපාටි/කාර්යයන්
  3. පොදු මොඩියුලවල ගුණාංග සැකසීමෙන් සම්පූර්ණ මොඩියුල ඇතුළත් කිරීම සහ බැහැර කිරීම

  4. පූර්ව සකසනයක් භාවිතා කරන පොදු මොඩියුලවල කොටස් ඇතුළත් කිරීම සහ බැහැර කිරීම
  5. ගෝලීය සන්දර්භය 1C: ව්‍යවසාය 8.0, ග්‍රාහක යෙදුමට තදින් සම්බන්ධ කර ඇති වස්තූන් හැර (TextDocument, TabularDocument, ...)

1.2 බාහිර සම්බන්ධතා මොඩියුලය

දැනටමත් සටහන් කර ඇති පරිදි, COM සම්බන්ධතාවයක් හරහා වැඩ කරන විට යෙදුම් මොඩියුලයේ වගකීම් බාහිර සම්බන්ධතා මොඩියුලය මගින් සිදු කරනු ලැබේ. මෙම මොඩියුලයේ සිද්ධි හසුරුවන ක්‍රියා පටිපාටි ඇති විට SystemStarts() සහ WhenSystemCompletes(), පිළිවෙලින් සම්බන්ධතාවය ආරම්භ කිරීම සහ අවසන් කිරීමේදී සිදු කරන ක්‍රියා අඩංගු විය හැක.

අපනයන මූල පදය සමඟින් බාහිර සම්බන්ධක මොඩියුලයක අර්ථ දක්වා ඇති ක්‍රියා පටිපාටි, ශ්‍රිත සහ ගෝලීය විචල්‍යයන් යෙදුම් මොඩියුලයක දී මෙන් ගෝලීය සන්දර්භයේ කොටසක් බවට පත්වේ.

1.3 පොදු මොඩියුල

පොදු මොඩියුල සඳහා "Client", "Server" සහ "External Connection" යන ගුණාංග හඳුන්වා දී ඇත. සේවාදායක - සේවාදායක අනුවාදය සහ COM සම්බන්ධතා මාදිලියේ මොඩියුල භාවිතා කිරීම වින්‍යාසය තුළ තීරණය කිරීමට ඒවා අදහස් කෙරේ.

1.4 වස්තුව "V8.COMConnector"

V8.COMConnector COM වස්තුව මගින් විසඳා ඇති එකම කාර්යය වන්නේ 1C:Enterprise 8.0 තොරතුරු පදනම සමඟ COM සම්බන්ධතාවයක් ස්ථාපිත කිරීමයි. V8.COMConnector වස්තුවේ එක් අවස්ථාවක් භාවිතයෙන් අසීමිත සම්බන්ධතා සංඛ්‍යාවක් ස්ථාපිත කළ හැක. V8.COMConnector වස්තුවට තනි සම්බන්ධක ක්‍රමයක් ඇත, 1C:Enterprise 8.0 infobase සමඟ COM සම්බන්ධතාවයක් ස්ථාපනය කිරීමට සැලසුම් කර ඇත.

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

තොරතුරු ආරක්ෂණ පද්ධතිය සමඟ සම්බන්ධතා රේඛාව පරාමිතිය=අගය ආකෘතියේ කොටස් දාමයකි. කොටස් එකිනෙකින් ";" මගින් වෙන් කරනු ලැබේ. අගය සුදු ඉඩක් තිබේ නම්, එය අමුණා තිබිය යුතුය ද්විත්ව උපුටා දැක්වීම් (").

පොදු පරාමිතීන්:

Usr - පරිශීලක නාමය;
Pwd - මුරපදය.

ගොනු අනුවාදය සඳහා පහත පරාමිතිය අර්ථ දක්වා ඇත:

ගොනුව - infobase නාමාවලිය.

සේවාදායක-සේවාදායක විකල්පය සඳහා පහත පරාමිතීන් අර්ථ දක්වා ඇත:

Srvr - 1C: ව්යවසාය සේවාදායක නාමය;
Ref - සේවාදායකයේ තොරතුරු පදනමේ නම.

Connect ක්‍රමය 1C:Enterprise 8.0 infobase වෙත COM සම්බන්ධතාවයක් ස්ථාපිත කර COM සම්බන්ධතා වස්තුව වෙත සබැඳියක් ලබා දෙයි.

// සම්බන්ධක වස්තුවක් සාදනු ලැබේ
V8 = නව COMObject("V8.COMConnector");
// COM සම්බන්ධතා වස්තුවක් සාදනු ලැබේ
සම්බන්ධතාවය = V8.Connect("File=""c:\InfoBases\Trade""; Usr=""Director"";")

1.5 COM සම්බන්ධතා වස්තුව

1C:Enterprise infobase වෙත COM සම්බන්ධතාවයක් එහි ගෝලීය සන්දර්භය වෙත පූර්ණ ප්‍රවේශය සපයයි (“වැඩසටහන් මොඩියුල ක්‍රියාත්මක කිරීමේ සන්දර්භය” බලන්න). එබැවින්, COM සම්බන්ධතාවයක් එහි ක්‍රම ලෙස තිබිය හැකිය: පද්ධති නියතයන්, කළමනාකරුවන් භාවිතයෙන් ප්‍රවේශ වන වස්තූන්ගේ වින්‍යාසකාරකයේ දක්වා ඇති අගයන් (උදාහරණයක් ලෙස, නියතයන්, ගණනය කිරීම්, නාමාවලි, ලේඛන, ලේඛන ලඝු-සටහන්, වාර්තා, සැකසීම, වර්ග සඳහා සැලසුම් ලක්ෂණ, සැලසුම් ගිණුම්, ගණනය කිරීම් වර්ගවල සැලසුම්, රෙජිස්ටර්), මෙන්ම අපනයන මූල පදය සමඟ බාහිර සම්බන්ධතා මොඩියුලයේ ප්රකාශිත විචල්යයන්.

ඊට අමතරව, COM සම්බන්ධතාවයට අමතර NewObject ක්‍රමයක් ඇති අතර එය ඇතැම් වර්ගවල අගයන් නිර්මාණය කිරීමට භාවිතා කළ හැකිය.

tk = සම්බන්ධතාවය. NewObject("ValueTable");

String ක්‍රමය ඔබට 1C:Enterprise අගයන්හි තන්තු නිරූපණයන් ලබා ගැනීමට ඉඩ සලසයි.

View = Connection.String(Data.UniqueIdentifier());

1.6 COM සම්බන්ධතාවයක් සමඟ වැඩ කිරීමේ විශේෂාංග

ස්වයංක්‍රීයකරණයේදී සහ COM සම්බන්ධතාවයකදී, සත්‍ය සහ අසත්‍ය පහත අගයන් ඇත: -1 (අඩු එකක්) සහ 0.

COM සම්බන්ධතා සංචිතයක් සංවිධානය කිරීමට හැකි ය. ඒ අතරම, 1C: Enterprise ලැබෙන සේවාදායකයේ COM සම්බන්ධතා වස්තු කිහිපයක් කල්තියා නිර්මාණය කර ඇති අතර නව වස්තුවක් සෑදීමට අවශ්‍ය නොවන බැවින් සම්බන්ධතාවයක් ස්ථාපනය කිරීමට ඊටත් වඩා අඩු කාලයක් ගතවේ.

නව Query Builder වස්තුවක් ක්‍රියාත්මක කර ඇත, නිශ්චිත සැකසුම් මත පදනම්ව විමසුම් පෙළ උත්පාදනය කිරීමට සැලසුම් කර ඇත. මෙම වස්තුවපැතුරුම්පත් ලේඛනයකට වාර්තාවක් ප්‍රතිදානය කිරීම හා සම්බන්ධ වෙනත් කාර්යයන් සම්බන්ධ නොවන වාර්තා සාදන්නාගේ ක්‍රියාකාරිත්වයට සහය දක්වයි පරිශීලක අතුරුමුහුණත. මෙම වස්තුව 1C:Enterprise සේවාදායකයේ සහ COM සම්බන්ධතාවයක භාවිතා කළ හැක.

1C:Enterprise සේවාදායකයේ ඇති භාෂාව ධාවනය කරන විට ඔබට COM වස්තු භාවිතා කළ හැක.

COM දෝෂ කාවැද්දූ භාෂා ව්‍යතිරේක බවට පරිවර්තනය වේ.

වින්‍යාසය වලංගු නොවන වස්තුවක් සෑදීමට උත්සාහ කරන්නේ නම්, උදා. පැතුරුම්පත් ලේඛනය, බාහිර සම්බන්ධතා මොඩියුලයක, හවුල් මොඩියුලයක හෝ වස්තු මොඩියුලයක, COM සම්බන්ධතාවය ස්ථාපිත නොකළ හැකිය හෝ ව්යතිරේකයක් ලෙස බාධා කළ හැකිය.

1C දත්ත සමුදායන් අතර දත්ත හුවමාරු කිරීමේ විකල්පයන්ගෙන් එකක් වන්නේ COM සම්බන්ධතාවයක් හරහා හුවමාරු කිරීමයි.

COM සම්බන්ධතාවයක් භාවිතා කරමින්, ඔබට එක් 1C දත්ත ගබඩාවක සිට තවත් දත්ත ගබඩාවකට සම්බන්ධ වී දත්ත කියවීමට හෝ ලිවීමට හැකිය. මෙම ක්‍රමය ග්‍රාහක-සේවාදායක දත්ත සමුදා අනුවාදවල සහ ගොනු දත්ත සමුදායන්හි භාවිතා කළ හැක. මෙම ලිපියෙන් අපි මෙම ආකාරයේ සම්බන්ධතාවයේ උදාහරණ දෙස බලමු. උදාහරණ වේදිකාව 8.2 භාවිතා කරයි.

1C යෙදුම සඳහා ඔබට COM වස්තු වර්ග දෙකක් සෑදිය හැක. මෙය V82.යෙදුමසහ V82.COM සම්බන්ධකය. අවස්ථාවක V82.යෙදුම 1C යෙදුමේ සම්පූර්ණ පිටපතක් දියත් කෙරේ. භාවිතයේ දී V82.COM සම්බන්ධකයකුඩා සේවාදායක කොටසක් දියත් කර ඇත.
මෙම නඩුවේ මෙහෙයුම් වේගය වැඩි වේ, නමුත් සමහර කාර්යයන් ලබා ගත නොහැක. විශේෂයෙන්, බාහිර සම්බන්ධතා සමඟ වැඩ කිරීමේ දේපල සකසා නොමැති ආකෘති සහ පොදු මොඩියුල සමඟ වැඩ කිරීම. බොහෝ විට ඔබ භාවිතා කළ යුතුය V82.COM සම්බන්ධකයසහ ක්‍රියාකාරීත්වය නොමැති අවස්ථාවක පමණි V82.යෙදුම. මෙහෙයුම් වේගයෙහි වෙනස විශාල පරිමා දත්ත සමුදායන් මත විශේෂයෙන් සැලකිය හැකිය.

එහෙනම් අපි පටන් ගනිමු

  1. අපි COM වස්තුවක් නිර්මාණය කරමු
    • සදහා V82.යෙදුමසම්බන්ධතාවය = නව COMObject("V82.Application" );
    • සදහා V82.COM සම්බන්ධකයසම්බන්ධතාවය = නව COMObject("V82.COMConnector" );
  2. අපි Connection string එකක් හදමු
    • දත්ත සමුදායේ සේවාදායක අනුවාදය සඳහා ConnectionString = "Srvr = " "ServerName" ";Ref = " "BaseName" ;
    • දත්ත සමුදායේ ගොනු අනුවාදය සඳහා ConnectionString = "ගොනුව = " "PathKBase" "; Usr = පරිශීලක නාමය; Pwd = මුරපදය";
  3. දත්ත සමුදායට සම්බන්ධ කිරීමඋත්සාහ සම්බන්ධය = සම්බන්ධය. සම්බන්ධ කරන්න (ConnectionString); ව්යතිරේක පණිවිඩය = New MessageToUser; පණිවුඩය. Text = + ErrorDescription() ; පණිවුඩය. වාර්තා කිරීමට() ; EndAttempt ;
  4. දත්ත සමුදායෙන් විසන්ධි කිරීමසම්බන්ධතාවය = නිර්වචනය නොකළ ;

    වස්තුව සඳහා V82.යෙදුමසම්බන්ධතාවය අවසන් කිරීම අවශ්ය වේ, එසේ නොමැතිනම් අසම්පූර්ණ සැසියක් පවතිනු ඇත, පසුව එය අතින් මකා දැමිය යුතුය. අවස්ථාවක V82.COM සම්බන්ධකයකනෙක්ෂන් එක හදපු ක්‍රියාපටිපාටිය ඉවර උනාම කනෙක්ෂන් එක ඉබේම කැඩෙනවා.ඒ වගේම තව පොඩි පොයින්ට් එකක් තියෙනවා.

    සම්බන්ධතාවය සිදු කරනු ලබන පරිශීලකයා සඳහා, "වැඩසටහන වසා දැමීමේදී තහවුරු කිරීම ඉල්ලීම" පිරික්සුම් කොටුව එහි සැකසුම් තුළ අක්රිය කළ යුතුය.

දැන් අපි ඔක්කොම code එක දාමු

සම්බන්ධතාවය = නව COMObject("V82.Application" ); //සම්බන්ධතාව = නව COMObject("V82.COMConnector"); ConnectionString = "Srvr = " "Server1C" "; Ref = " "MyBase" "; Usr = Petya; Pwd = 123" ; //ConnectionString = "ගොනුව = ""С:\MyBase""; Usr = Petya; Pwd = 123";උත්සාහ සම්බන්ධය = සම්බන්ධය. සම්බන්ධ කරන්න (ConnectionString); ව්යතිරේක පණිවිඩය = New MessageToUser; පණිවුඩය. පෙළ = "දත්ත සමුදායට සම්බන්ධ වීමට නොහැකි විය"+ විස්තර දෝෂය (); පණිවුඩය. වාර්තා කිරීමට() ; EndAttempt ; සම්බන්ධතාවය = නිර්වචනය නොකළ ;

සම්බන්ධතා වර්ගය සඳහා V82.යෙදුමමෙම ක්‍රමය මුලින් නිර්මාණය කරන ලද COM වස්තුව සඳහා භාවිතා වේ V82.COM සම්බන්ධකයක්රමය සම්බන්ධතාවයට අදාළ වේ. ඉල්ලීම සමඟ තවදුරටත් වැඩ කරයි සම්මත අදහස් 1C. කේතයේ එය මේ වගේ ය:

ඉල්ලීම = සම්බන්ධතාවය. NewObject("ඉල්ලීම"); // සදහා V82.COM සම්බන්ධකය ඉල්ලීම = සම්බන්ධතාවය. NewObject("ඉල්ලීම"); // සදහා V82.යෙදුම ඉල්ලීම. පෙළ = "තෝරන්න | සංවිධානවල තනතුරු කේතය, | සංවිධානවල තනතුරු.නම|FROM | නාමාවලිය. සංවිධානවල තනතුරු AS සංවිධානවල තනතුරු"; ප්‍රතිඵලය = ඉල්ලීම. ධාවනය (); නියැදිය = ප්රතිඵලය. තෝරා() ; බයි තේරීම. Next() Loop EndLoop ;

1C අනුවාදය සඳහා: ව්‍යවසාය 8.3 සඳහා COM වස්තු නිර්මාණය කිරීමේදී ඔබ භාවිතා කළ යුතු හැර සියල්ල නොවෙනස්ව පවතී. "V83.COMConnector"හෝ "V83. යෙදුම".

අඩවි විග්‍රහ කිරීම යනු කුමක්ද?.


ඉහල