Аппараттық және бағдарламалық қамтамасыз етуді орнату

Стандартты одата интерфейсі.

Басып шығару (Ctrl+P)

Екінші бөлігін көруге болады

Негізгі ақпарат

Платформа нұсқасында 8.3.5.1068 , 2015 жылдың қыркүйегінде жарияланған, технология арқылы 1С сыртқы бағдарламалармен интеграциялау механизмі пайда болды REST интерфейсі. Платформа кіру протоколы ретінде OData протоколын пайдаланады. Бұл деректерді сұрауға және жаңартуға арналған ашық веб-протокол. Ол HTTP пәрмендерін сұрау ретінде пайдаланып деректерді өңдеуге мүмкіндік береді. 8.3.5.1068 нұсқасындағы жауаптарды тек пішімде алуға болады Atom/XML . Дегенмен, 2017 жылдың тамызындағы 8.3.8.1652 шығарылымынан бастап JSON пішіміндегі деректерді алудың екінші нұсқасы (JavaScript Object Notation) пайда болды. . XML-мен салыстырғанда, адамдарға оқу оңай және аз орын алады. Сонымен қатар, барлық браузерлерде JSON-мен жұмыс істеуге арналған кірістірілген құралдар бар.

OData протоколымен 1С: Кәсіпорын платформасында жұмыс істеуді 1С кітабынан табуға болады: Әзірлеуші ​​​​нұсқаулығы 17 тарауда. Интернетке қызмет көрсету механизмдері, абзац 17.2.1 Стандартты OData интерфейсі.Сондай-ақ OData протоколын қолдауды кеңейту мысалдарын қарауға болады,

Артықшылықты пайдаланыңыз REST интерфейсі. жүйесінен жүйе деректеріне қол жеткізу үшін деген қорытынды жасайды сыртқы қолданбакодты өзгерту қажет емес қолданылатын ерітінді(мысалы, қолданбалы шешімге қолдау көрсетілсе). Бұл қатынасты алу үшін қолданбаны веб-серверге арнайы түрде жариялау керек және осы жолмен қандай конфигурация нысандары пайдаланылатынын көрсету керек. Осыдан кейін үшінші тарап жүйелері HTTP сұраулары арқылы қолданбаңызға қол жеткізе алады.

Стандартты OData интерфейсін жариялау веб-сервердегі жариялау диалогының көмегімен орындалады (Әкімшілік - Жариялау веб-сервер) және 1С: Кәсіпорын 8.3 кітабында сипатталған. «Әкімшіге арналған нұсқаулық».
Маңызды!Конфигурация нысандарының стандартты OData интерфейсі арқылы қол жетімді болуы үшін оны жаһандық мәтінмән әдісі арқылы қосу керек. StandardODataInterface() композициясын орнату.
Стандартты OData интерфейсі арқылы қол жетімді нысандардың құрамын орнату механизмі сыртқы өңдеу ретінде орындалуы мүмкін. Бұл қолданылатын ерітіндіні өзгертуді қажет етпейді.

1C: Enterprise сыртқы REST веб-серверімен өзара әрекеттесу үшін HTTP-мен жұмыс істеу платформасында қол жетімді құралдар пайдаланылады: нысандар HTTPConnection, HTTPRequest және HTTPResponse.

Осы мақалалар сериясында мен сәйкес HTTP әдісін қолданатын типтік операциялардың мысалдарын көрсетемін;

  • Деректерді алу – әдіс АЛУ;
  • Объектіні құру – әдіс ПОСТ;
  • Деректерді жаңарту: әдіс PATCH- бұл жағдайда жаңартуды қажет ететін қасиеттерді ғана көрсетуге болады; әдіс ҚОЙ– бұл жағдайда субъектінің барлық қасиеттерін көрсету қажет;
  • Деректерді жою - әдіс ЖОЮ.

1. Мәліметтерді алу мысалдары. HTTP әдісі GET

Сервер атауымен веб-серверде жарияланған дерекқор болады webbuh(«Кәсіпорынның бухгалтерлік есеп 3.0» демо-базасы). Мен JSON пішімін деректер алмасу пішімі ретінде қолданамын. JSON-мен жұмыс істеу туралы қосымша ақпарат қолжетімді құжаттамада жазылған. GET HTTP әдісі арқылы серверден деректерді алу үшін нысанды жасау керек JSON оқуфайлдан немесе жолдан JSON деректерін дәйекті оқу үшін. POST PATCH PUT HTTP әдісін пайдаланып сервердегі нысандар мен мәтіндердің дәйекті жазылуын ұйымдастыру үшін нысанды жасау керек. JSON жазбасы. DELETE әдісі JSON талап етпейтінін ескеріңіз.

REST интерфейсіне қатынасу кезінде JSON оқу және жазу ағынының иллюстрациясы ретінде мен келесі жалпы мақсаттағы пайдаланушы функциясын шақырамын CallHTTPmethodOnServer :

&Серверде // <Описание функции>// // Параметрлер: // - Сұраныс үшін HTTP әдісінің атын қамтитын жол («POST». «PATCH», «PUT» , «GET», «DELETE» // - HTTPConnection нысаны //<АдресРесурса>- HTTP сұрауы жіберілетін http ресурсының жолы. //<ОтправляемыеДанные>- Құрылым немесе өңдеу үшін көрсетілген мекенжайға жіберілген деректерді қамтитын корреспонденция // "POST" немесе "PATCH" немесе "PUT" көрсетілген HTTP әдісін қолданып серверге // Қайтару мәні: // HTTPMethod түріне байланысты сервердің жауап құрылымы// Функция CallHTTPmethodOnServer(HTTPmethod,HTTPConnection,ResourceAddress,SubmittedData =Белгісіз ) // HTTP сұрауын жасаңызтақырыптар = жаңа сәйкестік(); Тақырыптар. Кірістіру(«Content-Type», «application/json»); HTTP сұрауы = Жаңа HTTP сұрауы ( Ресурс мекенжайы, тақырыптар ); // Деректерді жасау және жаңарту үшін Json жазуЕгер HTTPMethod="POST" немесе HTTPMethod="PATCH" немесе HTTPMethod="PUT" болса, JSONWriter = NewJSONWriter ; JSON параметрлері = Жаңа ParametersJSON жазбалары(JSON.Auto,"",True ораңыз); JSON Write.SetString(JSON параметрлері); WriteJSON(WriteJSON, SentData ); // SentDataбұл жағдайда қажет StringForBody = WriteJSON.Close(); RequestHTTP.SetBodyFromString(StringForBody, EncodingText.UTF8, ByteOrderMark пайдалану. Қолданбаңыз); EndIf; // HTTPConnection әдісін шақыру ResponseHTTP = HTTPConnection.CallHTTPmethod(HTTPmethod, HTTP сұрауы) ; Жауап беру құрылымы= Жаңа құрылым; Жауап беру құрылымы.Кірістіру («Күй коды», HTTP Response.StatusCode); // Тек GET әдісі үшін JSON оқыңызЕгер HTTPMethod="GET"Содан кейін оқу әрекеті JSON = Жаңа оқу JSON ; Сервер жауабы = ResponseHTTP.GetBodyAsString(«UTF-8»); ReadJSON.SetString(ServerResponse); Сәйкестік = ReadJSON(ReadingJSON, Рас); Response Structure.Insert("Сервер жауабы",Сәйкестік) ; Жауап беру құрылымы.Кірістіру (« Сервер жауабының шифры шешілмеген", ServerResponse ); Ерекшелік Есеп (қате сипаттамасы()); Анықталмаған қайтару;Әрекеттің соңы; егер аяқталса; Қайту Жауап беру құрылымы ; EndFunctions // HTTPMethodOnServer() шақыру

Серверден JSON пішімінде қабылдау үшін қолданбаның REST интерфейсіне кіру кезінде ресурс мекенжайында көрсету керек $format=json.Немесе MIME түрін көрсетіңіз application/jsonтақырыпта:

тақырыптар = жаңа сәйкестік(); Headers.Insert("Мазмұн-түрі", "application/json") ; Ресурс мекенжайы =" webbuh/data/standard.data/ ?$format=json" HTTP сұрауы = Жаңа HTTPRequest (ресурс мекенжайы, тақырыптар);

Ғаламдық контекст мүмкіндігі ReadJSON(ReadJSON, True)

  • Екінші параметрдің мәні True мәніне орнатылса, нысанды оқу JSONжылы орындалады Сәйкестік.Егер False мәніне орнатылса, нысандар түрдегі нысанға оқылады Құрылым.
  • JSON нысандарын құрылымға сериядан шығару кезінде құрылымның негізгі талаптарын біліңіз. Егер нысанды сериядан шығару құрылым кілті үшін жарамсыз сипат атауын тапса, ерекше жағдай шығарылады.

1. 1 HTTP қосылым параметрлерін конфигурациялау

Сыртқы REST веб-серверімен өзара әрекеттесудің клиенттік бөлігін ұйымдастыру үшін мен нөлден бастап BSP негізінде клиент конфигурациясын жасадым. Бұл конфигурацияда мен қосылым параметрлерін орнату үшін каталог жасадым (1-суретті қараңыз)

1-сурет Қалған интерфейс арқылы сыртқы IB-ге HTTP қосылым параметрлерін конфигурациялауға арналған анықтамалық нұсқаулық

Түймені басқаннан кейін Сервер жауабын тексеріңіз клиент сервердің жауабын алуға тырысатын процедура шақырылады. Бағдарлама кодыпроцедура төменде жазылған:

&OnClient процедурасы CheckConnection(пәрмен) мекенжайы = Object.ServerAddress; Пайдаланушы = Object.User; Құпия сөз = Object.Password; Негізгі атауы = Объект.Аты; Порт =? (Object.Port<>0,Object.Port,80); HTTPConnection = Жаңа HTTPConnection (мекенжай, порт, пайдаланушы, құпия сөз); Ресурс мекенжайы = Негізгі атау + "/odata/standard.odata/ $метадеректер "; //Қоңырау теңшелетін функция Жауап беру құрылымы= B callHTTPmethodOnServer(«АЛУ», HTTPConnection,ResourceAddress) ; Егер Жауап беру құрылымы <> Анықталмаған Содан кейін General PurposeClientServer.InformUser("Күй коды "+Жауап құрылымы.StatusCode); егер аяқталса; EndProcedure

Бұл процедураның мақсаты қызметті тексеру жәнепайдаланушы қосылым параметрлерін дұрыс енгізді ме. Ол үшін GET сұрауын жасаңыз:
HTTPConnection.CallHTTPmethod( "АЛУ", RequestHTTP);
ресурс мекенжайын пайдалану:
Ресурс мекенжайы =Негізгі атау+ /data/standard.data/ “;
Сондай-ақ браузерде қызметтің жұмысын тексеруге болады
URL
http://host/WebBuh/odata/standard.odata. Осындай сұраудың нәтижесінде тек субъектілердің тізімі алынады. Стандартты OData интерфейсінің толық сипаттамасы үшін (қол жетімді нысандар тізімі, олардың XML- түріндегі атрибуттары мен функциялары
құжат.) параметрін пайдаланып GET сұрауын жасау керек $метадеректер. URL http://host/WebBuh/odata/standard.odata/$metadata. Құжаттың толық сипаттамасын http://www.odata.org/documentation/ (ағылшын тілінде) сайтынан табуға болады.
Жауаптарды форматта ала аласыз Atom/XMLнемесе JSON. Жауап күй кодтары арқылы HTTP протоколыжауаптарды диапазондардан көре аласыз:

  • 100-199 – клиент сұранысының қабылданғанын және өңделуде екенін көрсететін ақпараттық жауаптар.
  • 200-299 – клиенттің сұрауы сәтті өңделгенін білдіреді.
  • 300-399 сұрау сәтсіз аяқталды және клиент сұранысты қанағаттандыру үшін қандай да бір әрекет жасау керек дегенді білдіреді.
  • 400-499 - клиент қосымшасының жағындағы қателер туралы хабарлайды. Бұл кодтар клиенттен қосымша ақпарат талап етілетінін де көрсетуі мүмкін.
  • 500-599 - Сервер жағындағы қате туралы хабарлайды, сервер қатеге тап болғанын және клиенттің сұранысын орындай алмайтынын көрсетеді.

1.2 Объектіні идентификатор бойынша іздеу

Келесі функция сервердегі бірегей идентификатор арқылы каталогты немесе құжатты іздеуге арналған. Егер нысан табылса, функция идентификатордың жол мәнін қайтарады (Ref_Key) , әйтпесе ол қайтарады белгісіз.Функцияға келесі параметрлер беріледі:

  • HTTPConnection – HTTPConnection түріндегі нысан
  • PublishName - Жарияланған сервер дерекқорының атауы
  • Элемент – объектінің идентификаторы, мысалы, Каталог_ұйымдарнемесе Document_ - Ұйымның анықтамалығы.
  • Идентификатор - серверде ізделетін нысанның идентификаторы, мысалы, Organization.UniqueIdentifier()
&AtServer функциясы SearchObjectBy GUID (HTTPConnection,PublicationName,Element,UniqueIdentifier) GUID = Жол (бірегей идентификатор); // жолға түрлендіру ResourceAddress = + Element+ "(guid""+ GUID+ "")?$format=json" ; Жауап беру құрылымы = BcallHTTPmethodOnServer("АЛУ" , HTTPConnection,ResourceAddress) ; Егер Жауап беру құрылымы .Күй коды >= 400 Содан кейін //General PurposeClientServer.NotifyUser(Элемент+ "Қате"+ResponseStructure.StatusCode+ //General PurposeClientServer.NotifyUser(ResponseStructure.ServerResponseUdecoded); анықталмаған қайтару; EndIf; Сәйкестік = Жауап беру құрылымы. ResponseServer a; Массив = Сәйкестендіру["мән"]; Массив = Анықталмаған болса, сәйкестікті қайтару ["Ref_Key"] Басқа қайтару массиві ["Ref_Key"]; EndIf; EndFunctions

Параметр Ресурс мекенжайы REST қызметіне қол жеткізу үшін пайдаланылады. Қызметтің жұмысын тексеру үшін браузердегі ресурсты осылайша көрсетуге болады

http://(WebServerAddress)/(PubName)/odata/standard.odata/(Item)?(Параметрлер) ,қайда

  • Веб-сервер мекенжайы– Қызмет жарияланған веб-сервердің мекенжайы, мысалы, Localhost
  • Аты Жарияланымдар– шешімді жариялау кезінде көрсетілген ақпараттық базаның атауы
  • /data/standard.data/ – Стандартты OData интерфейсіне қол жеткізу белгісі
  • Элемент – ресурс идентификаторы немесе алдын ала анықталған ресурстар. Мысалы, Catalog_Account(guid'value').
  • Параметрлер– ресурс параметрлері. Мысалы, HTTP сұраулары үшін қабылданған таңдау үшін пайдаланылады: ?key=value&key2=value2

1.3 Объектіні іздеу өрістері бойынша іздеу

Келесі пайдаланушы анықтайтын функция нысан сәйкестендіру нөмірі бойынша болған жағдайда іздеу өрістері бойынша нысанды іздеуге арналған. Функция объектінің жолы Ref_Key-сәйкестендіру нөмірі.

&Server функциясы P searchObjectBySearchFields(HTTPConnection, ЖариялауАты, Элемент,ІздеуӨрістері)Шарт = "" ;Іздеу өрісінің цикліндегі әрбір негізгі мән үшін Шарт = Шарт + KeyValue.Key+"eq""+ KeyValue.Value+ "" және "; EndCycle; Мәтінді сұрау =Lion(шарт, StrLength(шарт)-5); // соңғы 5 таңбаны алып тастаңыз Ресурс мекенжайы= PublicationName+ "/odata/standard.data/" +Element+ "?$filter=" + Мәтінді сұрау+ "&$format=json& $select=Ref_Key" ; // Менің теңшелетін функциямды шақырыңыз Жауап беру құрылымы= callHTTPmethodOnServer( "АЛУ",HTTPConnection,ResourceAddress);Егер Жауап беру құрылымы .Күй коды >= 400 Содан кейін //General PurposeClientServer.InformUser(Элемент+ "Қате"+Жауап құрылымы.StatusCode); //General PurposeClientServer.NotifyUser(ResponseStructure.ServerResponseUdecrypted); анықталмаған қайтару; EndIf; Сәйкестік = Жауап беру құрылымы. ResponseServer a; Массив = Сәйкестендіру["мән" ]; Массив = Анықталмаған болса, сәйкестікті қайтарыңыз ["Ref_Key" ] Әйтпесе массивді қайтарыңыз ["Ref_Key" ]; EndIf; EndFunctions

Процедураның денесінен көрініп тұрғандайП SearchObjectByFieldsSearch, таңдау кілт сөзден басталады$сүзгіресурс мекенжайында. Формальды параметрІздеу өрістері -бұл атрибуттардың атаулары мен мәндерін қамтитын сәйкестік.

Бөлшектердің аты кейде анық емес екенін ескеріңіз. Каталогтар үшін мынаны есте ұстаған жөн:

  • код - код,
  • Сипаттама
  • DeletionMark - жою белгісі,
  • IsFolder - топтың белгісі,
  • Parent_Key - ата-ана.
  • Төлсипат сілтеме түрінде болса, оның атына _Key жұрнағын қосыңыз, мысалы, Contractor_Key.

Құжаттар үшін:

  • нөмірі – құжат нөмірі,
  • Дата – құжаттың күні.

Логикалық таңдау операциялары

  • eq - тең; /Catalog_Cities?$filter=Атау eq 'Негізгі';
  • ne - тең емес; /Catalog_Cities?$filter='Пермь' атауы;
  • gt - көп; /Каталог_өнімдері?$сүзгі=Бағасы 10 тг;
  • ge - үлкен немесе тең; /Catalog_Products?$filter=Бағасы 10;
  • lt - аз; /Каталог_Өнімдері?$сүзгі=Бағасы lt 10;
  • le - кем немесе тең; /Catalog_Products?$filter=Бағасы 10;
  • немесе - Логикалық НЕМЕСЕ; /Каталог_ Өнімдер ?$сүзгі= Бағасы lt 10 немесе Бағасы гт 100;
  • және - Логикалық ЖӘНЕ; / Каталог _Өнімдер?$ сүзгісі =Бағасы g t 10 және Бағасы l t 100;
  • емес - терістеу; /Каталог_ Өнімдер ?$сүзгі=жоқ (Баға эквивациясы 10);

Нақты параметрдің мәнін де ескеріңіз Элемент(немесе нысан)) мен оны функцияға жіберемін келесі ережеге сәйкес құрылады:

PrefixName_ConfigurationObjectName_SuffixName.

Стандартты OData интерфейсін пайдалану арқылы сіз қол жеткізе аласыз келесі нысандар (Атау префиксі):

  • Анықтамалық - Каталог;
  • Document - Document;
  • Document Journal - DocumentJournal;
  • Тұрақты - Тұрақты;
  • Exchange Plan - Exchange Plan;
  • Шоттар жоспары - ChartOfAccounts
  • Есептеу типінің жоспары - ChartOfCalculationTypes;
  • Сипаттама түрлерінің диаграммасы - ChartOfCharacteristicTypes;
  • Ақпараттық регистр – InformationRegister;
  • Жинақтау тізілімі – жинақтау тізілімі;
  • Есептеу тізілімі - CalculationRegister;
  • Бухгалтерлік есеп регистрі - AccountingRegister;
  • Бизнес процесс - BusinessProcess;
  • Тапсырма - Тапсырма.

ConfigurationObjectName- конфигурациялау объектісінің «Аты» қасиеті, ол конфигураторда орнатылады.

Атау жұрнағы- ресурс атауын көрсету үшін қажет, міндетті емес, келесі мәндерді қабылдай алады:

  • Объектінің кестелік бөлігінің атауы;
  • Объектінің виртуалды кестесінің атауы;
  • RowType – объектінің кестелік бөлігінің қатары;
  • RecordType - бір регистр жазбасы.

Ресурсқа қол жеткізу опциялары

Ресурс атауын қалыптастырғаннан кейін ресурсқа қол жеткізу параметрлерін анықтау керек, мысалы, ?$сүзгі= Мағынасы &$формат=json& $таңдау= Ref_Key ,

  • $сүзгі- мәліметтерді қабылдау кезінде таңдау
  • $формат- қайтарылған деректердің пішімін анықтайды,
  • $таңдау- сұрау нәтижесіне қосылатын нысан қасиеттерін санау;
  • $метадеректер- стандартты OData интерфейсінің сипаттамасын қайтарады (атаудың жұрнағын көрсетпей пайдаланылады, мысал жоғарыдағы суреттердің бірінде бар);
  • $жоғарғы- қайтарылған жазбалар санын шектеу;
  • $өткізу- сұраныс нәтижесінен жазбалардың көрсетілген санын алып тастайды;
  • $count- сұраныс таңдауындағы жазбалар санын қайтарады;
  • $inlinecount=allpage(=жоқ)- сұрау нәтижесіне жазбалар саны туралы ақпаратты қосады
  • $тапсырыс=<Реквизит1>өсу,<Реквизит2>азайту- сұрау нәтижесін сұрыптау
  • рұқсат беру ғана- тек рұқсат етілген («$» белгісінсіз пайдаланылады).

1.4 Ақпараттық регистр жазбаларының массивін алыңыз

Жеке тұлғалардың толық аты-жөні туралы ақпарат тізілімінің жазбаларының массивін алу мысалын қарастырайық, мысалы, толық аты-жөнін өзгерту тарихы жеке

Аты Жарияланымдар "WebBuh";Элемент = "Жеке тұлғалардың ақпараттық тізілімі_аты"; Период = Анықталмаған; Анықтама түрі деректері= Жаңа құрылым(); D DataReferenceType.Insert("ФизикТұлға",ФизикалықТұлға_Кілті); DataNonReferenceType= Жаңа құрылым(); DataNonReferenceType.Insert("ФизикалықТұлға_Түрі", "СтандартКЕРЕКТІК.Каталог_ФизикалықТұлғалар") Массив = GetRegisterRecordSetDetails(HTTPConnection, жарияланым атауы, элемент, кезең, ӨлшемдерСілтеме түрі, Non-ReferenceType өлшемдері)

Осы мысалда шақырылған GetRegisterRecordSet функциясының негізгі бөлігі төменде көрсетілген.

&AtServer функциясы GetRegisterRecordSetDetails(HTTPConnection , Жарияланым атауы , Элемент , Период = Анықталмаған , ӨлшемдерСілтеме түрі= Анықталмаған, Non-ReferenceType өлшемдері= анықталмаған) RequestText = "" ;Егер кезең<>Анықталмаған Содан кейін FormattedPeriod= Формат(Кезең ,"DF=жжжж-АА-кгСС:мм:сс"); QueryText = "Period = datetime""+ FormattedPeriod + """ ; EndIf; Егер ӨлшемдерСілтеме түрі <>Анықталмаған Содан кейін әрбір кілт мәні үшін ӨлшемдерСілтеме түріСығылған цикл = ? ( Мән толтырылды(QueryText ), "," ,""); QueryText = QueryText+ Қуатталған + KeyValue.Key+ "=guid(""+ KeyValue.Value+ "")"; EndCycle; EndIf; If Non-ReferenceType өлшемдері<> Анықталмаған Содан кейінӘрбір кілт мәні үшін Non-ReferenceType өлшемдері Цикл Сұрау =? ( Мән толтырылды(QueryText ), "," ,""); QueryText = QueryText + Query+ Қ keyValue.Key + "=" + KeyValue.Value; EndCycle; EndIf; Ресурс мекенжайы = Жарияланым атауы + " /data/standard.data/" + Элемент + "("+ QueryText + + ") ?$format=json"; // Менің теңшелетін функциямды шақырыңыз Жауап беру құрылымы = CallHTTPmethodOnServer(«GET», HTTPConnection, ResourceAddress); Егер Жауап беру құрылымы.Күй коды >= 400 Содан кейін//General PurposeClientServer.InformUser(Элемент+ "Қате"+Жауап құрылымы.StatusCode); //General PurposeClientServer.NotifyUser(ResponseStructure.ServerResponseUdecrypted); анықталмаған қайтару; EndIf; Сәйкестік = 0

1C: Enterprise-де 8.3.5 нұсқасынан бастап платформа барлық конфигурация үшін REST интерфейсін автоматты түрде жасай алады. Ол OData протоколында жұмыс істейді және веб-сервер арқылы каталогтармен, құжаттармен және регистрлермен жұмыс істеуге мүмкіндік береді. Жалпы алғанда, деректерді қабылдау жылдамдығы COM немесе файлдар арқылы қарағанда бірнеше рет жылдамырақ, бұл жақсы жаңалық.

Әртүрлі операциялар үшін әртүрлі сұраулар қолданылады:

  • GET – мәліметтерді алу үшін қолданылады;
  • POST – объектілерді құру үшін қолданылады;
  • PATCH – бар объектіні өзгерту;
  • DELETE – объектіні жою.

Префикстер әртүрлі нысандарға қол жеткізу үшін қолданылады:

  • Анықтамалық - Каталог;
  • Document - Document;
  • Document Journal - DocumentJournal;
  • Тұрақты - Тұрақты;
  • Exchange Plan - Exchange Plan;
  • Шоттар жоспары - ChartOfAccounts
  • Есептеу типінің жоспары - ChartOfCalculationTypes;
  • Сипаттама түрлерінің диаграммасы - ChartOfCharacteristicTypes;
  • Ақпараттық регистр – InformationRegister;
  • Жинақтау тізілімі – жинақтау тізілімі;
  • Есептеу тізілімі - CalculationRegister;
  • Бухгалтерлік есеп регистрі - AccountingRegister;
  • Бизнес процесс - BusinessProcess;
  • Тапсырма - Тапсырма.

ODATA протоколын пайдалана отырып, POST сұрауларын орындау арқылы объектілердің кірістірілген әдістерін де пайдалануға болады.

  • Құжат үшін Post() және Unpost();
  • Тапсырма үшін - ExecuteTask();
  • Бизнес-процесс үшін - Start();
  • Ақпараттық регистр үшін - SliceLast() және SliceFirst();
  • Жинақтау тізілімі және есеп тізілімі үшін - Balance(), Turovers() және BalanceAndTurnovers();
  • Есептеу тізілімі үшін – ScheduleData(), ActualActionPeriod(),<ИмяПерерасчета>() және негіз<Имя базового регистра расчета>().

Бұл интерфейспен жұмыс істеуді бастау үшін оны жариялау қажет. Бұл «Әкімшілік» - «Веб-серверде жариялау» конфигуратор мәзірі арқылы жүзеге асырылады, «Стандартты OData интерфейсін жариялау» құсбелгісін қойып, «Жариялау» түймесін басыңыз.

Жарияланғаннан кейін хаттаманың жұмысын http:// сайтында тексеруге болады.<ИмяСервера>/<ИмяБазы>/data/standard.data. Жауап ретінде біз жарияланған кестелердің бүкіл құрамын алуымыз керек. Ол төмендегі суреттегідей болуы керек.


Егер REST интерфейсін жариялағаннан кейін жарияланған деректердің құрамы бос болса, онда SetStandardODataInterfaceComposition әдісін пайдалану қажет. Кірісте оның «массив» түрінің 1 параметрі бар. Сіз массивке жариялағыңыз келетін метадеректерді қосуыңыз керек.

Құрам = жаңа массив;
Құрам.Қосу(Метадеректер.Каталогтар.Тіркелгілер);
SetCompositionStandardInterfaceOData(Композиция);

http://<ИмяСервера>/<ИмяБазы><ИмяСправочника>

Сұрау кезінде келесі опцияларды пайдалануға болады:

таңдау - бұл параметрде бізге қажетті өрістерді көрсетеміз;

пішім - жауап алғымыз келетін пішімді орнатыңыз (XML немесе JSON), әдепкі - XML

odata - егер жауапта метадеректер сипаттамасы қажет болмаса, онда біз «data=nometdata» деп жазамыз

сүзгі - мұнда біз таңдауларды көрсетеміз.

Жоғарыда жазғанымдай, біз екі XML немесе JSON пішімінде жауап ала аламыз, XML әдепкі бойынша пайдаланылады. JSON пішіміндегі деректерді алу үшін URL мекенжайына “?$format=application/json” қосу керек.

http://<ИмяСервера>/<ИмяБазы>/data/standard.data/Catalog_<ИмяСправочника>?$format=application/json

Негізінде, біз каталогтың барлық жазбаларын емес, белгілі бір элементін алуымыз керек. Ол үшін сиқырлы сөзді қолданамыз «сүзгі».

http://<ИмяСервера>/<ИмяБазы>/data/standard.data/Catalog_<ИмяСправочника>?$format=application/json&$filter=Ref_Key eq guid'UID'

Егер сіз байқаған болсаңыз, URL мекенжайында $format және $filter екі параметрі бар, оларды кез келген ретпен орналастыруға болады, ең бастысы, бірінші параметрдің алдында « белгісі болуы керек. ? ", ал екіншісінен бұрын" & «. Мұндағы логика мынау, бірінші бөлімде каталогтың мекенжайын, ал екіншісінде параметрлерді көрсетеміз. Бұл бөліктер белгісімен бөлінген ? «, бірақ параметрлердің өзі « белгісімен бөлінген & «. Схемалық түрде бұл келесідей көрінеді

Мекенжай кестелері ? $Parameter1=Parameter1 мәні & $Parameter2=Parameter2 мәні

OData шолуы

OData — деректерге қол жеткізуге және өңдеуге арналған веб-негізделген API. Ол мини-ODBC және JDBC API интерфейстеріне ұқсас, бірақ арнайы Интернетке бағытталған. Нақтырақ айтқанда, OData клиенттерге нысандар жиынын атау, жиын құрамындағы нысандарды сүзу және қатысты нысандармен және нысандар жиындарымен қарым-қатынастарды қадағалау үшін URI құруға мүмкіндік береді. Қосымша ақпаратты OData кіріспе бөлімінен қараңыз: Интернетке, бұлтқа, мобильді құрылғыларға және т.б. арналған деректерге қол жеткізу. мобильді құрылғыларжәне т.б.).

Сурет 1. Жалпы мақсаттағы OData провайдерін пайдаланып дерекқорды вебке шығару

1-суреттегі диаграмма дерекқор сияқты ресурсты жалпы мақсаттағы OData провайдері арқылы Интернетке қалай шығаруға болатынын көрсетеді. OData синтаксисі веб-браузерлерге әртүрлі манипуляциялар (жасау, жаңарту, жою, сұрау) үшін жоғарыдағы дерекқордағы деректерді өңдеуге мүмкіндік береді.

Сурет 2. Концептуалды схеманы анықтау тілі (CSDL)

2-суретте CSDL (Conceptual Schema Definition Language) схемасы көрсетілген. CSDL – тұтынушы қолданбаларға ашық деректер құрылымын түсінуге көмектесетін қосымша құрал. CSDL JDBC және ODBC метадеректеріне ұқсайды, ол клиенттік қолданбаларға нақты не кіретінін түсінуге көмектеседі.

Интернетте мыңдаған веб-негізделген API бар. OData осындай API мысалдарының бірі болып табылады. Веб негізіндегі API интерфейстері туралы қосымша ақпарат алу үшін мына веб-сайтқа кіріңіз: Бағдарламаланатын веб. Мұндай интерфейстерді стандарттау осы маңызды технология саласындағы шоғырландыруды жақсартады және инновациялардың нарық талаптарына, атап айтқанда, жаңа деректер құрылымдарын және ашық деректер бастамаларын қолдауға сәйкес келуіне көмектеседі.

OASIS ұйымындағы OData

OData жарғысының жобасы Құрылымдық ақпарат стандарттарын жетілдіру ұйымына (OASIS) жіберілді. Төменде сол құжаттың мәтінінің үзіндісі берілген.

Жұмыс келесі мақсаттарға қол жеткізуге бағытталатын болады.

  • HTTP негізіндегі RESTful деректер қызметтерін құру, URI идентификаторларын (Uniform Resource Identifier) ​​пайдаланып ресурстарды анықтау және дерексіз деректер үлгісін пайдалана отырып ресурстарды анықтау мүмкіндігі, қарапайым HTTP хабарламаларын пайдаланып веб-клиенттермен жариялау және өңдеу мүмкіндігі.
  • Әртүрлі көздерден ақпаратты көрсету және алу, соның ішінде реляциялық дерекқорлар, файлдық жүйелер, мазмұнды басқару жүйелері және дәстүрлі веб-сайттар.

OASIS ұйымына ұсынылған OData спецификациясының құжаттары, сондай-ақ жарғы жобасы келесі сілтемелерде қолжетімді.

OData спецификацияларына қосымша OData кеңейтімдері бар келесі төрт құжат OASIS ұйымына жіберілді.

Бұл құжаттар кеңейтілген, ұсынылған OASIS OData техникалық комитетіндегі жұмысты бастауға арналған. OASIS веб-сайтында оқи аласыз толық мәтін OData жарғылары және кеңейтім құжаттары.

OData және IBM өнімдері

Келесі IBM өнімдері OData қызметін қолдайды.

  • Әртүрлі клиенттердің қол жеткізуін қолдауға арналған өнім.
  • DB2 және Informix өнімдері Microsoft арқылы OData пайдалана алады визуалды студия. Көбірек толық ақпаратосы тақырыпта қамтылған.

Мысалдар

Бұл бөлім Netflix қызметіне кіретін қарапайым OData мысалдарын береді.

Әдепкі Жанрлар Тақырыптар . . . . . . Тақырыптар http://odata.netflix.com/v2/Catalog/Titles/ 2012-05-23T21:41:18Z Әнші Энтони Кидис, бас гитарист Флеа, ... 2012-01-31T09:45:16Z . . . http://odata.netflix.com/v2/Catalog/Titles("13aly") Red Hot Chili Peppers: Funky Monks Әнші Энтони Кидис, бас гитарист Флеа, барабаншы Чад Смит ... 2012-01-31T09:45:16Z . . . 13aly Red Hot Chili Peppers: Funky Monks Red Hot Chili Peppers: Funky Monks Әнші Энтони Кидис, бас гитарист Флеа, барабаншы Чад Смит ... 3.4 1991 . . .

OData және басқа веб-негізделген API интерфейстері

Қазіргі уақытта мыңдаған веб-негізделген API қолданылуда. Осы санаттағы танымал API интерфейстері карта қызметтерін қамтиды. 2012 жылдың маусымындағы жағдай бойынша, бағдарламаланатын веб 6000-нан астам веб-негізделген API тізімін берді (тақырыптағы ескертпені қараңыз: API бизнес үлгілері орталық кезеңді алады). Vordel компаниясының жақында жүргізген зерттеуі «кәсіпорындардың жартысы жаңа бизнес арналарын құру үшін API интерфейстерін қабылдайтынын» анықтады, бұл интерфейстердің 25% мобильді қосымшалар үшін арнайы әзірленген.

Қызығушылықтың бір саласы - OData-ның Linked Data API аймағындағы әрекеттерге қатыстылығы. Жұмыс тобы W3C байланыстырылған деректер платформасы (LDP) жұмыс тобы және OASIS OData техникалық комитеті Интернеттегі деректерді алу және өңдеу үшін REST типті API интерфейстерін анықтауды мақсат етеді. әртүрлі модельдердеректер. LDP платформасы Microsoft корпорациясы көрсеткен деректер үлгісіне негізделген және 1976 жылы тұжырымдалған Питер Ченнің ұйымдық қатынас моделінен (Питер Чен) шыққан. EDM үлгісі әлі де дизайнда қолданылады. реляциялық мәліметтер базасыдеректер. EDM деректер моделі ақпаратты нысандар мен қатынастарға түрлендіруге негізделген. Бұл модель ресурстарға және олардың қасиеттеріне сілтеме жасау және ақпаратты байланыстыру үшін әлеуметтік қауіпсіздік нөмірлері, шот-фактура нөмірлері, элемент нөмірлері сияқты доменге тән мәндерді пайдаланады.

EDM ақпаратты көптеген деректер әзірлеушілеріне таныс түрде ұсынады. Бұл әзірлеушілердің осы модельді түсінуін және пайдалануын айтарлықтай жеңілдетеді. RDF бүкіл әлем бойынша деректерді байланыстыруға мүмкіндік береді және логикалық қорытынды арқылы қорытындыларды қалыптастыруды қолдайды, яғни жаңа фактілерді алуға мүмкіндік береді. бар ақпаратәмбебап идентификаторларды, байланысты анықтамалар мен қасиеттерді пайдалану.

Біртекті емес веб-негізделген API интерфейстері арасында адаптерлер құру толығымен мүмкін. Мысалы, OSLC (Өмірлік цикл ынтымақтастығына арналған ашық қызметтер) деп аталатын байланыстырылған деректер API арқылы алынған жұмыс элементінің шешімдерін байланыстыруға арналған прототип адаптері және Microsoft құжаттары OData арқылы алынған ортақ нүктелерді келесі сілтемеден табуға болады: http://wiki.eclipse.org/Lyo/SharepointAdapter .

Нарық кеңейген сайын жаңа API интерфейстері пайда болады. Олардың мүмкіндіктері әртүрлі дәрежеде бір-біріне сәйкес келуі мүмкін болса да, жаңа пайдалану жағдайлары анықталғандықтан әзірлеушілер осы перспективалы технология саласында инновацияларды жалғастыратынына күмән жоқ.

рахмет

Мен өз әріптестеріме: Элизабет Клири, Эндрю Эйзенберг, Дайан Джордан, Арно Ле Хорс сынды пікірлері мен ұсыныстары үшін алғысымды білдіремін.

Бір сәт елестетіп көрейікші, бізде 1С: Enterprise 8 платформасында деректермен тұрақты жұмыс істеу керек инфобазалар бар. Бірақ, өкінішке орай, олардың конфигурациясына қандай да бір өзгерістер енгізуге мүмкіндігіміз жоқ. Мүмкін бұл (толыққанды платформа болған жағдайда); немесе тегін "1С: UNF for Ukraine. Micro"; немесе артықшылықтарға байланысты автоматты жаңартуқолдаудан бас тартқымыз келмейді; немесе сервистік компания өз қызметтерінің құнын атады, ол басшылықтан рұқсат алмаған және жеке «1С бағдарламашысы» жоқ ...

Ал мұндай жағдайларда сізге осы базаны және қандай да бір сыртқы жүйені біріктіру міндеті беріледі. Не істеу керек және бізде қандай мүмкіндіктер бар? Түсініктемелерде мені толықтыруға болады, бірақ мен әзірге нақты 5 жолды көремін:

  1. Мәліметтер базасына отбасы арқылы қол жеткізу COM объектілері(V83.ComConnector және одан бұрынғы). Шектеу: Платформа Windows жүйесінде орнатылуы керек.
  2. Тікелей қол жеткізудерекқор кестелеріне. Мұнда ДҚБЖ үшін мысал келтірілген. . Шектеу: Деректерге тікелей қол жеткізуді болдырмаңыз лицензиялық келісім; алынған рұқсаттың тұрақсыздығы; деректерді өзгерту деректер қорының логикалық тұтастығын бұзуға әкелуі мүмкін.
  3. 8.3.5 платформа нұсқасынан бастап деректерге қол жеткізуді қамтамасыз ету мүмкін болды автоматты REST интерфейсі OData v.3.0 протоколына негізделген. Шектеу: Платформа жеткізілімінен веб-сервер мен веб-сервер кеңейтім модулін орнату керек.
  4. 8.3.6 платформа нұсқасынан бастап ұзарту механизмі, бұл негізгі конфигурацияға өзгерістер енгізбестен жаңа функционалдылықты «бекітуге» мүмкіндік береді. Жаңа функциялардың ішінде бізге қызықты WEB және HTTP қызметтері бар. Платформаның 8.3.11 нұсқасынан бастап дерекқор кестелерінің құрылымын кеңейту мүмкіндігі (біріктіру мақсатында қызмет деректерін сақтау үшін жаңа мәліметтерді қосу) қолжетімді болды. Шектеу: кеңейтімді әзірлейтін және жаңартулар кезінде оның жұмысын бақылайтын бағдарламашы болуы керек; қызметтер үшін платформа жеткізілімінен веб-сервер мен веб-сервер кеңейтім модулін орнату қажет.
  5. Біз «лезде қол жеткізуден» бас тарта аламыз, содан кейін біз пайдалана аламыз параметр арқылы сыртқы өңдеуді іске қосу пәрмен жолы/орындау. Мұндай сценарийде кейбір өңдеулерді жүйелі түрде іске қосу үшін жоспарлауға болады, ол сыртқы ресурста орындау нұсқауларын тексереді және жұмыс нәтижелерін сонда орналастырады. Сондай-ақ, база орналасқан ОЖ-ға рұқсатыңыз болса, командаларыңызды өңдеу үшін 1С клиенттік қосымшасын дербес іске қосуға болады. Шектеу: өңдеуді жасайтын бағдарламашы болуы қажет; жоспарлаушыдағы іске қосулар арасындағы интервалдың мәніне немесе клиенттік қолданбаның басталу уақытына жүйенің реакциясында уақыттық кешігудің болуы.

Осылайша, 5 опцияның ішінде әкімші үшін ең жылдам және оңай жолы oData протоколы арқылы автоматты түрде қол жеткізу болып табылады. Дәл осындай опция кросс-платформа болып табылады.

Ал oData протоколы бар опция 1С дерекқорымен сілтеме жасау тұрғысынан арзанырақ. Шындығында, Майкрософт оны қатты итермелейді. .NET, AJAX, PHP, Java, JavaScript, WebOS және Objective-C әзірлеуге арналған OData SDK шығарумен қатар, компания бұл протоколды өзінің танымал өнімдерінде енгізді: Excel, PowerPoint, SharePoint, MsSQL және т.б. Осылайша, CommerceML-дің жеке нұсқасын жасаудың және XML және JSON мәтіндерін өзіңіздің WEB және HTTP қызметтеріңізді жүзеге асырғандай өзіңіздің тарапыңызда да, 1C базасында да талдаудың қажеті жоқ. OData пайдаланған кезде сізде деректерді алу немесе өзгерту үшін дереу дайын кітапханалар болады. сыртқы жүйе, 1С базасының жағында болған кезде бәрі автоматты түрде болады.

Бір минут өтті ме?

Біз дем шығара аламыз - бізде енді ешқандай шектеулер жоқ және біз қалаған кез келген интеграцияны жасай аламыз! Д.И.Гончаровтың ISBN 978-5-9677-1462-7 белгілі «1С: Кәсіпорындарды біріктіру технологиялары» кітабындағы барлық нұсқаларды тізбеу үшін мен басында қиялымызды шектедім. және Хрусталева Е.Ю. Сіз бұл жерде менің сөзімді қабылдай аласыз немесе түсініктемелерде талқылауды бастай аласыз, бірақ OData опциясы бәрібір ең тартымды болып табылады.

Тақырыпқа қызығушылық танытқандар үшін хаттаманың ресми сайтына өтіңіз - www.odata.org. Осыған қарамастан, тағы бір рет атап өткім келеді ағымдағы нұсқасыхаттама қазірдің өзінде 4.0 және оны 2014 жылдың 17 наурызында OASIS консорциумы стандарттаған, бірақ 1C: Enterprise 8 платформасы әлі де көбірек пайдаланады. ерте нұсқасы 3.0. Айтпақшы, хаттамалық экожүйе бөлімін қарауды ұмытпаңыз және тізімде бірінші болып табылатын біздің 1С: Кәсіпорын туралы еске түсіруге таңданыңыз :))

Қажетті параметрлер

Жоғарыда айтқанымдай, сізде веб-сервер болуы керек. 8.4 нұсқасынан бастап платформаның серверлік бөлігінде өзінің веб-сервері болады, бірақ әзірге үшінші тарапты - IIS немесе Apache пайдалануымыз керек. Барлығын қалай орнату керектігі әкімшіге арналған сары кітапшада жақсы сипатталған. Бірақ егер сіз суреттерді және басқа адамдардың тәжірибесін ұнатсаңыз, мен оны іздеуде таптым: , және, әрине :) Мен осы мақалаларда берілген деректердің толықтығы мен өзектілігіне кепілдік бере алмаймын және авторлармен мүлдем таныс емеспін. . Егер сізде қандай да бір проблемалар болса, платформаның нұсқасына арналған Әкімші нұсқаулығын оқыңыз - сізге қажет нәрсенің бәрі сонда.

Сізде веб-сервер орнатылғаннан кейін және ол 1C-ге қол жеткізуді кеңейту проблемаларына байланысты іске қосу кезінде бұзылмайды (болжаңыз - сіз 32-биттік Apache және 64-биттік платформаны орнаттыңыз), өте аз қалды. Конфигураторда «Басқару» мәзіріне өтіп, «Веб-серверде жариялау ...» пәрменін басыңыз. Пайда болған терезеде келесі маңызды тармақтарды көрсету керек:

  • Веб-сервер оған қол жеткізуді қамтамасыз ететін «Аты» өрісіндегі дерекқорыңыздың атауы (егер сіз проблемаларды қаламасаңыз, кириллицада жазбаңыз);
  • Орнатылған веб-серверді көрсетіңіз бұл компьютер(егер сізде екі веб-сервер орнатылған болса, ашылмалы тізімде таңдау болады);
  • Таңдалған веб-сервер қол жеткізе алатын жариялау каталогына жол;
  • Ең бастысы - «Стандартты OData интерфейсін жариялау» құсбелгісін қойыңыз!

«Жариялау» түймесін басқаннан кейін параметрлерде көрсетілген жолда default.vrd файлы (жариялау параметрлерінде жасаған деректерді қамтитын XML файлы) және сол атаумен жарияланымыңыз туралы жазба жасалады. сіз көрсеткен веб-сервер конфигурациясына қосылады. Жариялаудан кейін веб-сервер қайта іске қосылуы керек.

Жариялау туралы бірнеше ескертулер. Егер сізде жариялау үшін бірнеше дерекқор болса, олардың әрқайсысында жеке каталог болуы керек. Деректер базасына қол жеткізгісі келетін пайдаланушы туралы дереу ойланыңыз - оның қажетті рөлдері және арнайы таңбаларсыз латын әріптерімен аты болуы керек (егер сіз болашақта кодтаулармен күрескіңіз келсе, бос орындармен орыс тілінде атау жасай аласыз) . Егер сіз Windows жүйесінде жұмыс істеп жатсаңыз және сізде UAC қосылған болса, жарияламас бұрын конфигураторды әкімші ретінде іске қосу керек. Егер сіз Linux жүйесінде жұмыс жасасаңыз - күтіңіз, біз сізге сенеміз! :)

Жарияланған OData интерфейсімен жұмыс істейтін default.vrd келесідей көрінеді:

Жарияланым файлынан көріп отырғаныңыздай, веб-сервер инфобазаның физикалық қай жерде орналасқанына мүлдем мән бермейді, оған апаратын жол бастапқы терезеде базалар тізімінде қалай жазылса, солай жазылады. Ең бастысы, кіру кеңейтімі веб-сервермен бір компьютерде орнатылуы және деректер қорының орналасуы өзгерту құқығымен веб-сервер қызметі үшін желі арқылы физикалық қол жетімді болуы. Сондай-ақ лицензия алуда қиындықтар туындауы мүмкін және сізге nethasp.ini файлын зерттеу қажет, бірақ бәрі осы. стандартты процедураларжәне қалыпты платформа орнату үшін.

Жариялануды аяқтап, серверді қайта іске қосқаннан кейін біз нәтижелерді шолғышта тексере аламыз. Ол үшін веб-сервердің атын, содан кейін жарияланымдағы деректер қорының атын, содан кейін /odata/standard.odata/ жолын көрсету керек. Сізден құпия сөз сұралуы керек және сіз мынаған ұқсас нәрсені көресіз:

Мақалада талқыланған технологияның мүмкіндіктерін көрсету үшін мен «Сауданы басқару (негізгі)» конфигурациясын қабылдадым, 10.3 басылымы», онда үйлесімділік режимі «8.2 нұсқасы. SetCompositionStandardInterfaceOData() композицияның қолжетімділігін басқару үшін өшірілген.

Егер сізде үйлесімділік режимін "8.3.5 нұсқасына" немесе одан жоғарырақ етіп орнатқан өзгертілген 10.3 саудасы болса немесе сізде неғұрлым заманауи конфигурациялар болса, онда барлық метадеректер әдепкі бойынша жасырылады және сізге көрсету үшін арнайы өңдеуді пайдалану қажет болады. қажетті деректердің көрінуі. Өзіңіздің өңдеуіңізді жасауға уақытты жоғалтпау үшін сіз менің жұмысымды пайдалана аласыз, ол қарапайым және басқарылатын интерфейстерге де жарамды (қосымшаларды қараңыз).

Күңілдеп...

Шынымды айтсам, мен бұл идеяны метадеректер тізімімен түсінбедім. Жартылай шешімнің бір түрі. Мақсат қауіпсіздікті арттыру болса, неге ол рұқсат етілген деректерге бірден беріледі толық қол жеткізуөңдеуге және жоюға және тек оқуға рұқсат беру мүмкіндігімен құқықтарды дәл баптауға емес пе? Әрине, сіз құқықтар мәселесін арнайы конфигурацияланған рөлдің көмегімен шеше аласыз, бірақ бұл қолданбалы шешімнің қажетсіз модификациясы, тіпті бұл жағдайда мен REST интерфейсі арқылы дерекқорға ешкімді жібермеймін, қоспағанда Менің сайтымның сервер сценарийлері үшін (бэк-энд), олар не беретінін және нені бермеуін шешеді.

Егер олар дыбыс деңгейін азайтқысы келсе жіберілген ақпарат, содан кейін одан да күмәнді шешім - олар функционалдылықты зерттеу үшін метадеректерге бірнеше рет қарап, содан кейін деректермен жұмыс істейді. Деректерде оңтайландырулар жасау қисынды ма? Ақыр соңында, нысандардан сұралатын өрістер тізімін шектеуге болады, және $ expand параметрімен ашылатын ақпаратты шектеу өте маңызды, ол бүкіл байланыстырылған нысанды тартады, ал бізге одан бір немесе екі өріс қажет. .

Ал әрі қарай не болады?

Менің ойымша, біз сізді құттықтауға болады - бәрі сіз үшін орнатылған және жұмыс істейді! Келесі қадамдар қандай? Мұның бәрі дерекқорға қол жеткізуді ұйымдастырудың не үшін қажеттігіне байланысты – корпоративтік веб-сайтпен ақпарат алмасу, мобильді қосымшаны басқару, корпоративтік бағдарламалық қамтамасыз етумен қосылу...

Егер сіз сайтта пайдаланушы тіркелгісі сияқты бірдеңе жасағыңыз келсе, өзара есеп айырысу тарихын, ағымдағы бағаларды, жеке жеңілдіктерді, тапсырысты енгізуді және басқа да пайдалы нәрселерді ескере отырып, бізде ресми веб-сайтта бірнеше дайын кітапханалар бар. біздің қызметімізде. OData протоколы арқылы алынған дерекқор негізінде толыққанды бизнес-қосымшаны жасауға мүмкіндік беретін SAP-тен тіпті тұтас OpenUI5 құрылымы бар. Жалпы, JS сауатты бағдарламашы үшін кең.

«Велосипедтер» туралы ескерту

Бәлкім, соңғы фразаны оқығаннан кейін сіздің көздеріңіз жарқырап кетуі мүмкін - "1С стандартты веб-клиентімен тозақ! Осындай мүмкіндіктермен мен Blackjack және жағымды компаниямен деректер базасына өз интерфейсімді жасаймын." Бірақ мен сіздің орныңызда болсам, тәжірибелі веб-әзірлеушілер бірнеше жылдан кейін барлығымыз көріп жүрген нәрселерді жасап келе жатқан 1С-пен осы салада бәсекелесуге асықпас едім. Сіз шынымен «Доминикан жобасының» қайғылы даңқын қайталағыңыз келе ме?

Жасаушылар маған қарсылық білдіруі мүмкін және - тәуекел күш жұмсауға тұрарлық және дерлік коммерциялық өнімдер қазірдің өзінде жасалған. Мұндағы Oknosoft қызметкерлері көп жылдар бойы тұтынушылардың дамуы үшін кезек күтетінін мақтан тұтады. Ал мен олар үшін шын жүректен қуаныштымын – жігіттер өз орнын тапты. Бірақ олардың мақалаларына сәйкес, мен олардың metadata.js кешені бір кездері танымал қалта компьютерлеріне арналған DISCo Extensions бағдарламасының веб-аналогиясы сияқты әсер алдым, бұл қарапайым 1С бағдарламашыларына смартфондарға арналған қосымшаларды жазуға мүмкіндік берді. Ал бұл бағдарлама қазір қайда? 1C өзі мобильді шешімдерді әзірлеуге арналған бірдей функционалдылықты (және одан да бай және көбірек платформалар үшін) платформасын жеткізу бөлігі ретінде тегін берді.

бастап жеке тәжірибе. Бір сәтте менің «1С веб-клиентінде мұны істеу мүмкін емес» деген ескертуімнен кейін менің бұрынғы компаниям өзінің баламалы веб-интерфейсін құруға шешім қабылдады. Біз бірнеше JavaScript әзірлеушілерін жалдадық, алдыңғы қатарға негіз ретінде әдемі торлары мен диаграммалары бар сол кездегі танымал интерфейс кітапханасын алдық және сервер үшін node.js таңдадық. Мен осы жоба үшін SOAP деректеріне қол жеткізу интерфейсін енгіздім (ол кезде HTTP қызметтері болған жоқ) және біз бірнеше апта ішінде тапсырыс тізімдерінің әдемі пішінін алдық. Мен даму барысында не болғанын білмеймін, бірақ қателердің жан-жақты шабуылына қарсы бірнеше айлық ерлік шайқастан кейін жоба жабылып, әзірлеушілер қош айтысты. Бірақ сол кезде 1С компаниясының бағдарламашылары қол қусырып отырмады, бірақ бірқатар жаңартуларды шығарды, содан кейін стандартты веб-клиентті пайдалану біршама жағымды болды.

Біз JS сауатты бағдарламашы емеспіз делік, бірақ біз сайтқа кейбір тізімді ілгіміз келеді. Мен бүгінгі кестелерді құруға арналған ең танымал кітапханалардың тізімі бар мақаланы аштым және одан біздің жағдайға арналған қарапайым jsGrid кітапханасын таптым. Біз олардың сайтын зерттейміз, OData пайдалану кодының мысалын аламыз және деректерге жолды сол жерге қоямыз.

Толығымен жалқау болу және біздің мысалға ештеңе бағдарламаламау үшін мен сілтемелер арқылы жолдық көріністерді жүктемей-ақ толыққанды кестені сұрауым керек. Әдеттегі UT10.3 нұсқасында таңдау осыған байланысты өте бай емес, сондықтан мен контрагенттер каталогын аламын.

Енді ең қызықтысы. Бірақ бізге қажет деректерді оқу үшін сұрау жолын қалай құруға болады? Бұл оп-оңай! Біз OData түбіріне апаратын жолды қарастырамыз (мен үшін бұл) бұл каталог қалай дұрыс аталады - Каталог_мердігерлері. Содан кейін мекенжайды жаңа терезеде ашыңыз http://localhost/DemoTrdBase/odata/standard.odata/Каталог_мердігерлерібіз бүкіл каталогтың мазмұнын XML пішімінде көреміз. Бірақ біздің мысал үшін бізге JSON қажет, сондықтан жолға параметрді қосу керек:$format=json - ол жұмыс істейді http://localhost/DemoTrdBase/odata/standard.odata/Каталог_мердігерлері? $format=json . Сонымен, бізді топтар қызықтырмайды және оларды сүзгі параметрі арқылы жойайық:$filter=IsFolder eq false - ол жұмыс істейді http://localhost/DemoTrdBase/odata/standard.odata/Каталог_мердігерлері? $format=json & $filter=IsFolder eq false . Параметрлер блогы, сіз байқағаныңыздай, «?» белгісінен басталады, ал параметрлердің өзі бір-бірімен «&» таңбасымен қосылады. Қол жетімді опциялар мен мүмкіндіктердің толық тізімін платформа құжаттамасын қараңыз.

Алынған файлды веб-серверіңіздегі түбір ретінде конфигурацияланған каталогқа орналастырамыз. Бұл беттің «домендері» мен сұралған деректер сәйкес болуы үшін қажет, әйтпесе сіз шексіз жаңарту индикаторын және журналдарда қатені аласыз: «Сұралған ресурста "Кіру-Басқару-Рұқсат ету-Шығу" тақырыбы жоқ. Сондықтан "null" түпнұсқасына кіруге рұқсат етілмейді. Жауапта HTTP күй коды 401 болды. "


Уақыттың бірнеше минуты өтті және бізде лайықты белгі бар, ол тіпті парақтарда автоматты түрде белгіленеді. Тек аутентификация сұрауы сәл ыңғайсыз болып көрінеді, әр жолы логин мен парольді енгізбеу үшін мен оларды бірден кіру жолында тіркедім. Соңғы файл өте қарапайым болып шықты және оны әркім оңай қайталай алады, бірақ мен оны қосымшаларға орналастырамын.

Бағдарламаламау туралы не айтасыз?

Сайттар, мобильді қосымшалар, хабарлама автобусы және кез келген IT маманына арналған басқа сөздер керемет естіледі, бірақ жоғары бастықтардың жүрегінде жауап таба алмайды. Олардың негізгі жұмыс құралы Excel болып табылады, ол үшін олар өздерінің 1С дерекқорларынан қуатты есеп беру ішкі жүйесі болса да, қисынсыз сүйіспеншілікпен өртенеді. Осы сәтте OData стандартын ойлап тапқан және оны Office 2010 бастап өз бағдарламаларына енгізген Microsoft корпорациясы екені есімізде. кеңсе бағдарламаларыбіз жай ғана деректері бар кестелерді көре аламыз немесе әртүрлі парақтардағы кестелерді біріктірмей-ақ бір уақытта көбірек қызықты ақпаратты алу үшін сұрау механизмдерін пайдалана аламыз.

Мысалы, бізді борышкерлер қызықтырады. UT10-да біз оларды қарыз сомасы нөлден жоғары болатындай сүзгі қою арқылы контрагенттермен өзара есеп айырысу жинақтау регистрінің қалдықтарының виртуалды кестесінен аламыз (әйтпесе бұл аванстар). Мен күнді белгілемеймін, өйткені мен өзекті деректерге қызығамын. Менің базам үшін бұл келесі сілтеме болады: http://localhost/DemoTrdBase/odata/standard.odata/AccumulationRegister_Контрагенттермен есептеулер/Balance?$filter=AmountBalance gt 0

Нәтижені қарап шыққаннан кейін бізде контрагенттер үшін көріністер жоқ, тек контрагенттер каталогы кестесінің кілттері бар екенін байқаймыз. Сондықтан біз осы көмекші деректерді де сұраймыз. Ол үшін сүзгісіз сілтемені пайдаланыңыз: http://localhost/DemoTrdBase/odata/standard.odata/Catalog_Contractors

Ал енді қарапайым қадамдар тізбегі:

  1. Excel бағдарламасын ашыңыз (менде 2016 нұсқасы бар; егер сізде 2010 немесе 2013 болса, мәзір сәл өзгеше болуы мүмкін)
  2. Біз навигациялық жолды ұстанамыз: «Деректер» / «Сұраныс жасау» / «Басқа көздерден» / «ODATA арнасынан».
  3. Өзара есеп айырысулар тізіліміне сілтемемізді көрсетеміз
  4. Авторизация пішінінде үшінші «Негізгі» опциясын таңдап, логин/парольді көрсетіңіз. «Қосылу» түймесін басыңыз.
  5. Сұраныс өңдегішінің ашылған терезесінде «Сұраныс1» атауының орнына біз үшін қызықтырақ нәрсе береміз - «Елді мекендер»
  6. Сұраныс редакторының терезесінің ортасында біз «Тізім» бағанасын көреміз, онда әрбір жолда «Жазба» сөзі бар. Біз «Кестеге» контекстік пәрменін пайдалана аламыз немесе редактордың «Трансформация» мәзіріндегі сәйкес түймені басамыз. Сұраққа «Жарайды» деп жауап беріңіз.
  7. Енді баған «1-баған» деп аталады және оның жанында әртүрлі бағыттағы көрсеткілері бар түйме бар. Оны басыңыз. Бар бағандардың сипаттамасы серверден алынады. Барлық құсбелгілерді алып тастаңыз және оларды тек "Аccount_Key" және "AmountControlBalance" бағандарында қалдырыңыз. «OK» түймесін басыңыз, сонда бізге қажетті деректері бар екі таңдалған баған бар кесте пайда болады.
  8. Ұйым, келісім-шарт және мәміле сияқты өлшемдер біздің назарымыздан тыс болды, бірақ олар әлі де сұралды. Нәтижесінде бізде қазір әртүрлі сомалардағы контрагенттік желілер бар. Оларды топтастыру арқылы қысқартуға болады. Мұны істеу үшін мәзірден немесе контекстен «Топтау» пәрменін шақырыңыз. Топтау өрістерінде тек контрагентті қалдырыңыз және сомасы бар өрісті жойыңыз. Жаңа бағанды ​​«Қарызы» деп атаңыз, операцияда «Сома» таңдаңыз, ал бағанда біздің соманың өрісін көрсетіңіз. «OK» түймесін басыңыз, нәтижесінде біз сәл азырақ жазбаларды аламыз.
  9. Енді контрагенттер шифрын ашу керек. Ол үшін «Сұраныстардың» сол жақ панелінде ағымдағы «Есеп айырысулар» сұранысы бар жерде қоңырау шалыңыз контекстік мәзіржәне «Жаңа сұрау» / «Басқа көздер» / «ODATA арнасы» тармағын таңдаңыз. Пайда болған терезеде контрагент каталогына жолды көрсетіңіз. Әрі қарай, авторизация логинін/құпиясөзін қайтадан көрсетіңіз, алдын ала қарауда «OK» түймесін басыңыз және жаңа сұрауды «Тіркелгілер» деп атаңыз.
  10. «Есеп айырысулар» сұрауына оралайық (сұраулар панеліндегі атауды басыңыз).
  11. Енді екі сұрауымызға қосылайық. Ол үшін редактордың негізгі мәзіріндегі «Біріктіру» / «Сұраныстарды біріктіру» командасын шақырыңыз. Кәсіподақ дизайнерінің терезесінде біздің өзара есеп айырысу кестеміз болады. Орталықта ашылмалы терезеде «Тіркелгілер» сұрауын таңдаңыз. Қосылым түрі әдепкі бойынша (сол жақтағы сыртқы) болып қалады. Одан кейін біріктіру шарты үшін бағандарды таңдау үшін басыңыз. Төменде бізге ұсынылғанның бәрімен келісеміз.
  12. Біріктіруден кейін біз көп бағытты көрсеткілері бар таныс түймесі бар жаңа «Тіркелгілер» бағанын алдық. Біз осы түймені басып, бізді қызықтыратын бағандарды таңдаймыз. Қызығушылық үшін «NameFull» және «Ата-ана» (топ) таңдаңыз. «Ата-ана» бағанасы бізді ашуға шақырады - ондағы «Сипаттама» өрісін таңдаңыз (каталогтың әдеттегі атауы).
  13. Оны әдемі етейік. Бірінші бағанды ​​контрагент кілтімен жоя аламыз. Топ бағанына «Топ» деп ат берейік, контрагент аты бар бағанға «Контрагенттер» атауын беріп, қарыз бағанасын алынған кестенің соңына жылжытайық.
  14. Енді біз басуға болады үй түймесіредактор - «Жабу және жүктеу».
  15. Содан кейін жүктеп алынған кестені жиынтық кесте немесе жиынтық диаграмма үшін деректер ретінде пайдалануға болады. Немесе осы жаңа нысандарды жасау кезінде деректер көзі ретінде «Өзара есеп айырысулар» сұранысымызды көрсетеміз.

Бірақ, олар айтқандай, жүз рет естігеннен, бір рет көрген жақсы.Мен бірдей әрекеттер тізбегін бейнеге түсіруге тырыстым. Мен бірден ескертемін, сіз оны қайталағанда, ол сәл басқаша болады - жоғарыда айтқанымдай авторизация сұралады. Бейне жазу кезінде Excel менің логин мен парольді есте сақтап қалды.

Нәтижелер

Менің мақалам пайдалы болды деп үміттенемін. Барын және пайдасын хабарладым жаңа технологияплатформалар. Сондай-ақ қол жеткізу параметрлері егжей-тегжейлі түсіндірілді ақпараттық база OData протоколын қолданып, практикалық қолданудың бірнеше мысалдарын келтірді.

OData қатынасы тек басқарылатын интерфейс үшін пайдаланылуы мүмкін деген теріс пікірді болдырмау үшін соңғы нұсқаларыплатформа, оқыту үлгісі ретінде мен 8.2 үйлесімділік режимінде «Сауданы басқару (негізгі), 10.3 басылымы» демонстрациялық конфигурация дерекқорын таңдадым. Тіпті осы конфигурацияның дерекқорында, тінтуірді бірнеше рет басу арқылы сіз Excel жұмыс кітабындағы қарыздар туралы жаңартылған деректерді ала аласыз және қазіргі заманғы қор баланстарын алу оңайырақ болар еді. сату деректері және басқа пайдалы ақпарат.

P.S.Деректерді жасау және өзгерту әрекеттерін талқылайтын осы мақаланың жалғасы мына жерде жарияланған

Бүкіл қолданбалы шешім үшін OData REST интерфейсін автоматты түрде жасау мүмкіндігі іске асырылды. Осылайша, бізде толық қолжетімділікті қамтамасыз ету мүмкіндігі бар үшінші тарап қолданбасы 1С дерекқорына бірнеше рет басу арқылы.

Бұл механизм бірнеше жалпы міндеттерді шешуге арналған:

  • Қолданба шешімінен деректерді жүктеу / жүктеу;
  • Интернет-сайттармен (интернет-дүкендермен) интеграция;
  • Конфигурацияны өзгертпей қолданбалы шешімнің функционалдығын арттыру;
  • Басқалармен интеграция корпоративтік жүйелер(кейде қосымша бағдарламалаусыз).

OData REST интерфейсін 1С дерекқорлары арасында деректер алмасу үшін пайдалануға болады, бірақ бұл үшін басқа, ыңғайлырақ механизмдер бұрыннан бар болғандықтан, OData REST интерфейсінің негізгі мақсаты үшінші тарап жүйелерімен интеграцияда көрінеді.

Және бұл өте ыңғайлы, OData клиенттері барлық негізгі платформаларда бар екенін ескере отырып, сәйкес кітапханаларды жүктеп алуға болады.

Бұл мақалада мен OData REST интерфейсінің не екенін және оны қалай пайдалануға болатынын егжей-тегжейлі түсіндіруге тырысамын.

OData REST интерфейсін жариялау

OData интерфейсін пайдалану үшін оны жариялау қажет, ол үшін бізге веб-сервер қажет - Apache 2.2 немесе IIS (сонымен қатар Apache 2.4 нұсқасынан бастап). Содан кейін «Әкімшілік» -> «Веб-серверде жариялау ...» мәзіріне өту керек.

Ашылған терезеде қажетті өрістерді толтырып, «Жариялау» түймесін басыңыз:

Осыдан кейін сізге OData интерфейсінің құрамын анықтау қажет, яғни. оған қандай конфигурация нысандары енгізілгенін және қайсысы жоқ екенін көрсетіңіз (бастапқыда композицияда бірде-бір нысан жоқ).

Сіз мұны келесідей жасай аласыз:

&AtServer процедурасы SetODataAtServer() tArray = Жаңа массив; tArray.Add(Metadata.Catalogs.Products); SetStandardInterface CompositionOData(tArray); EndProcedure

&Серверде

SetODataOnServer() процедурасы

tArray= Жаңа массив;

tArray. Қосу(Метадеректер. Каталогтар. Өнімдер) ;

Стандартты интерфейс құрамын орнату OData(tArray) ;

EndProcedure


Мақала ұнады ма? Достарыңызбен бөлісіңіз!
Бұл мақала пайдалы болды ма?
Иә
Жоқ
Пікіріңізге рахмет!
Бірдеңе дұрыс болмады және сіздің дауысыңыз есептелмеді.
Рақмет сізге. Сіздің хабарламаңыз жіберілді
Мәтіннен қате таптыңыз ба?
Оны таңдаңыз, басыңыз Ctrl+Enterжәне біз оны түзетеміз!