1s бастап com қосылымы арқылы деректерді қабылдау. V8: COM қосылымы. COM қосылымы арқылы санауды қабылдау және салыстыру
Сұрақ: COM IE 11 арқылы сайтты талдау
Жауап:
Сұрақ: COM қосылымы 1C 8.3 - 1C 8.3 Қосылымда отладчикті енгізу мүмкін бе?
Мен форум мүшелерінен 8.3.6 платформасындағы (BP 3.0) бір дерекқордан өздігінен жазылған дерекқордың сыртқы қосылым модуліне (сонымен бірге іске қосылған) өңдеуді пайдалана отырып, COM қосылымы арқылы қосылған кезде мүлде жөндеуге болатынын сұрағым келді. платформасында 8.3.6) және өңдеуді пайдалана отырып одан процедураларды экспорттауды шақыру? Деректер базалары қазіргі уақытта файлға негізделген және бір компьютерде орналасқан, бірақ сервер нұсқасы жоспарланған. Осы уақытқа дейін мен төмендегі конструкцияларды COM қосылымы арқылы орындау үшін ерікті кодты жіберу, сондай-ақ қателерді тіркеу үшін қолдандым. Міне, сыртқы қосылым модуліндегі өздігінен жазылған дерекқордағы процедуралардың фрагменттері:
Функция ExecuteIn(CodeExecute, көмекші параметр = "") Экспорттау
Қауіпсіздікті тексеру(); // Басқа пайдаланушы атынан сыртқы қосылу кезінде зиянды кодты орындау әрекеттерінен қорғауЖауабы = «0» //Ештеңені қайтару қажет болмаса, кодта қателер болмаса  // жай ғана қайтарады  //Себебі Жіберілген кодта қателер болуы мүмкін, содан кейін біз оның орындалуын әрекетке орап аламыз.Орындауға тырысыңыз(CodeExecute); // COM қосылымы арқылы кодты басқа компьютерде жол ретінде орындаңыз (Libra Base сыртқы қосылым модулі)Ерекшелік   //қате болса, оның мәтінін қайтарыңызЖауап = ErrorDetailView(ErrorInfo()); EndAttempt; Жауапты қайтару; EndFunction функциясы TestConnection(InParameter, OutParameter) ExportSecurityCheck(); // Басқа пайдаланушы атынан сыртқы қосылу кезінде зиянды кодты орындау әрекеттерінен қорғау. OutParameter = "COM қосылымы арқылы масштаб негізімен байланыс бар!"; Қайтару True ; EndFunction
BP 3.0-ден мен келесі фрагментті орындаймын:
Әрекет
Com = Жаңа COMObject("V83.COMConnector"); Қосылым = Com.Connect ("Файл=""C:\1 c\Base_1C\Libra""; Usr=""ComExchange""; Pwd=""1"";"); TellUser("Сынақтан өтті! Масштаб дерекқорына қосылым бар"); Ерекшелік қатесі = ErrorDetailView(ErrorInfo()); TellUser("Libra базасына COM қосылымы жоқ! Мәліметтер"+Қате); Com=Анықталмаған; Қайтару; EndAttempt; Out = ""; In = «1»; Connection.Communication Test(In, Out) болса TellUser("Шкала конфигурациясы бар байланыс сынағы сәтті өтті! Жауап: "+Out); Әйтпесе TellUser("Шкал конфигурациясы бар байланыс сынағы сәтсіз аяқталды! Жауап: "+Шығып); EndIf;
Мен, әрине, Execute(CodeString1C8) операторын енгізу мүмкін болмайтынын түсінемін, бірақ қашықтағы модуль процедурасын шақырғанда мұндай мүмкіндік бар ма? сыртқы байланысНегізгі дерекқордан Connection.TestConnections(In, Out) оның кодын олардың шақыру процедурасының Security Check() функциясына бірдей отладчик сеансына енгізу керек пе?
Мен осы мәселе бойынша таба алатын құжаттаманы қарап шықтым. Мен екі конфигурацияда барлық жерде отладка мен үзіліс нүктелерін қосу опцияларын орнаттым. Мен екі конфигураторды да іске қостым.
Бұл жағдайда сыртқы қосылым модулінің жағындағы Security Check() процедурасын одан әрі жөндеу мүмкін бе?
Сұрақ: COM қосылымында қате IP мекенжайы
Серверлер арасында V83.ComConnector арқылы құжаттарды тасымалдайтын өңдеу бар. 1-сервер (1С нұсқасы 8.2.19.90) әрқашан 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)): Мәтінмәндік әдісті шақыру кезінде қате (Connect) : Ерекше жағдай орын алды (V83.COMConnector. 1 ) : Клиент пен сервер нұсқалары 1 арасындағы сәйкессіздік C:Enterprise Client нұсқалары әртүрлі және сервер (8.3. 8.1964 - 8.3. 6.2332), клиенттік қолданба: COM қосылымы
Мен бір қосылым орнаттым, екіншісі үзіліп қалды...
Мен қандай да бір түрде құрамдас қызмет арқылы әрбір нұсқа үшін «өз сыныптарыңызды (қосқыштарыңызды)» жасап, содан кейін сыныптың платформа нұсқасына сәйкес Жаңа COM нысанын жасауға болатынын білемін... мүмкін мен қателескен шығармын.
Маған бұл мәселені жеңуге көмектесіңіз ...
Жауап:Болды... сұрақты алып тастаймын..
Сұрақ: Толтыруды өңдеудегі қате
Сәлеметсіз бе.
8.2 Бөлшек сауда 1.
Мен 8.1-ге қосыламын Әдеттегі конф.
com арқылы дерекқорға қосыламын және құжатты жасауға тырысамын, бірақ «CreateDocument()» немесе «GetObject()» шақыру кезінде процедурада қате пайда болады. ӨңдеуТолтыру. суретті қараңыз.
Мен 8.1 дерекқорының өзінде бірдей әрекетті қолданып көремін, бірақ қате жоқ, сонымен қатар толтыру өңдеуге кірмеймін.
Не қате болуы мүмкін?
Жауап: турбок, қисық жазылған құжат модулі!
5 минуттан кейін қосылады
Оны шақырмайды! Ол құрастыруға тырысады! Бірақ ComConnector арқылы қосылу кезінде Диалог режимі мәселесі ЖОҚ БОЛМАЙДЫ, құжат модулін құрастыру мүмкін емес.
Мұндай жағдайларда, объект модулінде диалогпен жұмысты орындау қажет болғанда, препроцессорға нұсқауларды пайдаланыңыз.
Бұл сіздің қателігіңіз емес, сіз қосылып жатқан дерекқордағы құжат модуліндегі қате.
Мәліметтер базасында код клиентте орындалады және диалог режимі бар, сондықтан бәрі қатесіз өтеді.
Қосылу үшін ComConnector, V8.Application қолданбаңыз, сонда интерфейс заттары сізге қолжетімді болады
5 минуттан кейін қосылады
=======================================================================================================================
сыртқы қосылымның сипаттамасынан (СП) Мен ComConnections туралы не оқу керек екенін қалың қаріппен белгіледім
Сипаттама:
Жалпы алғанда, 1С: Кәсіпорын 8-мен сыртқы қосылым арқылы жұмыс істеу серверді автоматтандыру режимінде 1С: Кәсіпорынмен жұмыс істеуге ұқсас. Негізгі айырмашылықтар келесідей:
- Автоматтандыру сервері жағдайында толыққанды 1C: Enterprise 8 қосымшасы іске қосылады, ал сыртқы қосылым жағдайында салыстырмалы түрде шағын процесстегі COM сервері іске қосылады.
- Сыртқы қосылым арқылы жұмыс істегенде қол жетімді емес функционалдылық, 1C:Enterprise 8 пайдаланушы интерфейсін ұйымдастырумен байланысты бір немесе басқа әдіс;
- Сыртқы қосылымды іске қосу кезінде басқарылатын қолданба модулі (модуль тұрақты қолдану) конфигурация 1С:Кәсіпорын 8. Сыртқы қосылыммен жұмыс істеу кезінде оның рөлін сыртқы қосылым модулі атқарады.
- Жылдамырақ қосылым орнату, өйткені бөлек процесс жасаудың қажеті жоқ операциялық жүйе, және барлық әрекеттер шақыру процесінде орындалады;
- 1С:Кәсіпорын нысандарының қасиеттері мен әдістеріне жылдамырақ қол жеткізу, өйткені қол жеткізуді ұйымдастыру процессаралық байланысты қажет етпейді;
- Операциялық жүйе ресурстарын аз тұтыну.
- COM қосылым менеджері құрылады, оның көмегімен байланыс орнатылады;
- COM қосылым менеджерінің Connect әдісіне қоңырау шалылады. Connect әдісі сыртқы қосылымды қайтарады ақпараттық база 1С: Кәсіпорын 8;
- сыртқы қосылым арқылы байланыс орнатылған инфобазаның жарамды әдістеріне, қасиеттеріне және объектілеріне қол жеткізу.
Сыртқы біріктіру қамтамасыз етеді толық қолжетімділіконың жаһандық контекстіне. Сондықтан сыртқы байланыс оның әдістері ретінде болуы мүмкін: жүйелік константалар, конфигураторда көрсетілген объектілердің мәндері, оларға қол жеткізу менеджерлердің көмегімен жүзеге асырылады (мысалы, тұрақтылар, тізімдер, каталогтар, құжаттар, құжат журналдары, есептер , өңдеу, сипаттамалар түрлерінің жоспарлары, шоттардың жоспарлары , есептеу түрлерінің жоспарлары, регистрлер), сондай-ақ Экспорт кілт сөзімен сыртқы қосылым модулінде жарияланған айнымалылар.
Қол жетімділік:
Интеграция.
Сұрақ: COM қосылымы, сипаттамалар түрі жоспары
Тапсырма COM қосылымы арқылы сипаттамалық типтердің белгілі жоспарында жаңа элементті бағдарламалық түрде жасау болып табылады. Байланыс орнатылды, мұнда бәрі жақсы.
Мен былай жазамын:
TypeDescriptionTech = Жаңа TypeDescription("DirectoryLink. Қарсы тараптар"); МақсатҚасиеттері = Қосылым. Сипаттама түрлерінің жоспарлары. Объектілер категорияларының қасиеттерінің мақсаттары. FindByName(«Жеке тұлғалар» анықтамалығы»); NewElement = Қосылым. Сипаттама түрлерінің жоспарлары. Нысан сипаттары. CreateItem(); Жаңа элемент. Name = PropertyName; Жаңа элемент. PropertyAssignment = PropertyAssignment; Жаңа элемент. ValueType = DescriptionTypesTech;
Соңғы жол жұмыс істемейді. Және бұл түсінікті, ол 1С жұмыс істейтін деректер қорының түрін табады, бірақ маған тіркелген деректер қорының түрі қажет. Оны қалай алуға болады?
Менің нұсқамда «Пайдаланушы тізім» мән түрі бар элемент жай ғана жасалады. Бұл принцип бойынша жұмыс істейді, бірақ қандай да бір түрде ұсқынсыз.
Платформа 8.3. COM қосылымы міндетті шарт болып табылады. Оны қолданбайтын шешімдер қызығушылық тудырмайды.
Жауап:
Роликтер. Рахмет, ол жұмыс істеді.
Сұрақ: COM қосылымы. Параметр мәселесін сұрау
Жауап:
Сұрақ: Файлдық дерекқордан файлдық дерекқорға Com қосылымы
Жауап:
Басып шығару (Ctrl+P)
1С дерекқорлары арасында деректер алмасу нұсқаларының бірі COM қосылымы арқылы алмасу болып табылады. COM қосылымын пайдаланып, бір 1С дерекқорынан екіншісіне қосылуға және деректерді оқуға немесе жазуға болады. Бұл әдісті дерекқорлардың клиент-сервер нұсқаларында да, файлдық дерекқорларда да қолдануға болады. Бұл мақалада 8.3 платформасындағы қосылымдардың осы түрлері талқыланады
com қосылымы
1С қолданбасы үшін COM нысандарының екі түрін жасауға болады. Бұл байланыстар V83. Қолданба және com қосылымдары V83.COMConnector . болған жағдайда V83. Қолданба 1С қосымшасының толықтай дерлік көшірмесі іске қосылды. Қолдану жағдайында V83.COMConnectorШағын сервер бөлігі іске қосылады. Бұл жағдайда жұмыс жылдамдығы жоғарырақ, бірақ кейбір функциялар қол жетімді болмауы мүмкін. Атап айтқанда, сыртқы қосылымдармен жұмыс істеу қасиеті орнатылмаған пішіндермен және жалпы модульдермен жұмыс істеу. Көбінесе пайдалану керек V83.COMConnectorжәне функционалдық жеткіліксіз болған жағдайда ғана V83. Қолданба. Жұмыс жылдамдығының айырмашылығы үлкен көлемді дерекқорларда әсіресе байқалуы мүмкін. 8.2 платформасы үшін пайдаланылады V82.Application немесе V82.COMConnector
OLE қосылымын орнатыңыз
Қосылым = Жаңа COMObject(“V83.Application” );
COM қосылымын орнатыңыз
Қосылым = Жаңа COMObject(“V83.COMConnector” );
Қосылу жолы
//Клиент-сервер опциясы үшін
Қосылым жолы= “Srvr = ““СерверАты” “;Ref = “ “НегізгіАты” ;
//Файл режимі опциясы үшін:
Қосылым жолы= "Файл = ""PathKBase" «; Usr = Пайдаланушы аты; Pwd = Құпия сөз»;
Әрекет
Қосылым = Байланыс . Қосылу(ConnectionString);
Ерекшелік
Message = New MessageToUser;
Хабар . Мәтін =
«Дерекқорға қосылу мүмкін болмады» +
СипаттамаҚателер(); Хабар . Есеп беру ();
EndAttempt;
Ажырату
Қосылым = Анықталмаған;
Объект үшін V83. ҚолданбаҚосылымды тоқтату қажет, әйтпесе аяқталмаған сеанс қалады, содан кейін оны қолмен жою керек. болған жағдайда V83.COMConnectorқосылым орындалған процедура аяқталғаннан кейін қосылым автоматты түрде үзіледі және тағы бір кішкентай нүкте бар. Қосылым жасалып жатқан пайдаланушы үшін оның параметрлерінде «Бағдарламаны жабу кезінде растауды сұрау» құсбелгісін өшіру керек.
NewObject() әдісі
Жаңа нысан жасау үшін NewObject() әдісін қолдануға болады, мысалы:
Үшін V83.COMConnector
RequestCOM = Байланыс. NewObject( «Сұраныс»)
;
TableCOM = Байланыс. NewObject( «Мәндер кестесі»)
;
ArrayCOM = Қосылым. NewObject («Массив» );
ViewCOM =Connection.NewObject
Үшін V83. Қолданба
RequestOLE = Байланыс. NewObject(" сұрау»)
;
TableOLE = Қосылым. NewObject(«Мәндер кестесі»)
;
ArrayOLE = Connection.NewObject(«Массив»);
ViewCOM =Connection.NewObject(«UniqueIdentifier», StringUID);
RequestCOM . Мәтін =«ТАҢДАУ
| Ұйымдардың лауазымдары.Кодекс,
| Ұйымдардың лауазымдары.Аты
|FROM | Анықтамалық. Ұйымдардың лауазымдары
ҰЙЫМДАРДЫҢ ОРНЫН ҚАЛАЙ ОРЫНДАУ КЕРЕК»;
Нәтиже = RequestCOM. Run();
Үлгі = Нәтиже. Таңдау () ;
Қош бол таңдау. Келесі()Цикл
EndCycle;
Сондай-ақ конфигурация объектісі менеджерлерін пайдалануға болады:
DirectoryCOM = Қосылым. Анықтамалар. DirectoryName;
DocumentCOM = Байланыс. Құжаттама. DocumentName;
RegisterCOM = Қосылым. Ақпараттық регистрлер. RegisterName;
COM қосылымы арқылы санауды қабылдау және салыстыру
Конфигурацияда анықталған санау элементтерінің мәндерін салыстыру үшін бұл элементтерді салыстыру оңай қарапайым түрлердің біріне түрлендіру қажет. Мұндай типтер сандық тип немесе жолдық тип болуы мүмкін. Санақ элементінің мәнін келесідей сандық түрге түрлендіруге болады:
Enum элементі = Connection.Directories.Directory1.FindByCode(1).Props1;
PossibleValues = Enum Element.Metadata().Enum мәндері;
EnumerationElementNumber = PossibleValues.Index(PossibleValues.Find(Connection.XMLString(EnumerationElement)));
EnumerationItemNumber = 0 болса, онда есеп( «сандық мән1»);
ElseIfEnumerationItemNumber = 1 Содан кейінЕсеп («Есептік мән 2»);
endIf;
Идентификатор арқылы COM арқылы нысанды шығарып алу
Конфигурация нысанының менеджерлері арқылы біз com нысанын аламыз, мысалы:
DocumentCOM = Байланыс. Құжаттама. DocumentName;
Содан кейін біз бірегей идентификатор жолын аламыз:
StringUID =Connection.string ( DocumentCOM.UniqueIdentifier())
Идентификатор = Жаңа U бірегейидентификатор(StringUID);
МЕН linkByIdentifier = Documents[DocumentName].GetLink(Идентификатор);
com нысанын құжат бойынша идентификатор бойынша табу қажет болса, келесідей жазу керек:
WidCOM = Connection.NewObject(«UniqueIdentifier», StringUID);
LinkByIdentifier = Connection.Documents[DocumentName].GetLink(WidCOM);
Деректерді бір 1С конфигурациясынан екіншісіне тасымалдаудың бір жолы - COM көмегімен бағдарламалық құралды қосу. Көптеген компаниялар бірнеше түрлі деректер қорын пайдаланады, олардың арасында белгілі бір байланыстар мен тәуелділіктер болуы керек. Егер деректерді тасымалдау ғана емес, сонымен қатар белгілі бір деректерді өңдеуді орындау қажет болса, онда COM қосылымы оңтайлы механизм болады. Басқа 1С дерекқорынан деректерді талдау мүмкіндігі кез келген әзірлеушіге пайдалы.
Біз COM арқылы 1С деректер базасына қосыламыз
1С жүйесінде COM қосылымын жүзеге асыру үшін COMConnector деп аталатын арнайы механизм қолданылады. Бұл нысан платформамен бірге орнатылады және инфобазаларды қосу үшін қолданылады. Айта кету керек, 8.2 және 8.3 нұсқалары үшін әртүрлі атаулары бар нысандар пайдаланылады - тиісінше «V82.COMConnector» және «V83.COMConnector».
Дерекқорға COM қосылымының ұзақтығы лицензияны талап ететінін есте сақтаңыз - бірнеше қосылымдарды бір уақытта орындаумен айналыспаңыз. Бұл лицензиялардың шектеулі саны бар ұйымдар үшін өте маңызды. Бұл мәселені ақпараттық базаға белсенді пайдаланушы қосылымдары болмаған кезде орындалатын әдеттегі тапсырмалардың көмегімен шешуге болады.
Басқа дерекқорға қосылу және қажетті ақпаратты сұрау үшін келесі деректерді білу қажет:
- Бұл қандай тип – файл немесе клиент-сервер;
- Қай жерде орналасқан;
- Жүйеге кіру үшін қандай ат пен парольді қолдануға болады?
- Сізді қандай деректер қызықтырады?
Алғашқы үш нүктеден бастап COM қосылымын жүзеге асыру үшін параметрлер жолын жасау керек. Ақпаратты қорғау түріне байланысты ол әр түрлі болады сыртқы түрі. Алынған жолдың көмегімен қосылым жасалады, оның көмегімен кез келген әдістерді қолданып талдау және өңдеу үшін басқа деректер базасынан деректерді жинауға болады.
Connection ParametersFileIB = "Файл=""Дерекқорға_жол""; Usr=""Пайдаланушы_аты"";Pwd=""Пароль"""; Connection ParametersClientServerIB = "Srvr=""Server_Name""; Ref=""Дерекқор_атауы""; Usr=""Пайдаланушы_аты""; Pwd=""Пароль""";Қосылым функциясы қарапайым және барлық параметрлер дұрыс көрсетілген болса, ешқандай сұрақ тудырмауы керек. Түзету мен талдауды жылдамдату үшін мүмкін қателерқосылымды «Байқап көр» конструкциясына салған дұрыс. Функция қажетті деректерді алу үшін жұмыс істейтін «COM нысаны» түрінің мәнін қайтарады.
&OnServer функциясы ConnectToBase() exportConnectionIB Параметрлері = "Файл=""E:\1c дерекқор\ERP""; Usr=""Әкімші"";Pwd=""1"""; V83COMCon= Жаңа COMObject("V83.COMConnector"); V83COMCon.Connect қайтару әрекеті(IB қосылым параметрлері); Ерекшелік туралы есеп(ErrorDescription()); Анықталмаған қайтару; EndAttempt; EndFunctionCOM қосылымы арқылы деректерді таңдап қана қоймай, оны қосылып жатқан дерекқорға қосуға болады. Есіңізде болсын, біз COM нысаны арқылы 4 қарапайым деректер түрін тасымалдай аламыз. Басқа түрлерді платформаның кірістірілген іздеу функциялары арқылы көрсету керек. Ғаламдық платформа функциялары COM қосылымы арқылы да шақырылатынын ескеріңіз.
Біз 1С деректер базасынан деректерді аламыз
Қажетті нысанды алғаннан кейін басқа дерекқордан деректерді оқу керек. Мұны істеу үшін біз функциядан «COM нысаны» түрінің алынған мәнін пайдаланып, 1С 8.3 жүйесінде COM қосылымы арқылы сұрауды қолданамыз. Алдымен дерекқорға қосылу, содан кейін сұранысты орындау маңызды. Орындау «Сұраныс» параметрі ретінде жол түрінде нысан түрін көрсете отырып, NewObject әдісі арқылы жүзеге асырылады.
&OnServer процедурасы TestCOMOnServer() Қосылым = ConnectToBase(); TypeValue(Connection) Type("Анықталмаған") болса, RequestBPZO = Connection.NewObject("Сұраныс"); RequestBPZO.Text = "Алғаш 15 ТАҢДА | DirectoryUser.Name AS Name |FROM | Directory.users AS DirectoryUser"; Select = RequestBPZO.Execute().select(); While Selection.next() циклі Report(Selection.Number); EndCycle; endIf; Процедураның соңы >Мысалы, белгілі бір бөлімнің пайдаланушылары туралы ақпаратты алу үшін параметрлер арқылы сұрауда шарт қоямыз. Бір параметр қарапайым типті болады – жол, ал бөлім «Кәсіпорын құрылымы» каталог элементіне сілтеме болады. Сұрау нәтижесі COM қосылымы орын алған дерекқорда бар түрдегі тізімделген өрістері бар кесте болып табылады. Оларды басқа түрлерге түрлендіру қажет болса, стандартты платформа функцияларын пайдаланыңыз:
- Түзу();
- Number();
- Күні().
Бірнеше параметрлерге, мысалы, бөлімдерге негізделген таңдау үшін массивді дерекқорға тасымалдау қажет болса, NewObject командасы да қолданылады. Сол сияқты, қосылым арқылы оларды басқа дерекқордың элементтерімен толтыра отырып, тізімді немесе мәндер кестесін беруге болады. Іздеу үшін барлығы қол жетімді бар әдістерплатформа объектілері мен механизмдері.
RequestBPZO = Connection.NewObject.("Сұраныс"); RequestBPZO.Text = "Алғаш 15 ТАҢДА | DirectoryUser.Name AS Name | FROM | Directory.Users AS DirectoryUser I ҚАЙДА | DirectoryUser.Department B (&NecessaryDepartment) | Және DirectoryUser.Name ""%"" + &NecessaryName+ ""%" " "; Бөлімдердің массиві = Connection.NewObject("Массив"); Бөлімдердің массиві.Қосу(Connection.Directories.Кәсіпорын құрылымы.Код бойынша табу("00-000023")); Бөлімдердің массиві.Қосу(Connection.Directories.Кәсіпорын құрылымы.Код бойынша табу("00-000038")); Бөлімдердің массиві.Қосу(Connection.Directories.Кәсіпорын құрылымы.Код бойынша табу("00-000046")); BPZO.SetParameter сұранысы («Қажетті бөлім», Бөлімдердің массиві); RequestBPZO.SetParameter("ҚажеттіАты","Екатерина"); Select = RequestBPZO.Execute().select(); While Selection.next() циклі Report(Selection.Name); EndCycle;Құжаттарды немесе каталог элементтерін тасымалдау кезінде әрқашан белгілі бір объектінің берілуін бақылау туралы сұрақ туындайды. COM қосылымдарының көмегімен мұндай мәселелерді бірегей идентификатор арқылы шешуге болады. «GetLink» функциясын пайдаланып, идентификаторды жол ретінде пайдалана отырып, ағымдағы ақпараттық қауіпсіздіктен идентификатор бойынша қосылатын модуль дерекқорындағы нысанды табу керек. Егер біреуі табылмаса, оны COM қосылымы арқылы жасауға болады.
StrIdent = Жол(Directories.Users.FindByCode("00-0000313").UniqueIdentifier()); Егер ValueFilled NOT (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").Жеке; NewUser.Write(); endIf;Сондай-ақ, COM қосылымы «Сыртқы қосылым» қасиеті қосылған жалпы 1С модульдеріндегі процедуралар мен функцияларды пайдалануға құқылы. Осы шартқа қосымша шақырылатын функция немесе процедура экспортталатын болуы және серверде орындалатын интерактивті әрекеттерді қамтымауы керек. Әйтпесе, операция жарамсыз екендігі туралы қатені көресіз.
Құрама..; VariableFunction = Қосылым..; функция шақыру>жалпы модуль аты>процедураны шақыру>жалпы модуль аты>1С-те басқа дерекқормен сыртқы қосылу мүмкіндіктері өте кең және көптеген тапсырмаларды орындауға мүмкіндік береді. Құралдарды дұрыс бағалай білу және оңтайлы шешімді таңдай білу маңызды. Көп жағдайда бұл дағды тәжірибе немесе тәжірибелі мамандардың жұмысының мысалдарын зерттеу арқылы ғана пайда болады.
Түйін сөздер: COM, қосылым, сыртқы, OLE, Automation, Connect, ComConnector, Srvr
Деректерге қол жеткізу үшін 1С: Enterprise 8.0 COM қосылымдарын пайдалану кезінде автоматтандыру серверін пайдаланумен салыстырғанда келесі артықшылықтар бар:
- Қосылымды тезірек орнату, өйткені операциялық жүйенің бөлек процесін жасаудың қажеті жоқ және барлық әрекеттер шақыру процесінде орындалады;
- 1С:Кәсіпорын нысандарының қасиеттері мен әдістеріне жылдамырақ қол жеткізу, өйткені қол жеткізуді ұйымдастыру процессаралық байланысты қажет етпейді;
- Операциялық жүйе ресурстарын аз тұтыну.
Жалпы алғанда, COM қосылымы арқылы 1C: Enterprise 8.0 бағдарламасымен жұмыс істеу серверді автоматтандыру режимінде 1С: Enterprise бағдарламасымен жұмыс істеуге ұқсас. Негізгі айырмашылықтар келесідей:
- Автоматтандыру сервері жағдайында толыққанды 1C: Enterprise 8.0 қосымшасы іске қосылады, ал COM қосылымы жағдайында салыстырмалы түрде шағын процесстегі COM сервері іске қосылады.
- COM қосылымы арқылы жұмыс істегенде, 1С: Enterprise 8.0 пайдаланушы интерфейсін ұйымдастыруға қатысты қандай да бір жолмен функционалдылық қол жетімді емес;
- COM қосылымын пайдалану кезінде 1C: Enterprise 8.0 конфигурациясының қолданбалы модулі пайдаланылмайды. COM қосылымымен жұмыс істеу кезінде оның рөлін сыртқы қосылым модулі атқарады.
1.1 COM қосылымын орнату тәртібі
COM қосылымы арқылы 1С: Enterprise 8.0 деректеріне қол жеткізуді ұйымдастыру үшін келесі әрекеттер тізбегі орындалады:
- COM объектісі V8.COMConnector идентификаторымен құрылады, оның көмегімен байланыс орнатылады;
- бұрын жасалған V8.COMConnector нысанының Connect әдісі шақырылады. Connect әдісі 1C:Enterprise 8.0 ақпараттық базасы бар COM қосылым нысанына сілтемені қайтарады;
- Алынған COM қосылым нысаны арқылы байланыс орнатылған инфобазаның жарамды әдістеріне, қасиеттеріне және нысандарына қол жеткізіледі.
Маңызды! COM қосылымында пайдаланушы интерфейсінің болмауына байланысты COM қосылымында барлық нысандарды, қасиеттерді және әдістерді пайдалану мүмкін емес.
1С: COM қосылымы арқылы сырттан қол жеткізуге болатын кәсіпорын объектілері:
- Экспортталған айнымалылар және сыртқы біріктіру модулінің процедуралары/функциялары
- Экспортталған айнымалылар және жалпы модульдердің процедуралары/функциялары
- Жалпы модульдердің сипаттарын орнату арқылы толық модульдерді қосу және шығару
- Препроцессордың көмегімен жалпы модульдердің фрагменттерін қосу және шығару
- Жаһандық контекст 1С: Enterprise 8.0, клиенттік қосымшамен тығыз байланысты нысандарды қоспағанда (TextDocument, TabularDocument, ...)
1.2 Сыртқы қосылым модулі
Жоғарыда айтылғандай, COM қосылымы арқылы жұмыс істеу кезінде қолданбалы модульдің жауапкершілігі сыртқы қосылым модулімен орындалады. Бұл модульде SystemStarts() және WhenSystemCompletes() оқиғалар өңдегіш процедуралары болуы мүмкін, олар сәйкесінше қосылымды инициализациялау және тоқтату кезінде орындалатын әрекеттерді қамтуы мүмкін.
Экспорт кілт сөзімен сыртқы біріктіру модулінде анықталған процедуралар, функциялар және жаһандық айнымалылар қолданбалы модуль жағдайындағыдай жаһандық мәтінмәннің бөлігі болады.
1.3 Жалпы модульдер
Жалпы модульдер үшін «Клиент», «Сервер» және «Сыртқы қосылым» қасиеттері енгізілген. Олар конфигурацияда модульдерді клиент-сервер нұсқасында және COM қосылу режимінде пайдалануды анықтауға арналған.
1.4 "V8.COMConnector" нысаны
V8.COMConnector COM нысанымен шешілетін жалғыз тапсырма 1С: Enterprise 8.0 ақпараттық базасымен COM байланысын орнату болып табылады. V8.COMConnector нысанының бір данасын пайдаланып қосылымдардың шексіз санын орнатуға болады. V8.COMConnector нысанында 1С: Enterprise 8.0 ақпараттық базасымен COM қосылымын орнатуға арналған жалғыз Connect әдісі бар.
<СтрокаСоединенияИБ>
Ақпараттық қауіпсіздік жүйесімен байланыс желісі Параметр=Мән түріндегі фрагменттердің тізбегі болып табылады. Фрагменттер бір-бірінен «;» арқылы бөлінеді. Егер мәнде бос орын болса, ол ішіне қосылуы керек қос тырнақша (").
Жалпы параметрлер:
Usr - пайдаланушы аты;
Pwd - құпия сөз.
Файл нұсқасы үшін келесі параметр анықталған:
Файл – ақпараттық база каталогы.
Клиент-сервер опциясы үшін келесі параметрлер анықталған:
Srvr - 1C: Кәсіпорын серверінің атауы;
Ref - сервердегі ақпараттық базаның атауы.
Connect әдісі 1С: Enterprise 8.0 ақпараттық базасына COM қосылымын орнатады және COM қосылым нысанына сілтемені қайтарады.
// Коннектор нысаны жасалды
V8 = Жаңа COMObject("V8.COMConnector");
// COM қосылым нысаны жасалады
Қосылым = V8.Connect("Файл=""c:\InfoBases\Trade""; Usr=""Директор"";")
1.5 COM қосылым нысаны
1С: Enterprise ақпараттық базасына COM қосылымы оның ғаламдық контекстіне толық қол жеткізуді қамтамасыз етеді («Бағдарлама модулін орындау контекстін» қараңыз). Сондықтан, COM қосылымы оның әдістері ретінде болуы мүмкін: жүйелік константалар, басқарушылар арқылы қол жеткізілетін объектілер конфигураторында көрсетілген мәндер (мысалы, тұрақтылар, тізімдер, каталогтар, құжаттар, құжат журналдары, есептер, өңдеу, типтердің жоспарлары. сипаттамалар, жоспарлар шоттары, есептеу түрлерінің жоспарлары, регистрлер), сондай-ақ Export кілт сөзімен сыртқы қосылым модулінде жарияланған айнымалылар.
Сонымен қатар, COM қосылымында белгілі бір түрлердің мәндерін жасау үшін пайдалануға болатын қосымша NewObject әдісі бар.
tk = Қосылым. NewObject («Мәндер кестесі»);
Жолдық әдіс 1С:Кәсіпорын мәндерінің жолдық көріністерін алуға мүмкіндік береді.
Көрініс = Connection.String(Data.UniqueIdentifier());
1.6. COM қосылымымен жұмыс істеу ерекшеліктері
Автоматтандыруда және COM қосылымында TRUE және FALSE келесі мәндерге ие: -1 (минус бір) және 0.
COM қосылымдарының пулын ұйымдастыруға болады. Бұл ретте 1С: Enterprise қабылдаушы серверінде бірнеше COM қосылым нысандары АЛДЫДА құрылады және қосылымды орнатуға бұдан да аз уақыт кетеді, өйткені жаңа нысан жасаудың қажеті жоқ.
Көрсетілген параметрлер негізінде сұрау мәтіндерін құруға арналған жаңа Query Builder нысаны енгізілді. Бұл нысанэлектрондық кесте құжатына есепті шығаруға және мыналарға қатысты басқа тапсырмаларға қатысы жоқ есеп құрастырушы функционалдығын қолдайды. пайдаланушы интерфейсі. Бұл нысанды 1С: Enterprise серверінде және COM қосылымында пайдалануға болады.
1С: Enterprise серверінде ендірілген тілді іске қосу кезінде COM объектілерін пайдалануға болады.
COM қателері ендірілген тіл ерекшеліктеріне түрлендіріледі.
Егер конфигурация жарамсыз нысанды жасауға әрекеттенсе, мысалы. электрондық кесте құжаты, сыртқы қосылым модулінде, ортақ модульде немесе нысан модулінде COM қосылымы ерекше жағдай ретінде орнатылмауы немесе үзілуі мүмкін.
1С дерекқорлары арасында деректер алмасу нұсқаларының бірі COM қосылымы арқылы алмасу болып табылады.
COM қосылымын пайдаланып, бір 1С дерекқорынан екіншісіне қосылуға және деректерді оқуға немесе жазуға болады. Бұл әдісті дерекқорлардың клиент-сервер нұсқаларында да, файлдық дерекқорларда да қолдануға болады. Бұл мақалада біз қосылымның осы түрінің мысалдарын қарастырамыз. Мысалдар 8.2 платформасын пайдаланады.
1С қолданбасы үшін COM нысандарының екі түрін жасауға болады. Бұл V82. ҚолданбаЖәне V82.COMConnector. болған жағдайда V82. Қолданба 1С қосымшасының толықтай дерлік көшірмесі іске қосылды. пайдаланған жағдайда V82.COMConnectorШағын сервер бөлігі іске қосылады.
Бұл жағдайда жұмыс жылдамдығы жоғарырақ, бірақ кейбір функциялар қол жетімді болмауы мүмкін. Атап айтқанда, сыртқы қосылымдармен жұмыс істеу қасиеті орнатылмаған пішіндермен және жалпы модульдермен жұмыс істеу. Көбінесе пайдалану керек V82.COMConnectorжәне функционалдық жеткіліксіз болған жағдайда ғана V82. Қолданба. Жұмыс жылдамдығының айырмашылығы үлкен көлемді дерекқорларда әсіресе байқалуы мүмкін.
Ендеше, бастайық
- COM объектісін жасайық
- Үшін V82. ҚолданбаҚосылым = Жаңа COMObject("V82.Application" ) ;
- Үшін V82.COMConnectorҚосылым = Жаңа COMObject("V82.COMConnector" );
- Қосылым жолын жасайық
- дерекқордың сервер нұсқасы үшін ConnectionString = "Srvr = " "ServerName" ";Ref = " "BaseName" ;
- дерекқордың файлдық нұсқасы үшін ConnectionString = "Файл = " "PathKBase" "; Usr = Пайдаланушы аты; Pwd = Құпия сөз";
- Дерекқорға қосылуҚосылу әрекеті = Қосылу. Connect(ConnectionString) ; Ерекшелік хабары = Жаңа MessageToUser; Хабар. Мәтін = + ErrorDescription() ; Хабар. Есеп беру (); EndAttempt;
- Дерекқордан ажыратылудаҚосылым = Анықталмаған;
Объект үшін V82. ҚолданбаҚосылымды тоқтату қажет, әйтпесе аяқталмаған сеанс қалады, содан кейін оны қолмен жою керек. болған жағдайда V82.COMConnectorқосылым орындалған процедура аяқталғаннан кейін қосылым автоматты түрде үзіледі және тағы бір кішкентай нүкте бар.
Қосылым жасалып жатқан пайдаланушы үшін оның параметрлерінде «Бағдарламаны жабу кезінде растауды сұрау» құсбелгісін өшіру керек.
Енді барлық кодты біріктірейік
Қосылым = Жаңа COMObject("V82.Application" ) ; //Connection = Жаңа COMObject("V82.COMConnector"); ConnectionString = "Srvr = " "Server1C" ";Ref = " "MyBase" "; Usr = Петя; Pwd = 123" ; //ConnectionString = "Файл = ""С:\MyBase""; Usr = Петя; Pwd = 123";Қосылу әрекеті = Қосылу. Connect(ConnectionString) ; Ерекшелік хабары = Жаңа MessageToUser; Хабар. Мәтін = «Дерекқорға қосылу мүмкін болмады»+ DescriptionError(); Хабар. Есеп беру (); EndAttempt; Қосылым = Анықталмаған;
Қосылым түрі үшін V82. Қолданбаәдіс бастапқыда жасалған COM нысаны үшін және үшін пайдаланылады V82.COMConnectorқосу әдісі қолданылады. сұраныспен одан әрі жұмыс стандартты құралдар 1С. кодта бұл келесідей көрінеді:
Сұраныс = Қосылым. NewObject("Сұраныс" ); // Үшін V82.COMConnector Сұраныс = Қосылым. NewObject("Сұраныс" ); // Үшін V82. Қолданба Сұраныс. Мәтін = «ТАҢДАУ | Ұйымдардың лауазымдары.Кодекс, | Ұйымдардың лауазымдары.Аты|FROM | Анықтамалық.Ұйымдар лауазымдары AS Ұйымдардың лауазымдары»; Нәтиже = Сұраныс. Run(); Үлгі = Нәтиже. Таңдау() ; Қош бол таңдау. Next() Loop EndLoop ;
1C: Enterprise 8.3 нұсқасы үшін барлығы өзгеріссіз қалады, тек COM нысандарын жасау кезінде сіз пайдалануыңыз керек. "V83.COMConnector"немесе "V83. Қолданба".