კუჭ-ნაწლავის დაავადებების შესახებ

1C მონაცემთა ბაზებს შორის მონაცემთა გაცვლის ერთ-ერთი ვარიანტია გაცვლა COM კავშირის საშუალებით.

COM კავშირის გამოყენებით, შეგიძლიათ დაუკავშირდეთ ერთი 1C მონაცემთა ბაზიდან მეორეს და წაიკითხოთ ან ჩაწეროთ მონაცემები. ამ მეთოდის გამოყენება შესაძლებელია როგორც მონაცემთა ბაზების კლიენტ-სერვერის ვერსიებში, ასევე ფაილურ მონაცემთა ბაზებში. ამ სტატიაში განვიხილავთ ამ ტიპის კავშირის მაგალითებს. მაგალითები იყენებს პლატფორმას 8.2.

თქვენ შეგიძლიათ შექმნათ ორი ტიპის COM ობიექტი 1C აპლიკაციისთვის. ეს V82.აპლიკაციადა V82.COM კონექტორი. იმ შემთხვევაში, თუ V82.აპლიკაციაამოქმედდა 1C აპლიკაციის თითქმის სრულფასოვანი ასლი. გამოყენების შემთხვევაში 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; შეტყობინება. ტექსტი = + ErrorDescription() ; შეტყობინება. მოხსენება() ;
  4. ბოლო მცდელობა ;მიმდინარეობს მონაცემთა ბაზიდან გათიშვა

    კავშირი = განუსაზღვრელი; V82.აპლიკაციაობიექტისთვის V82.COM კონექტორიაუცილებელია კავშირის შეწყვეტა, წინააღმდეგ შემთხვევაში დარჩება არასრული სესია, რომელიც შემდეგ ხელით უნდა წაიშალოს. იმ შემთხვევაში, თუ

    კავშირი ავტომატურად წყდება, როდესაც დასრულებულია კავშირი და არის კიდევ ერთი პატარა წერტილი.

მომხმარებლისთვის, რომლითაც ხდება კავშირი, მის პარამეტრებში უნდა გამორთოთ ჩამრთველი „დადასტურების მოთხოვნა პროგრამის დახურვისას“.

ახლა მოდით გავაერთიანოთ ყველა კოდი კავშირი = ახალი COMObject ("V82.Application" ); ConnectionString = "Srvr = " "Server1C" ";Ref = " "MyBase" "; Usr = Petya; Pwd = 123" ; //ConnectionString = "ფაილი = ""С:\MyBase""; Usr = Petya; Pwd = 123";კავშირის მცდელობა = კავშირი. დაკავშირება (ConnectionString) ; Exception Message = New MessageToUser; შეტყობინება. ტექსტი = "ბაზთან დაკავშირება ვერ მოხერხდა"+ აღწერაError() ; შეტყობინება. მოხსენება() ;

ბოლო მცდელობა ; კავშირი = განუსაზღვრელი; V82.აპლიკაციაკავშირის ტიპისთვის V82.COM კონექტორიმეთოდი გამოიყენება COM ობიექტისთვის, რომელიც თავდაპირველად შეიქმნა და for

მეთოდი გამოიყენება კავშირისთვის. შემდეგ მოთხოვნა მუშავდება სტანდარტული 1C ინსტრუმენტების გამოყენებით. კოდში ასე გამოიყურება: მოთხოვნა = კავშირი. NewObject("მოთხოვნა"); V82.COM კონექტორი // ამისთვის მოთხოვნა = კავშირი. NewObject("მოთხოვნა"); V82.აპლიკაცია მოთხოვნა = კავშირი. NewObject("მოთხოვნა"); მოთხოვნა. ტექსტი = "არჩევა | ორგანიზაციების პოზიციები.| ორგანიზაციების პოზიციები.სახელი |საიდან| ცნობარი ორგანიზაციების პოზიციები.

; შედეგი = მოთხოვნა. Run(); ნიმუში = შედეგი. Choose() ; ნახვამდის შერჩევა. Next() Loop EndLoop ; 1C: Enterprise 8.3 ვერსიისთვის ყველაფერი უცვლელი რჩება გარდა იმისა, რომ COM ობიექტების შექმნისას უნდა გამოიყენოთ "V83.COMConnector".

ან

"V83.Application"
) Სწორია


ამავდროულად, არაერთხელ მინახავს, ​​როდესაც პუბლიკაციები, რომლებიც 10 ქულამდეც კი არ აღწევდნენ, უბრალოდ "ამოიფრინდნენ".
რატომ მოხდა ეს? აშკარად იმიტომ, რომ ვიღაცას აშკარად მოსწონდა ისინი.

ეს არის ის, რასაც მე ვამბობ, რომ კარგი იქნება იმის გაგება, თუ რამდენად გჭირდებათ ეს რეიტინგული სტატიის წაკითხვის გარეშე, ან შეაფასოთ არც ისე პრიმიტიულად +/-. რაც მომეწონა, ასე გამოვასწორებდი: იმდენი მოიპოვა იმის გამო, რომ ვარსკვლავები გაერთიანდნენ და საიტზე უამრავი ადამიანი შეიკრიბა და ბევრს მოეწონა, თქვენ თვითონ ხვდებით, რომ ეს შემთხვევითობის საკითხია, რადგან როგორც კი სტატია ტოვებს მთავარ გვერდს, მისი პოვნა შესაძლებელია მხოლოდ მოთხოვნით და ასე რომ, ყველა ვინც გადის ხმებს. და, რამდენადაც მე მესმის, მუდმივი კომენტარები = სტატიის პოპულარიზაცია საშუალებას გაძლევთ შეინახოთ იგი მთავარ გვერდზე.


იმათ. მინუსი ასევე ითვლება "მადლობა"? მაინტერესებდა თქვენი აზრი გამოვიყენო თუ არა ასეთ შემთხვევებში და რამდენად საინტერესო ფიქრობენ სხვები? უნდა დააყენო, როცა სტატია საზიანოა/ცუდია თუ უბრალოდ უსარგებლო/ცარიელი შენთვის?
ჩემი აზრით, სტატია ჰგავს რეიტინგის მარტივ ზრდას, რადგან:
1. ჩემს მიერ მოყვანილი ტიპების პრობლემა სრულიად იგნორირებული იყო ავტორის მიერ, თუმცა მას არ ეზარებოდა კომენტარების დაწერა.
2. სტატიაში აშკარა უზუსტობაა: ნათქვამია, რომ ეს ერთადერთი გზაა

V82 = ახალი COMObject ("V82.ComConnector"); კოდი = AccountCOM.Code;


მაგრამ მე შემიძლია ამის გაკეთება მარტივად შემდეგი დამუშავების გამოყენებით:

Report(Base. Directories. Conterparties. Find By Name("LLC"). კოდი);


და ყველაფერი კარგადაა! და მე ვირჩევ კავშირს V82.ComConnector
რატომღაც უცნაურია, რომ ავტორს საერთოდ არ აინტერესებს, რომ მისი სტატია შეიცავს ისეთ პრობლემებს, რომლებიც აღინიშნა, მაგრამ არანაირად არ რეაგირებს.
3. მაგრამ ჯერ კიდევ არის პრობლემა, როდესაც ჩნდება შეცდომა „კლასი არ არსებობს“.
4. მაგრამ პრობლემაა 8.2 დაყენებისას და მერე 8.1-ის დაყენებისას - სცადეთ გაცვლა OLE/COM-ით სტანდარტული UT-BP გაცვლითი!
5. შეგიძლიათ მიუთითოთ საიტზე ძირითადი დამუშავება, რომელიც საშუალებას გაძლევთ უნივერსალურად დაუკავშირდეთ OLE/COM-ის საშუალებით, რათა დამწყებებმა დრო არ დაკარგონ, თქვენ დაწერეთ მათთვის! სხვათა შორის, რატომღაც მისი სურათი თქვენს ეკრანზეა, რატომ? და შედეგად, 2 სიტყვა არსებითად და კიდევ 6 კულისებში.

ზოგადად, ტალახს არ ვყრი, მაგრამ კონკრეტულ ხარვეზებს ვანიშნებ, მაგრამ რეაქცია ნულოვანია. თუ ეს არის გამოცდილება, რომელსაც თქვენ იზიარებთ, მაშინ ის გარკვეულწილად მცდარი და არასრულია.
ჩემი აზრი ის არის, რომ თუ ავტორს სურდა შეეგროვებინა ყველა ხარვეზი, მას შეეძლო, სულ მცირე, მოუსმინოს სხვა ადამიანების გამოცდილებას და არა კომენტარის გაკეთება. მაშინვე დგება სიტუაცია, როცა წაკითხულმა ავტორზე მეტი იცის, ეუბნებიან (ზოგჯერ არასწორად) და ისიც უპასუხებს. შედეგად, ყველა ინფორმაცია არა სტატიაში, არამედ კომენტარებშია! სასაცილო! ეს ხშირად ხდება, მაგრამ თქვენ არ გჭირდებათ ფოკუსირება იმაზე, რომ გინდოდათ საუკეთესო - მე ვაჩვენებ რა არის საუკეთესო და სხვები აჩვენებენ ამას! ჩართეთ ეს სტატიაში და ღირებული იქნება ამ შეტაკების წაკითხვა.


საკვანძო სიტყვები: COM, კავშირი, გარე, OLE, ავტომატიზაცია, დაკავშირება, ComConnector, Srvr

მონაცემთა წვდომისთვის 1C:Enterprise 8.0 COM კავშირების გამოყენებისას, არსებობს შემდეგი უპირატესობები ავტომატიზაციის სერვერის გამოყენებასთან შედარებით:

  1. კავშირის უფრო სწრაფი დამყარება, ვინაიდან არ არის საჭირო ცალკე ოპერაციული სისტემის პროცესის შექმნა და ყველა მოქმედება შესრულებულია გამოძახების პროცესში;

  2. უფრო სწრაფი წვდომა 1C:Enterprise ობიექტების თვისებებზე და მეთოდებზე, ვინაიდან წვდომის ორგანიზება არ საჭიროებს ინტერპროცესურ კომუნიკაციას;
  3. ოპერაციული სისტემის რესურსების ნაკლები მოხმარება.

ზოგადად, 1C:Enterprise 8.0-თან მუშაობა COM კავშირის საშუალებით მსგავსია 1C:Enterprise-თან მუშაობა სერვერის ავტომატიზაციის რეჟიმში. ძირითადი განსხვავებები შემდეგია:

  1. ავტომატიზაციის სერვერის შემთხვევაში გაშვებულია სრულფასოვანი 1C:Enterprise 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. იდენტიფიკატორით V8.COMConnector იქმნება COM ობიექტი, რომლის დახმარებით მყარდება კავშირი;

  2. გამოიძახება ადრე შექმნილი V8.COMConnector ობიექტის Connect მეთოდი. Connect მეთოდი აბრუნებს ბმულს COM კავშირის ობიექტზე 1C:Enterprise 8.0 საინფორმაციო ბაზაზე;
  3. მიღებული COM კავშირის ობიექტის მეშვეობით ხდება წვდომა იმ ინფორმაციის ბაზის მოქმედ მეთოდებზე, თვისებებზე და ობიექტებზე, რომლებთანაც კავშირი დამყარებულია.

Მნიშვნელოვანი! COM კავშირში მომხმარებლის ინტერფეისის არარსებობის გამო, ყველა ობიექტი, თვისება და მეთოდი არ შეიძლება გამოყენებულ იქნას COM კავშირში.

1C: საწარმოს ობიექტები, რომლებიც ხელმისაწვდომია გარედან COM კავშირის საშუალებით:

  1. გარე შეერთების მოდულის ექსპორტირებული ცვლადები და პროცედურები/ფუნქციები

  2. ექსპორტირებული ცვლადები და საერთო მოდულების პროცედურები/ფუნქციები
  3. მთლიანი მოდულების ჩათვლით და გამორიცხვა საერთო მოდულების თვისებების დაყენებით

  4. საერთო მოდულების ფრაგმენტების ჩათვლით და გამორიცხვა წინასწარი პროცესორის გამოყენებით
  5. გლობალური კონტექსტი 1C: Enterprise 8.0, გარდა იმ ობიექტებისა, რომლებიც მჭიდროდ არის დაკავშირებული კლიენტის აპლიკაციასთან (TextDocument, TabularDocument, ...)

1.2 გარე კავშირის მოდული

როგორც უკვე აღვნიშნეთ, აპლიკაციის მოდულის პასუხისმგებლობას COM კავშირის საშუალებით მუშაობისას ასრულებს გარე კავშირის მოდული. ამ მოდულს შეიძლება ჰქონდეს მოვლენის დამმუშავებლის პროცედურები When SystemStarts() და WhenSystemCompletes(), რომელიც შეიძლება შეიცავდეს მოქმედებებს, რომლებიც შესრულებულია კავშირის ინიციალიზაციისა და შეწყვეტის შემდეგ, შესაბამისად.

გარე შეერთების მოდულში ექსპორტის საკვანძო სიტყვით განსაზღვრული პროცედურები, ფუნქციები და გლობალური ცვლადები, როგორც აპლიკაციის მოდულის შემთხვევაში, ხდება გლობალური კონტექსტის ნაწილი.

1.3 საერთო მოდულები

თვისებები "კლიენტი", "სერვერი" და "გარე კავშირი" დაინერგა საერთო მოდულებისთვის. ისინი მიზნად ისახავს კონფიგურაციაში განსაზღვრონ მოდულების გამოყენება კლიენტ-სერვერის ვერსიაში და COM კავშირის რეჟიმში.

1.4 ობიექტი "V8.COMConnector"

V8.COMConnector COM ობიექტის მიერ გადაჭრილი ერთადერთი ამოცანა არის COM კავშირის დამყარება 1C:Enterprise 8.0 საინფორმაციო ბაზასთან. კავშირების შეუზღუდავი რაოდენობა შეიძლება დამყარდეს V8.COMConnector ობიექტის ერთი ინსტანციის გამოყენებით. V8.COMConnector ობიექტს აქვს ერთი Connect მეთოდი, რომელიც შექმნილია COM კავშირის დასამყარებლად 1C:Enterprise 8.0 საინფორმაციო ბაზასთან.

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

საინფორმაციო უსაფრთხოების სისტემასთან შეერთების ხაზი წარმოადგენს პარამეტრი=მნიშვნელობის ფორმის ფრაგმენტების ჯაჭვს. ფრაგმენტები ერთმანეთისგან გამოყოფილია ";"-ით. თუ მნიშვნელობა შეიცავს სივრცეს, ის უნდა იყოს ჩასმული ორმაგ ბრჭყალებში (").

საერთო პარამეტრები:

Usr - მომხმარებლის სახელი;
Pwd - პაროლი.

ფაილის ვერსიისთვის განსაზღვრულია შემდეგი პარამეტრი:

ფაილი - საინფორმაციო ბაზის დირექტორია.

კლიენტ-სერვერის ოფციისთვის განსაზღვრულია შემდეგი პარამეტრები:

Srvr - 1C: Enterprise სერვერის სახელი;
Ref - სერვერზე არსებული ინფობაზის სახელი.

Connect მეთოდი ამყარებს COM კავშირს 1C:Enterprise 8.0 საინფორმაციო ბაზასთან და აბრუნებს ბმულს COM კავშირის ობიექტთან.

// იქმნება დამაკავშირებელი ობიექტი
V8 = ახალი COMObject ("V8.COMConnector");
// იქმნება COM კავშირის ობიექტი
კავშირი = V8.Connect("File=""c:\InfoBases\Trade""; Usr=""Director"";")

1.5 COM კავშირის ობიექტი

COM კავშირი 1C:Enterprise საინფორმაციო ბაზასთან უზრუნველყოფს სრულ წვდომას მის გლობალურ კონტექსტზე (იხ. „პროგრამის მოდულის შესრულების კონტექსტი“). მაშასადამე, COM კავშირს შეიძლება ჰქონდეს თავისი მეთოდები: სისტემის მუდმივები, მნიშვნელობები, რომლებიც მითითებულია ობიექტების კონფიგურატორში, რომლებზეც წვდომა ხდება მენეჯერების გამოყენებით (მაგალითად, მუდმივები, ჩამოთვლები, დირექტორიები, დოკუმენტები, დოკუმენტების ჟურნალები, ანგარიშები, დამუშავება, ტიპების გეგმები. მახასიათებლების, გეგმების ანგარიშების, გაანგარიშების ტიპების გეგმების, რეგისტრების), აგრეთვე გარე კავშირის მოდულში გამოცხადებული ცვლადები ექსპორტის საკვანძო სიტყვით.

გარდა ამისა, COM კავშირს აქვს დამატებითი NewObject მეთოდი, რომელიც შეიძლება გამოყენებულ იქნას გარკვეული ტიპის მნიშვნელობების შესაქმნელად.

tz = კავშირი. NewObject ("ValueTable");

სიმებიანი მეთოდი გაძლევთ საშუალებას მიიღოთ 1C:Enterprise მნიშვნელობების სიმებიანი წარმოდგენები.

ხედი = Connection.String(Data.UniqueIdentifier());

1.6. COM კავშირთან მუშაობის მახასიათებლები

ავტომატიზაციაში და COM კავშირში, TRUE და FALSE აქვს შემდეგი მნიშვნელობები: -1 (მინუს ერთი) და 0.

შესაძლებელია COM კავშირების აუზის ორგანიზება. ამავდროულად, COM კავშირის რამდენიმე ობიექტი წინასწარ იქმნება მიმღებ სერვერზე 1C:Enterprise და კიდევ ნაკლები დრო სჭირდება კავშირის დამყარებას, რადგან არ არის საჭირო ახალი ობიექტის შექმნა.

დანერგილია ახალი Query Builder ობიექტი, რომელიც შექმნილია მოთხოვნის ტექსტების გენერირებისთვის მითითებულ პარამეტრებზე დაყრდნობით. ეს ობიექტი მხარს უჭერს ანგარიშის შემქმნელის ფუნქციას, რომელიც არ არის დაკავშირებული ანგარიშის ელცხრილის დოკუმენტში ან მომხმარებლის ინტერფეისთან დაკავშირებულ სხვა ამოცანებთან. ამ ობიექტის გამოყენება შესაძლებელია 1C:Enterprise სერვერზე და COM კავშირში.

თქვენ შეგიძლიათ გამოიყენოთ COM ობიექტები 1C:Enterprise სერვერზე ჩაშენებული ენის გაშვებისას.

COM შეცდომები გარდაიქმნება ჩაშენებული ენის გამონაკლისებად.

თუ კონფიგურაცია ცდილობს შექმნას არასწორი ობიექტი, როგორიცაა ცხრილების დოკუმენტი, გარე შეერთების მოდულში, საერთო მოდულში ან ობიექტის მოდულში, COM კავშირი შეიძლება არ დამყარდეს ან შეიძლება შეწყდეს გამონაკლისის სახით.

კითხვა: საიტის ანალიზი COM IE 11-ის გამოყენებით


Კარგი დღე.!
კითხვა მტკივნეულად ცნობილია, თქვენ უნდა აიღოთ ინფორმაცია საიტიდან. მაგრამ არის ნიუანსი:
1. ავტორიზაციის გვერდზე პირდაპირ გადასვლის საშუალება არ არის (პირველ რიგში გადადით მთავარ გვერდზე, დააჭირეთ LogIn ბმულს, მიიღეთ ავტორიზაციის ფორმა და მხოლოდ ამის შემდეგ შედით სისტემაში).
2. საიტზე თქვენ უნდა მოძებნოთ მონაცემები საძიებო ზოლის მეშვეობით, შემდეგ წაიკითხოთ და მოძებნოთ ხელახლა (მონაცემები შეიძლება იყოს რუსულ და ინგლისურ ენებზე, ანუ თუ საძიებო მონაცემები რუსულ ენაზეა, მაშინ უნდა მოძებნოთ " საიტის რუსული ვერსია და ეს არის ერთი დაწკაპუნება სხვა გვერდის ბმულზე, იგივე პრობლემაა ინგლისურთან.

საბოლოოდ:
- გადადით მთავარ გვერდზე - შედით - მოძებნეთ მონაცემები - (საჭიროების შემთხვევაში გადადით საიტის სხვა ვერსიაზე) - წაიღეთ.

პრობლემა:
მონაცემები არ იკითხება "დოკუმენტის" თვისებაში ბმულის გავლისას.
ეს ხდება ორ წერტილში:
- როდესაც ჩვენ მივყვებით ბმულს შესასვლელად (ეს არ არის ღილაკი, არამედ მხოლოდ ბმული);
- როდესაც ვცვლით ენას საიტზე (ასევე ბმული).

შენიშვნა
თუ ავტორიზაციის ეტაპზე ბმულის გაყოლებამდე მიიღებთ ბმულს, დახურეთ com და კვლავ გახსენით IE.navigate("link") მეთოდით გადასვლით, მაშინ "დოკუმენტის" თვისებაში მონაცემები ნორმალურად მიდის. მაგრამ თქვენ ვერ შეძლებთ იგივეს გაკეთებას საიტზე ენის შეცვლისას, რადგან... ხელახლა მჭირდება შესვლა და პლიუს, არ მინდა ამ პრობლემის გადაჭრა ზუსტად ასე.

აი კოდი:

&კლიენტის პროცედურაზე SetWaitingIE(IE, SecondCall=False) თუ არ არის IE.Busy მაშინ D = CurrentDate() + 3; while D >= CurrentDate() მარყუჟი თუ IE.Busy მაშინ შეწყვეტა; დაასრულე თუ;< 4 Цикл КонецЦикла; Попытка Если IE.Document.ReadyState = Null Тогда IE.Refresh(); УстановитьОжиданиеИЕ(IE); КонецЕсли; Пока IE.Document.ReadyState <>"სრული" ციკლის საბოლოო ციკლი; გამონაკლისი თუ SecondCall then Return; Else Link = IE.LocationURL; IE.Quit(); IE = GetCOM ("InternetExplorer.Application"); IE.Navigate(ლინკი); SetExpectIE (IE, True); დაასრულე თუ;<>IE.LocationURL შემდეგ RootClasses = IE.Document.GetElementsByClassName("ClassName"); თუ RootClasses.Length = 1 მაშინ თითოეული RootClass-ისთვის RootClasses-დან Loop Classes = RootClass.Children; Გაუქმება;<>საბოლოო ციკლი; AmGroup = False; RuGroup = მცდარი; თითოეული კლასისთვის კლასებიდან Loop If HPreg(Class.ClassName) = "dropdown-header" მაშინ AmGroup = Find(Class.InnerText, "Americans") > 0; RuGroup = Find(Class.InnerText, "Europe") > 0; ElseIf HPreg (Class.ClassName)

"selected" then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 then IE.Navigate(Class .ყველა(1).Href); SetWaitingIE(IE); Გაუქმება;

დაასრულე თუ;
დაასრულე თუ; საბოლოო ციკლი; დაასრულე თუ; ---

დაასრულე თუ;

დაასრულე თუ; საბოლოო ციკლი; დაასრულე თუ; ---

IE.Document.GetElementById("ID").Value = PersonName; FindButton = IE.Document.GetElementById("ID"); FindButton.Focus(); FindButton.Click(); ცდილობს SetExpect(IE); //მიღებული მონაცემების შემოხაზვა ExceptionListNotFound.Add(Person); განაგრძეთ;

ბოლო მცდელობა; საბოლოო ციკლი; გამონაკლისის ანგარიში ("შეცდომა:" + Symbols.PS + ErrorDescription()); Გაუქმება;


ბოლო მცდელობა; საბოლოო ციკლი; IE.Quit(); პროცედურის დასასრული

პასუხი:
თემა ძალიან საინტერესოა, მაგრამ პირადად მე, სამწუხაროდ, არც გამოცდილება მაქვს და არც შესაძლებლობა, როგორმე გავიგო ეს პრობლემა. თუ თქვენ შეგიძლიათ იპოვოთ ინფორმაცია ამ თემაზე, გთხოვთ გააზიაროთ. --- შეტყობინების გაერთიანება, 2016 წლის 29 აპრილი როგორც მივხვდი, არ არის წვდომა SQl მონაცემთა ბაზაზე?კარგად, თუ პარსირება, მაშინ რა წვდომა? კითხვა: COM კავშირი 1C 8.3 - 1C 8.3 შესაძლებელია თუ არა კავშირში გამართვის შეყვანაკარგად, თუ პარსირება, მაშინ რა წვდომა? //იმიტომ გადაცემული კოდი შეიძლება შეიცავდეს შეცდომებს, შემდეგ ჩვენ შევახვევთ მის შესრულებას მცდელობით.სცადეთ შესრულება (CodeExecute); // შეასრულეთ კოდი სტრიქონის სახით სხვა კომპიუტერზე COM კავშირის საშუალებით (Libra Base External Connection Module)გამონაკლისი   //თუ არის შეცდომა, მაშინ დააბრუნეთ მისი ტექსტი Response = ErrorDetailView(ErrorInfo()); ბოლო მცდელობა ; დაბრუნების პასუხი; EndFunction ფუნქცია TestConnection(InParameter, OutParameter) ExportSecurityCheck(); // სხვა მომხმარებლის სახელით გარე დაკავშირებისას მავნე კოდის შესრულების მცდელობებისგან დაცვა. OutParameter = "არსებობს კავშირი მასშტაბის ბაზასთან COM კავშირის საშუალებით!"; დაბრუნება True; საბოლოო ფუნქცია
BP 3.0-დან მე ვასრულებ შემდეგ ფრაგმენტს:
მცდელობა
Com = ახალი COMObject ("V83.COMConnector"); კავშირი = Com.Connect ("File=""C:\1 c\Base_1C\Libra""; Usr=""ComExchange""; Pwd=""1"";"); TellUser("ტესტი გავიდა! არსებობს კავშირი სასწორის მონაცემთა ბაზასთან"); Exception Error = ErrorDetailView(ErrorInfo()); TellUser("არ არის COM კავშირი Libra ბაზასთან! დეტალები "+Error); Com=Udefined; Დაბრუნების ; ბოლო მცდელობა ; გარეთ = ""; In = "1"; თუ Connection.Communication Test(In, Out) მაშინ TellUser("კომუნიკაციის ტესტი მასშტაბის კონფიგურაციით წარმატებულია! პასუხი: "+Out); წინააღმდეგ შემთხვევაში TellUser("სასწორის კონფიგურაციით კომუნიკაციის ტესტი ვერ მოხერხდა! პასუხი: "+გამოსული); Დაასრულე თუ ;
მე მესმის, რა თქმა უნდა, რომ შეუძლებელი იქნება Execute(CodeString1C8) ოპერატორის შეყვანა, მაგრამ არის თუ არა ასეთი შესაძლებლობა გარე კავშირის მოდულის დისტანციური პროცედურის გამოძახებისას ძირითადი მონაცემთა ბაზიდან Connection.TestConnection(In, Out) შეიყვანეთ მისი კოდი იმავე გამართვის სესიაში უსაფრთხოების შემოწმების ფუნქციაში( ) მათი გამოძახების პროცედურაში?
მე უკვე გადავხედე დოკუმენტაციას, რომელიც შემეძლო ამ საკითხთან დაკავშირებით. მე დავაყენე ვარიანტები, რათა ჩართოთ გამართვა და წყვეტის წერტილები ყველგან ორივე კონფიგურაციაში. ორივე კონფიგურატორი გავუშვი.
შესაძლებელია თუ არა ამ სიტუაციაში უსაფრთხოების შემოწმების() პროცედურის შემდგომი გამართვა გარე კავშირის მოდულის მხარეს?

შეკითხვა: არასწორი IP მისამართი COM კავშირში


არსებობს დამუშავება, რომელიც გადასცემს დოკუმენტებს სერვერებს შორის V83.ComConnector-ის საშუალებით. სერვერი 1 (1C ვერსია 8.2.19.90) ყოველთვის უკავშირდება სერვერს 2 (ვერსია 8.3.8.2033). კავშირის ხაზი შეიცავდა სერვერის 2 IP მისამართს და ყველაფერი კარგად მუშაობდა. თავად სერვერზე 1 მე ასევე ვნახე დაინსტალირებული პლატფორმა, როგორც სერვერზე 2, ვერსია 8.3.9.2033 (თუ ეს მნიშვნელოვანია).

პრობლემა ისაა, რომ სერვერ 2-ზე შეიცვალა IP მისამართი, დამუშავება რათქმაუნდა შეწყდა და როდესაც შევედი ახალი IP კავშირის ხაზში, დამუშავება წარმოშობს შეცდომას, რომლის აღწერა ჯერ კიდევ ძველი IP (!) და ტექსტია. "კავშირის დამყარების მცდელობა წარუმატებელი აღმოჩნდა, რადგან საჭირო პასუხი სხვა კომპიუტერიდან არ მიიღეს საჭირო დროში, ან უკვე დამყარებული კავშირი შეწყდა უკვე დაკავშირებული კომპიუტერის არასწორი პასუხის გამო."

გადატვირთეს ყველაფერი, გაასუფთავეს ქეშები და ა.შ., ადმინისტრატორები იფიცებენ, რომ ყველაფერი წესრიგშია მათი მხრიდან, შეგიძლიათ შეხვიდეთ ერთი სერვერიდან მეორეში RDP-ით და ა.შ.

რისი ბრალი შეიძლება იყოს, როგორ მოვაგვარო? გადავხედე მთელ ინტერნეტს და ვერ ვიპოვე ასეთი სიტუაცია!

"selected" then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 then IE.Navigate(Class .ყველა(1).Href); SetWaitingIE(IE); Გაუქმება;() 100% დარწმუნებული ვარ! მეორე დღეს ვცდილობ, როგორც დავწერე, დებაგერით ვუყურებ, კავშირის ტესტისთვის სულელური ერთუჯრედიანი დამუშავებაც კი შევქმენი, ეგ შეცდომა ჩნდება და ეგაა.

კითხვა: COM კავშირი სხვადასხვა ვერსიებთან


Სალამი ყველას.
მე მაქვს მონაცემთა ბაზა ala "Consolidation", რომელიც აგროვებს სხვადასხვა მონაცემებს სხვადასხვა მონაცემთა ბაზებიდან და ყველაფერს ერთ წყობაში მოაქვს. პრობლემა ის არის, რომ თქვენ გჭირდებათ ამ მონაცემთა ბაზებთან დაკავშირება com-ის საშუალებით, მაგრამ ისინი სხვადასხვა ვერსიებია, ასე რომ, ბოლოს მე ვიღებ შეცდომას, როგორიცაა
კავშირის შეცდომა!(ExternalProcessing.TransferHistory.Form.Form.Form(12)): შეცდომა კონტექსტური მეთოდის გამოძახებისას (Connect) : გამონაკლისი მოხდა (V83.COMConnector. 1): შეუსაბამობა კლიენტისა და სერვერის ვერსიებს შორის 1 C:Enterprise Client ვერსიები განსხვავდება და სერვერი (8.3. 8.1964 - 8.3. 6.2332), კლიენტის აპლიკაცია: COM კავშირი

მე დავაყენე ერთი კავშირი, მეორე იშლება...

მე ვიცი, რომ როგორღაც, კომპონენტის სერვისის საშუალებით, შეგიძლიათ შექმნათ „თქვენი კლასები (კონექტორები)“ თითოეული ვერსიისთვის და შემდეგ შექმნათ ახალი COM ობიექტი, რომელიც შეესაბამება კლასის პლატფორმის ვერსიას... შესაძლოა ვცდები.

დამეხმარეთ ამ პრობლემის დაძლევაში...

"selected" then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 then IE.Navigate(Class .ყველა(1).Href); SetWaitingIE(IE); Გაუქმება;ესე იგი... ამოვხსნი კითხვას..

შეკითხვა: Com შეცდომა შევსების დამუშავებისას


გამარჯობა.
8.2 საცალო ვაჭრობა 1.
მე ვუკავშირდები 8.1-ს არ არის ტიპიური კონფი.
com-ის საშუალებით ვუკავშირდები მონაცემთა ბაზას და ვცდილობ დოკუმენტის შექმნას, მაგრამ როცა ვურეკავ "CreateDocument()" ან "GetObject()" პროცედურაში შეცდომა ჩნდება. დამუშავების შევსება. იხილეთ ნახ.

იგივეს ვცდილობ თავად 8.1 მონაცემთა ბაზაში, მაგრამ შეცდომა არ არის და არც შევსებულვარ Filling Processing-ში.
რისი ბრალი შეიძლება იყოს?

"selected" then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 then IE.Navigate(Class .ყველა(1).Href); SetWaitingIE(IE); Გაუქმება; ტურბოკი, ოხრად დაწერილი დოკუმენტის მოდული!

დაემატა 5 წუთის შემდეგ
მას არ ეძახიან! ის ცდილობს შედგენას! მაგრამ რადგან ComConnector-ის საშუალებით დაკავშირებისას დიალოგის რეჟიმის პრობლემა არ არსებობს, დოკუმენტის მოდულის შედგენა შეუძლებელია.
ასეთ შემთხვევებში, როდესაც საჭიროა დიალოგთან მუშაობის განხორციელება ობიექტის მოდულში, გამოიყენეთ ინსტრუქციები წინასწარ პროცესორისთვის

ეს არ არის თქვენი შეცდომა, არამედ შეცდომა დოკუმენტის მოდულში მონაცემთა ბაზაში, რომელსაც უკავშირდებით.

მონაცემთა ბაზაში კოდი შესრულებულია კლიენტზე და არის დიალოგის რეჟიმი, ასე რომ ყველაფერი ხდება შეცდომების გარეშე.

არ გამოიყენოთ ComConnector, V8.Application კავშირისთვის, მაშინ ინტერფეისი ხელმისაწვდომი იქნება თქვენთვის

დაემატა 5 წუთის შემდეგ
=======================================================================================================================
გარე კავშირის აღწერილობიდან (SP) მე ხაზგასმით აღვნიშნე ის, რაც უნდა წაიკითხოთ ComConnections-ის შესახებ

აღწერა:

ზოგადად, 1C:Enterprise 8-თან მუშაობა გარე კავშირის საშუალებით ჰგავს 1C:Enterprise-თან მუშაობას სერვერის ავტომატიზაციის რეჟიმში. ძირითადი განსხვავებები შემდეგია:

  • ავტომატიზაციის სერვერის შემთხვევაში იხსნება სრულფასოვანი 1C:Enterprise 8 აპლიკაცია, ხოლო გარე კავშირის შემთხვევაში იხსნება შედარებით მცირე მიმდინარე COM სერვერი.
  • გარე კავშირის საშუალებით მუშაობისას, ფუნქციონირება, რომელიც ამა თუ იმ გზით არის დაკავშირებული 1C:Enterprise 8 მომხმარებლის ინტერფეისის ორგანიზაციასთან, მიუწვდომელია;
  • გარე კავშირთან მუშაობისას, 1C:Enterprise 8 კონფიგურაციის მართული აპლიკაციის მოდული (ჩვეულებრივი აპლიკაციის მოდული) არ გამოიყენება გარე კავშირის მოდულით მუშაობისას.
გარე კავშირის გამოყენებისას, არსებობს შემდეგი უპირატესობები ავტომატიზაციის სერვერთან შედარებით:
  • კავშირის უფრო სწრაფი დამყარება, ვინაიდან არ არის საჭირო ცალკე ოპერაციული სისტემის პროცესის შექმნა და ყველა მოქმედება შესრულებულია გამოძახების პროცესში;
  • უფრო სწრაფი წვდომა 1C:Enterprise ობიექტების თვისებებზე და მეთოდებზე, ვინაიდან წვდომის ორგანიზება არ საჭიროებს ინტერპროცესურ კომუნიკაციას;
  • ოპერაციული სისტემის რესურსების ნაკლები მოხმარება.
1C:Enterprise 8 მონაცემებზე წვდომის ორგანიზებისთვის გარე კავშირის საშუალებით, შესრულებულია მოქმედებების შემდეგი თანმიმდევრობა:
  • იქმნება COM კავშირის მენეჯერი, რომლის დახმარებით მყარდება კავშირი;
  • ზარი კეთდება COM კავშირის მენეჯერის Connect მეთოდზე. Connect მეთოდი აბრუნებს გარე კავშირს 1C:Enterprise 8 საინფორმაციო ბაზასთან;
  • გარე კავშირის საშუალებით ხდება წვდომა იმ ინფორმაციის ბაზის მოქმედ მეთოდებზე, თვისებებზე და ობიექტებზე, რომლებთანაც კავშირი დამყარებულია.
Მნიშვნელოვანი! მომხმარებლის ინტერფეისის არარსებობის გამო, ყველა ობიექტი, თვისება და მეთოდი არ შეიძლება გამოყენებულ იქნას გარე კავშირში.
გარე კავშირი უზრუნველყოფს სრულ წვდომას მის გლობალურ კონტექსტზე. მაშასადამე, გარე კავშირს, როგორც მის მეთოდებს, შეიძლება ჰქონდეს: სისტემის მუდმივები, კონფიგურატორში მითითებული ობიექტების მნიშვნელობები, რომლებზედაც წვდომა ხორციელდება მენეჯერების გამოყენებით (მაგალითად, მუდმივები, ნუმერაციები, დირექტორიები, დოკუმენტები, დოკუმენტების ჟურნალი, ანგარიშები. , დამუშავება, მახასიათებლების ტიპების გეგმები, ანგარიშთა სქემები, გამოთვლის ტიპის გეგმები, რეგისტრები), ასევე გარე კავშირის მოდულში გამოცხადებული ცვლადები ექსპორტის საკვანძო სიტყვით.

ხელმისაწვდომობა:

ინტეგრაცია.

კითხვა: COM კავშირი, მახასიათებლები ტიპის გეგმა


ამოცანაა პროგრამულად შექმნათ ახალი ელემენტი დამახასიათებელი ტიპების ცნობილ გეგმაში COM კავშირის საშუალებით. კავშირი დამყარებულია, აქ ყველაფერი კარგადაა.

მე ასე ვწერ:

TypeDescriptionTech = New TypeDescription("DirectoryLink. Counterparties"); PurposeProperties = კავშირი. მახასიათებლების ტიპების გეგმები. ობიექტების კატეგორიების თვისებების მიზნები. FindByName(„ცნობარი „ფიზიკური პირები““); NewElement = კავშირი. მახასიათებლების ტიპების გეგმები. ობიექტის თვისებები. CreateItem(); ახალი ელემენტი. სახელი = PropertyName; ახალი ელემენტი. PropertyAssignment = PropertyAssignment; ახალი ელემენტი. ValueType = DescriptionTypesTech;

ბოლო ხაზი არ მუშაობს. და ეს გასაგებია, ის პოულობს ასეთ ტიპს მონაცემთა ბაზისთვის, სადაც მუშაობს 1C, მაგრამ მე მჭირდება ტიპი თანდართული მონაცემთა ბაზისთვის. როგორ მივიღოთ იგი?

ჩემს ვერსიაში უბრალოდ იქმნება ელემენტი მნიშვნელობის ტიპის "Custom List". პრინციპში მუშაობს, მაგრამ რაღაცნაირად მახინჯია.

პლატფორმის ფორმა 8.3. COM კავშირი წინაპირობაა. გადაწყვეტილებები მისი გამოყენების გარეშე არ არის საინტერესო.

"selected" then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 then IE.Navigate(Class .ყველა(1).Href); SetWaitingIE(IE); Გაუქმება;

რულონები. მადლობა, იმუშავა.

კითხვა: COM კავშირი. შეკითხვის პარამეტრის პრობლემა


Კარგი დღე.
პრობლემა მოთხოვნასთან დაკავშირებით COM კავშირის საშუალებით.

Perem TK; ნომენკლატურა Array = COM.NewObject("Array"); თითოეული სტრიქონისთვის TZNomenclature Cycle Nomenclature = COM.Directories.Nomenclature.GetLink(COM.NewObject("UniqueIdentifier", Abbr(String.Nomenclature.Identifier))); Nomenclature Array.Add(Nomenclature); საბოლოო ციკლი; If ArrayItems.Quantity()<>0 შემდეგ მოთხოვნა = COM.NewObject("მოთხოვნა"); Request.Text = "SELECT |PricesItemsSliceLast.Commodities AS ნომენკლატურა, |PricesItemsSliceLast.SalePrice AS Price, |PricesItemsSliceLast.VAT Rate, |PricesItemsSliceLast.RateNP |FROM.Destteric | = &PriceType |და ინვენტარი B ( &Array ნომენკლატურის) |და ინვენტარი და მასალები.ThisGroup = FALSE |და რეგისტრატორის ლინკი Document.Setting SalesPrices) AS NomenclaturePricesSliceLast"; Request.SetParameter("Item Array", Item Array); 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("დღგ-ს განაკვეთი"); დაასრულე თუ;

პრობლემა არის ზუსტად ერთეულში ან ნივთების მასივში, თუ თქვენ დააყენეთ ისინი, როგორც პარამეტრი, მოთხოვნა აბრუნებს ცარიელ ფასებს, თუ თქვენ საერთოდ არ მიუთითებთ ამ პარამეტრს, მაშინ მოთხოვნა აბრუნებს სწორ მონაცემებს;
იმავე გარე მონაცემთა ბაზის შეკითხვის კონსოლში ყველაფერი უპრობლემოდ მუშავდება.
რისი ბრალი შეიძლება იყოს?

"selected" then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 then IE.Navigate(Class .ყველა(1).Href); SetWaitingIE(IE); Გაუქმება;

სცადეთ ამის გაკეთება VremTable-ის საშუალებით. შექმენით მნიშვნელობების ცხრილი სვეტებით, შესაბამისად. მოიწონეთ, შეავსეთ იგი, ჩასვით მოთხოვნაში და შემდეგ გამოიყენეთ იგი შიდა კავშირით.

შეკითხვა: Com კავშირი ფაილის მონაცემთა ბაზიდან ფაილის მონაცემთა ბაზასთან


Დილა მშვიდობისა. მე მაქვს ფაილების მონაცემთა ბაზა 8.3, საიდანაც ვცდილობ დავაკავშირო სხვა ფაილის მონაცემთა ბაზა com კავშირის გამოყენებით:

დირექტორია = "C:\Users\1C\Workflow (ტესტი)"; მომხმარებელი = "ადმინისტრატორი"; პაროლი = ""; კავშირის პარამეტრები = "ფაილი = "+Directory+";Usr="+User+";Pwd="+პაროლი+";"; V83 = ახალი COMObject ("V83.COMConnector"); შეერთების მცდელობა = V83.Connect(ConnectionParameters); გამონაკლისის ანგარიში ("დოკუმენტის ნაკადთან დაკავშირება ვერ მოხერხდა!"); ბოლო მცდელობა;


გამონაკლისი არის დაშვებული, შეცდომის აღწერის გარეშე.
ორივე მონაცემთა ბაზა იძულებულია გაშვება 8.3-ში. დირექტორია და მომხმარებელი სწორად არის მითითებული. რა შეიძლება იყოს მიზეზი?

"selected" then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 then IE.Navigate(Class .ყველა(1).Href); SetWaitingIE(IE); Გაუქმება;

მე ვწერ კოდის ხაზს V82 = New 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"); ანგარიში ("Connect to Accounting 3.0..."); დაკავშირების მცდელობა = V82. Connect("srvr = ""msk- test1c:1641""; ref = ""db_test""; usr = ""ადმინისტრატორი""; pwd = ""123"""); შეტყობინება ("Hurray კავშირი დამყარდა!"); გამონაკლისის ანგარიში ("ბაზებთან კავშირი არ არის!"); ანგარიში (ErrorDescription()); // ინფორმაცია = ინფორმაცია შეცდომის შესახებ(); // ანგარიში ("აღწერა= "" + ინფორმაცია. აღწერა + """); // მოხსენება ("ModuleName= "" + Info.ModuleName + """); // მოხსენება ("LineNumber=" + Info.LineNumber); // ანგარიში ("SourceLine= "" + Info.SourceString + """); დაბრუნება; დასასრული მცდელობა;

სად დავარეგისტრირო ბიბლიოთეკა, კლიენტზე, 8.2 სერვერზე, 8.3 სერვერზე? ფიგურა ქვემოთ.
(კლიენტ-სერვერის ვერსიისთვის და 1C მონაცემთა ბაზის ფაილური ვერსიისთვის)

"selected" then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 then IE.Navigate(Class .ყველა(1).Href); SetWaitingIE(IE); Გაუქმება;იყო დავალება ერთ ტერმინალთან კომუნიკაცია ვებ სერვისის საშუალებით. ბაზა არის, კარგი, ვთქვათ, მსუბუქია. ასევე 0.5 თუ უფრო სწრაფად?

ძნელი სათქმელია - არ მაქვს საკმარისი მონაცემები. ჩვენ კმაყოფილი ვიყავით 0,5 წამით, გამოკლებული არასაჭირო 1C კლიენტი მესამე მხარის აპარატზე, მინუს ბიბლიოთეკის ვერსიების სინქრონიზაცია 1C ძრავის განახლების შემდეგ, მინუს ღმერთმა დაწყევლილი comsafearray, ნორმალური სახელები და ველების ტიპები... ის ჩვენზე ფიქრობდა მეორე მხარე (სისტემა, რომელიც ინტეგრირდება 1C-თან) „ისინი ვერ გაიგებენ“, როდესაც აღმოჩნდება, რომ მათ უნდა გადაწერონ თავიანთი 1C ზარები ახალ „სისტემური კომუნიკაციის მოდელზე“. მაგრამ ერთხელ ტესტის მონაცემთა ბაზაში ერთი ფუნქციის მოსინჯვის შემდეგ, ახლა ჩვენ გვაცინებენ „მოდით გადავიდეთ სერვისზე რაც შეიძლება მალე“.

კითხვა: როგორ გამოვიყენოთ TypeContains Com ობიექტებისთვის?


If Attributes.Type.ContainsType(Type("DirectoryLink.Nomenclature")) then There IsNomenclature = True; დაასრულე თუ;

"Props" მიღებული იქნა com კავშირიდან სხვა 1c მონაცემთა ბაზასთან. შედარებისას ჩნდება შეცდომა:

(ExternalProcessing.Coefficient Recalculation.Form.Form.Form(183)): შეცდომა კონტექსტური მეთოდის გამოძახებისას (ContainsType)
If Attribute.Type.ContainsType(Type("DirectoryLink.Nomenclature")) მაშინ
გამო:
მოხდა გამონაკლისი (1C:Enterprise 8.3.8.1964): ტიპის შეუსაბამობა (პარამეტრი ნომერი "1")

მეეჭვება, რომ ეს უნდა შევადაროთ com-ის ტიპს? როგორ შევამოწმოთ ტიპი სწორად?

"selected" then If AmGroup And Find(Class.All(0).InnerText, "English") > 0 OR RuGroup And Find(Class.All(0).InnerText, "Russia") > 0 then IE.Navigate(Class .ყველა(1).Href); SetWaitingIE(IE); Გაუქმება;

არ ტრიალებს. მე გადავწყვიტე საკითხი ასე:
მიმღების მონაცემთა ბაზაში ზოგად მოდულში გარე კავშირის ჩამრთველით, კოდი არის:

ფუნქცია CheckAttributeType(Attribute, Type) Export Return Attribute.Type.ContainsType(Type(Type)); საბოლოო ფუნქცია

მონაცემთა ბაზაში, საიდანაც მე ვუკავშირდები, Com-ის საშუალებით ვუწოდებ პროცედურას:

ComConnection.Avis_ExchangeProcedures.CheckAttributeType(ატრიბუტი, "DirectoryLink.Nomenclature")



თუ შეამჩნევთ შეცდომას, აირჩიეთ ტექსტის ნაწილი და დააჭირეთ Ctrl+Enter
გააზიარე: