1. La elecci贸n del m茅todo de intercambio. Descripci贸n de la API.2. Implementaci贸n de la API en el lado de 1C.
3.
Aplicaci贸n en TSD y comunicaci贸n con 1C: Enterprise 8.3 a trav茅s del servicio HTTP. Parte 3 (BroadcastReceiver. Obtenci贸n de datos)Hay muchos manuales sobre c贸mo crear un servicio HTTP en Internet. Por lo tanto, describir茅 de inmediato la implementaci贸n. Nuestro servicio consta de tres patrones de URL:
- Directorios - / v1 / catalogs / {Directory} / {Action}
- Documentos - / v1 / documents / {Document} / {Action}
- Servicios - / v1 / services / {Action}
Para no inflar el art铆culo, considere el ejemplo con el libro de referencia "Nomenclatura". 1C no nos permite tener rutas diferentes para los m茅todos HTTP. Por lo tanto, el patr贸n URL ser谩 (/ v1 / catalogs / wares / {Action}, para el cual se definen dos m茅todos HTTP GET, POST. En otros patrones tambi茅n usaremos GET, POST.
- / v1 : nos permitir谩 admitir varias opciones de API en el futuro. Podremos agregar la plantilla de URL v_V2_Directories y, en consecuencia, la ruta para comenzar con / v2
- / catalogs / wares / - catalogs integra todos los directorios. Esta es la parte est谩tica del camino. wares cumple con el Directorio de nomenclatura. 1C pondr谩 "mercanc铆as" en los par谩metros de URL. Cabe se帽alar que nosotros mismos encontramos formas. Y luego tambi茅n pensamos c贸mo procesarlos en 1C nosotros mismos
- {Acci贸n} : aqu铆 pasaremos lo que queremos obtener de 1C. Por ejemplo getByParam o getAll
Desde el punto de vista de Retrofit, baseUrl se ver谩 as铆
"http://192.168.0.1/unf/hs/inntsd/v1/"
donde:
- 192.168.0.1 : servidor donde se publica el servicio HTTP
- / unf : nombre de la base de datos 1C
- / hs : parte est谩tica para servicios HTTP
- / inntsd es la URL ra铆z de todo el servicio. Llama como queramos
Considere el procedimiento para recibir una solicitud.
Get()
Hay muchos malos consejos en este ejemplo. Por ejemplo,
Nombre del directorio, Acci贸n debe convertirse en una enumeraci贸n o en un nuevo directorio con coincidencias. Pero qu茅 tan elegante es implementarlo en el suplemento, a煤n no lo he decidido.
Analicemos
la solicitud
getByParam . Direcci贸n completa: / v1 / catalogs / wares / getByParam? Prop = byCode & compare = similarly searchString = 239
Averig眉e con qu茅 directorio estamos trabajando.
() . = "" = (); . = "" = () = (100, " " + .); ; ;
Obtenga el m茅todo de solicitud. Y verificamos que todos los par谩metros est茅n asociados al m茅todo. Aqu铆 debe tenerse en cuenta una comprobaci贸n profunda que no. Como estoy escribiendo para 1C y Android.
() . = "" = ..("prop"); = ..("comparison"); = ..("searchString"); ( = ) ( = ) ( = ) = (103, " / "); ; ; = (, , ); = (0, ""); .("payload", ); . = "" = (); = (0, ""); .("payload", ); = ("102", " " + .); ; ;
Si todo esta bien. Preparamos los datos para la respuesta.
(, , ) = ; = " | . , | . , | . , | . , | .. | | . | | . | {}"; = ""; () = ("byCode") = "."; () = ("byArticle") = "."; () = ("byName") = "."; ; () = ("equally") = + " = &"; () = ("similarly") = + " &"; ; = (, "{}", ); . = ; () = ("similarly") = "%" + + "%"; ; .("", ); = .().(); = .(); = ; .( ("code,article, name, fullName, unit", ., ., ., ., .)); ; = ; .("quantity", ); .("wares", ); ;
Y finalmente, unimos todo juntos. Ponemos esto en JSON y enviamos la respuesta.
= (0, ""); .("payload", ); ; (, ) = (); HTTP = HTTP(); HTTP.["Content-Type"] = "application/json; charset=utf-8";
Y se lo damos todo al cliente.
= (200, ) ;
Independientemente de lo que obtuvimos de 1C. Siempre tratamos de responder correctamente.
(, ) = ; = (); .("code", ); .("description", ); .("result", ); .("payload", ); ;
Eso es todo. Todos los dem谩s m茅todos se implementan de manera similar. Haga preguntas. Estar茅 encantado de responder.