Menú
Está libre
registro
hogar  /  Internet/ 1c servicio http. Pavel Chistov

Servicio http 1c. Pavel Chistov

¡Atención! Ahora el curso también se imparte por la tarde de 18:30 a 21:30 en formato de inmersión.

En el curso, obtendrá habilidades prácticas en el uso de los siguientes mecanismos de la plataforma "1C: Enterprise 8":

  • Servicios WEB (protocolo SOAP)
  • Formato JSON
  • Interfaz OData (servicio REST automáticamente)
  • Servicios HTTP

¡¡¡IMPORTANTE!!! El curso está diseñado para programadores que tienen las habilidades para trabajar con el mecanismo XDTO o que han completado el curso previamente.

Descripción y programa del curso:

El costo del curso WEB incluye:

  • Curso de 2 semanas, 2 seminarios web con un tutor
  • certificado de 1C-Training Center No. 3 (sujeto a práctica)

El costo del curso de inmersión a tiempo completo incluye:

  • 2 días de 10:00 a.m. a 5:00 p.m. o 4 p.m. de 6:30 p.m. a 9:30 p.m.
  • sinopsis, auriculares
  • almuerzos, pausas para el café
  • acceso durante 2 años a videos actualizados una vez finalizado el curso
  • certificado de 1C-Training Center No. 3

Formatos de aprendizaje

Entrenamiento WEB

¿Qué es este formato?El formato propuesto combina muchas de las ventajas de la educación a distancia con un componente presencial, presentado por materiales de video y consultas en línea.
El curso WEB consta de videos, tareas prácticas y seminarios web con profesores. Todos los materiales del curso se proporcionan las 24 horas del día a través de Internet; puede estudiar en un momento conveniente. El curso se divide en clases. Durante la lección, se estudian materiales sobre el tema actual, se realizan talleres, se hacen preguntas al maestro. Al final de cada lección, se realiza un webinar, donde el docente analiza todas las preguntas recibidas, errores típicos, explica la solución correcta. La grabación de seminarios web está disponible en el portal. De esta forma se van sucediendo varias sesiones una tras otra. Al final, una final Trabajo independiente y el seminario web final.

Duración: 2 semanas

¿Qué es este formato?


Duración:16 horas académicas

¿Qué es este formato?El curso de inmersión presencial es un formato que combina todas las ventajas de la formación presencial, la formación a distancia y la formación individual. Las clases se llevan a cabo en un aula equipada, usted estudia de forma independiente los materiales del curso (videos paso a paso) y realiza talleres. Al mismo tiempo, hay un maestro en el aula que está listo en cualquier momento para responder una pregunta y ayudar con la resolución de problemas prácticos, así como para verificar la corrección de su implementación.
Ventajas: consultas individuales del profesor sobre sus preguntas, el ritmo de aprobación del material que más le convenga.
Todo esto da un estudio más profundo del material del curso.
¡Es posible tomar este curso desde su lugar de trabajo con el efecto completo de la presencia del maestro donde se encuentra el estudiante! Si está interesado en esta oportunidad, ¡llámenos!

Duración:16 horas académicas

Para empezar, una vez tuve que lidiar con los servicios web por mi cuenta. Luego, de alguna manera, logré dominar este negocio y comprender qué y dónde presionar para que todo funcione. Afortunadamente, la configuración con la que tuve que trabajar ya estaba repleta de Los servicios web y se podían espiar y hacer por analogía, y en Internet pude encontrar suficientes artículos sobre este caso. Y así, con ejemplos (para mí es La mejor manera estudio), dominé este negocio, y ahora ya no me asustan.

ASI QUE... La tarea principal de cualquier integración, ya sea CD, servicios web o servicios HTTP, es transferir algo desde algún lugar, hacer algo al respecto y devolver una respuesta. Es en este formato que consideraremos la nueva tecnología.

En el árbol de metadatos, los servicios HTTP se encuentran en la rama General:

El nuevo servicio HTTP se agrega como cualquier otro objeto de metadatos. Nombre y sinónimo lo que quieras. Aquí, solo la "URL raíz" es importante; de ​​hecho, es el identificador Servicio HTTP en esta base de datos, es decir exactamente lo que escriba en esta propiedad, se lo pasará a un desarrollador externo (bueno, o usted mismo) como un enlace al servicio.

No sé si es posible escribir aquí en cirílico, pero para que no se rían de ti en el mundo progresista, escribe en latín).

La plantilla de propiedad en sí es importante aquí:

Con la plantilla, puede consultar más tarde los datos que se le pasaron. ASI QUE: Todos los datos que desea recibir desde el exterior se pueden dividir en 2 bloques: obligatorio y opcional.

Datos / parámetros obligatorios los insertamos en la plantilla, por lo que si la persona que accede al servicio no los completó, entonces el servicio a priori dará un error, y estarás seguro de que estos datos están ahí cuando desarrolles el texto del módulo del manejador. Cómo hacerlo: en la línea Plantilla entre llaves "()", alternando con el signo "/", escriba los nombres de las variables. Por ejemplo, definitivamente necesitamos un artículo, luego escribimos / (artikul). Si necesitamos obtener el SKU, el nombre y el nombre de usuario, la cadena de la plantilla se verá así: / (artikul) / (nombre) / (usuario), etc. Cada uno de estos parámetros en el texto del módulo controlador se puede obtener de la siguiente manera: Request.ParametersURL ["<имя параметра>"]. Si no hay ninguno requerido, entonces la plantilla se ve así: / *.

Datos opcionales que queremos recibir a través del servicio NO se describen en la plantilla. Al construir un enlace, para acceder al servicio, se describen al final del enlace después del signo "?", Separados por el ampersand "&" y tienen la estructura<имя параметра>=<значение параметра>... En el texto del módulo controlador, puede hacer referencia a ellos con la construcción: Request.RequestParameters.Get ("<имя параметра>PERO: es importante recordar que, dado que no son obligatorios, es posible que no estén allí, respectivamente, verificamos el valor de Indefinido.

A continuación, agregamos un nuevo método para nuestra plantilla. La propiedad del método HTTP es importante aquí. Ellos aquí gran cantidad PERO no entraremos en todas las sutilezas. Para implementar cualquiera de sus tareas, solo necesita 2: OBTENER y CORREO.

Cómo elegir: Si lo que hemos descrito en los dos párrafos anteriores es suficiente para que trabajes, es decir puede obtener todos los datos que necesita utilizando los parámetros obligatorios y opcionales de la propia solicitud, luego tomamos GET. En este caso, en cualquier navegador, si ingresa correctamente a la barra de direcciones, verá el resultado de la acción de su servicio HTTP - ¡BENEFICIO! Si, de repente, su servicio necesita datos en una forma más compleja (xml, por ejemplo, o algo más), algo que no se puede meter en una barra de direcciones simple, entonces usamos POST. De las desventajas, una verificación tan fácil a través de la barra de direcciones del navegador, como con GET, no funcionará, pero en Internet puede encontrar fácilmente algunos sitios donde puede verificar los servicios. por método POST(por ejemplo, el sitio https://www.hurl.it). En caso de que se seleccione el método POST, luego la solicitud además URL (direcciones), aparece un cuerpo en el que puede introducir cualquier cosa que desee y, en el controlador de métodos, consúltelo a través de la construcción Request.GetBodyAsString (). Cualquier plantilla puede tener un método GET y un método POST. Tendrán manejadores correspondientemente diferentes, y 1C, dependiendo de cómo se envió la solicitud, elegirá uno u otro método.

Un controlador de servicio HTTP es una función que siempre devuelve un valor de tipo HTTPServiceResponse, que es construido por el constructor New HTTPServiceResponse (<КодСостояния>). <КодСостояния>- este es un número, para no sufrir con la elección de qué escribir, escribimos: 200 - si todo está bien y devuelve algún tipo de valor lógico, 400 - si hay un error y devuelve una descripción de el error. Este tipo tiene varios métodos (puede leerlo en el asistente de sintaxis, todo está claramente escrito allí). Nuevamente, siempre puede devolver todo lo que necesita como una cadena: el método SetBodyFromString (). (un pequeño truco: si devuelve html y desea que el navegador lo muestre maravillosamente cuando ingrese la dirección de su servicio en la barra de direcciones, escriba la propiedad de respuesta de Encabezados: Answer.Headers.Insert ("Content-Type", "text / html; charset = utf-8 ") - por lo tanto, indica que esto no es solo un conjunto de caracteres, sino HTML y debe mostrarse en consecuencia)

Una vez que haya terminado, es necesario publicar el servicio HTTP. Esto se hace en una computadora con un servidor web instalado (no escribiré sobre la configuración, hay muchos artículos) a través del menú:

Administración: publicación en un servidor web.

Hay una pestaña de servicios HTTP. Pon las grajillas y haz clic en "Publicar"

asi que, tenemos un servicio HTTP listo para usar. ¿CÓMO contactarlo? Si usamos Método GET luego en Barra de dirección navegador escribimos: http: //<имя веб сервера>/<имя базы>/ hs /<корневой URL>/<обязательный параметр1>/<обязательный параметр2> <имя не обязательного параметра 1>=<значение не обязательного параметра 1>&<имя не обязательного параметра 2> =<значение не обязательного параметра 2> .

Y, finalmente, una vez más en imágenes))):

En la plataforma 1C Enterprise 8.3, fue posible crear servicios HTTP

Usando el lenguaje incorporado, ahora puede responder a una solicitud. Con esto, tiene un acceso conveniente al cuerpo, los encabezados y la línea de la fuente. solicitud, y también es posible formar código, cuerpo y encabezados la respuesta a su propia discreción.

En comparación con los servicios web disponibles en la plataforma SOAP, los servicios HTTP tienen varias ventajas:

  • Facilidad de programar al cliente de dichos servicios;
  • Potencialmente menor cantidad de datos transferidos;
  • Potencialmente menos carga computacional;
  • Los servicios HTTP están orientados a los recursos, mientras que los servicios SOAP están orientados a la acción.

La base de datos demuestra la implementación de servicios http

Lista de facturas del servicio http

El servicio http usó patrones de URL, implementó el procesamiento de propiedades. ParámetrosURL objeto HTTPServiceRequest
Este ejemplo muestra cómo puede crear una base espaciadora entre la base de producción y el sitio corporativo.
La conexión se realiza a la base de datos de demostración " Gestión comercial 11", en el que debe establecer una propiedad adicional con el nombre Contraseña web , donde almacenaremos la contraseña de acceso.
La solicitud http se pasará a los parámetros de URL: INN como nombre de usuario y contraseña.
Al procesar una solicitud, se realiza una conexión a través de ComConnector a la UT (los frenos están garantizados) y se realiza una selección desde allí
No pretendo la rapidez y seguridad de esta solución, es un ejemplo

Entonces. Ha aparecido una nueva rama en el árbol de metadatos: servicios HTTP
Nosotros creamos nuevo servicio, especifique su nombre y URL raíz (lista)
La URL raíz se utilizará para llamar a nuestro servicio http
A continuación, agregue la plantilla de URL al servicio http, especificando "/ (Inicio de sesión) / (Contraseña)"
Dicha plantilla permitirá, al procesar una solicitud http, obtener la estructura correspondiente de parámetros y sus valores en los parámetros de la URL.
Ahora, agregue un método llamado "get" a nuestro patrón de URL, elija GET como el método http.
Abra el controlador y escriba el código.
Un manejador de métodos es una función que debe devolver un valor de tipo HTTPServiceReply

Estado del pedido del servicio http

El ejemplo implementa el procesamiento de variables pasadas por el método POST, la formación de una respuesta en forma de página html.
Esta vez, los datos se obtienen de la base de datos donde se encuentran los hs, por lo que funciona mucho más rápido que el servicio http anterior.
Al implementar sistema de trabajo tiene sentido crear objetos en la base de datos (con el servicio) y configurar la migración de datos desde la base de datos de origen (por ejemplo, a una proceso de fondo). Al procesar una solicitud http, la selección debe realizarse directamente desde la base de datos donde se encuentra.

Publicación

Hay mucha información sobre la instalación y configuración de un servidor web.
Usé la compilación httpd-2.2.25-win32-x86-openssl-0.9.8y.exe desde aquí
Instalado mediante el método "Siguiente-Siguiente-Finalizar" :)
La publicación de servicios http está en el mismo lugar donde la publicación de servicios web estaba y no es particularmente diferente.
Después de instalar el servidor web en el modo "Configurador", vaya al menú "Administración" - "Publicación en el servidor web"
En la pestaña "Servicios HTTP", configure el nombre de la publicación, el servidor web, el directorio de publicación y marque nuestros servicios (en mi caso, el nombre es "web", servidor web Apache 2.2)
Al publicar, los bloques correspondientes se escriben automáticamente en el archivo de configuración httpd.conf y el servidor se reinicia (en la primera publicación)
Ponerse en contacto con el servicio http
Ejemplo: http: // misitio / web / hs / list, dónde
mi sitio- dirección del servidor (si el servidor web está instalado localmente, puede usar 127.0.0.1)
web- nombre especificado durante la publicación (alias)
hs- un segmento obligatorio de la ruta que informa al servidor que se llevará a cabo el trabajo con servicios http
lista- URL raíz del servicio web

Pruebas

Lista de facturas

http://127.0.0.1/web/hs/list/7705260681/pswMP (No olvide configurar propiedad adicional en UT para contraseña)

Se asume que para acceder al registro de documentos, el usuario accede a un enlace directo que contiene el TIN y contraseña

Estado de la orden

http://127.0.0.1 / web / hs / check

La solicitud y la respuesta se encuentran en la misma URL. Al ingresar a la página, se activa el método GET, que devuelve un formulario html

Al hacer clic en "Verificar", el número de pedido se envía mediante el método POST a la misma URL, la respuesta se devuelve con el mismo formulario de solicitud, complementado con los datos del pedido solicitado.

En el archivo adjunto - descargando la base de datos para 1C 8.3. La configuración incluye 2 servicios http (de la publicación), configurando una com-conexión con la base de demostración de UT 11, el documento "Pedido".

Qué se requiere para el lanzamiento y las pruebas

  • Servidor web
  • cualquier navegador web
  • lanzamiento actual1C: Empresa 8.3



Enfrentó la necesidad de conseguir estado actual configuración. Necesitas conseguir:

  • El número de documentos con una determinada selección;
  • El período del último precio registrado para el producto;
  • La cantidad de documentos publicados por los usuarios en los últimos 10 minutos.

Teniendo en cuenta la experiencia de implementar una aplicación móvil en proyectos, al principio se me ocurrió escribir una configuración para Android. Después de sopesar todos los pros y los contras, llegué a la conclusión de que para resolver mi problema Este enfoque no trabajará. Luego se tomó el curso para usar el servicio http. Para ello, se registró en la configuración el servicio http "Estadísticas", se agregó la plantilla de url AnyURL, para lo cual se agregó el método get.


Después de formar los objetos del árbol de configuración, comenzamos a escribir el algoritmo para generar la respuesta. El método devolverá una respuesta de tipo HTTPServiceResponse:

Después de escribir el código de respuesta, publicamos el servicio http desde el configurador y accedemos a él desde el navegador. Para acceder al servicio http, debe direccionar la dirección como en un cliente web agregando "/ hs / statistic /". hs le dice a la plataforma que se está accediendo a un servicio http y la estadística es el nombre de nuestro servicio.

En mi opinión, los servicios http pueden ser útiles en caso de:
- Formación de estadísticas sobre configuración;
- La funcionalidad de obtener el estado del pedido por su número;
- Elaboración de datos para importar a otros sistemas.

Empresa " 1C»Desarrolla activamente la plataforma" 1C: Enterprise "y agrega nuevas funciones con cada lanzamiento. Después del inicio del desarrollo de la rama 8.3, especialmente comenzaron a aparecer muchos productos nuevos y debido al empleo constante no tiene tiempo para probarlos todos en acción. No hace mucho tiempo yo y cómo desarrollar un completo aplicación movil (sí, en "1C: Enterprise"), pero hoy me gustaría hablar sobre cómo crear Servicios HTTP por medio de la plataforma.

Capacidad de desarrollo Servicios HTTP como parte de la configuración apareció en la versión 8.3.5 ... Durante este tiempo, el componente se ha actualizado varias veces, y hoy es bastante posible utilizarlo sin temor a la presencia de errores "infantiles". Todavía no he tenido la oportunidad de utilizar la funcionalidad de la plataforma 1C: Enterprise para crear servicios http en condiciones reales, hasta ahora la experiencia se limita a proyectos educativos. Sin embargo, veo las posibilidades de utilizar el mecanismo de http-services en uno de los proyectos de trabajo actuales. En este ciclo de pequeñas notas intentaré mostrar ejemplos típicos de uso. servicios http en las configuraciones para la plataforma " 1C: Empresa».

Creación del servicio http más simple en 1C: Enterprise 8.3

Hoy veremos un ejemplo del servicio http más simple, y luego lo mejoraremos y complicaremos. El propósito de la lección es comprender y sentir la facilidad de la creación. servicios http basado en la plataforma 1C: Enterprise 8.3.

Comencemos con una declaración de problema. El servicio creado en el marco de la nota solo debería poder hacer dos cosas: aceptar una solicitud GET y devolver una respuesta en formato JSON. La tarea es trivial y hacer algo similar en PHP / ASP .NET es cuestión de unas pocas líneas de código. De cara al futuro, diré que en 1C: Enterprise necesitamos casi lo mismo (de acuerdo, no tienes que reírte de las rarezas de la plataforma 1C).

Hablaremos sobre los casos de uso de los servicios http en una publicación separada, pero por ahora, solo cree un nuevo servicio http. Por conveniencia, creemos un nuevo base de información con una configuración vacía. Agreguemos un subsistema al que llamaremos " Prueba de servicios HTTP". Ahora abramos la sección "General" en el árbol de configuración, busque el grupo " Servicios HTTP"Y agregue el primer servicio web. En la ventana para crear un nuevo servicio, complete los campos:

  • Nombre- FirstWebService;
  • Sinónimo- El primer servicio web;
  • URL raíz- Nuestros servicios;

Presta atención al campo " URL raíz". El nombre especificado aquí se utilizará al acceder al servicio. No debe haber espacios aquí y es aconsejable no utilizar el alfabeto cirílico. Lo averiguamos, luego vamos a la pestaña " Subsistemas"Y agregue el servicio http al único subsistema disponible.

El siguiente paso es describir el patrón de URL. Vayamos a la pestaña correspondiente y agreguemos una plantilla llamada " DisplayServicesList". En el inspector de propiedades, busque la propiedad " Muestra"Y escribe en él" / lista". Al hacer esto, estableceremos la ruta a lo largo de la cual se llevará a cabo la interacción con el servicio http. La plantilla puede contener Símbolos especiales, lo que le permite definir los parámetros pasados ​​(tanto obligatorios como no), pero para el primer ejemplo nos limitaremos a un simple " / lista". Al seguir esta ruta, nuestro único método se activará y le dará al cliente un conjunto de datos.

Genial, hay una plantilla, ahora depende del método. Agreguemos para nuestra plantilla, que llamaremos getServicesList... En el inspector de propiedades, debemos especificar el método HTTP. El valor especificado determina a qué tipos de solicitudes responderá nuestro método. La tarea actual es bastante posible de realizar con el método " OBTENER”.

Nuestro servicio está casi listo, todo lo que queda es escribir un controlador de eventos para el método construido. getServicesList... Puede crear un controlador de eventos a través del inspector de propiedades. En el cuerpo del manejador escribimos:

Función DeriveIndex getServicesList (Consulta) ArrayServices = Nueva matriz; ArrayServices.Add (Nueva estructura ("título, descripción", "Servicio n. ° 1", "Descripción del servicio n. ° 1")); ArrayServices.Add (Nueva estructura ("título, descripción", "Servicio n. ° 2", "Descripción del servicio n. ° 2")); ArrayServices.Add (Nueva estructura ("título, descripción", "Servicio n. ° 3", "Descripción del servicio n. ° 3")); ArrayServices.Add (Nueva estructura ("título, descripción", "Servicio nº 4", "Descripción del servicio nº 4")); Registro JSON = Nuevo registro JSON; Escribiendo JSON.SetString (); WriteJSON (WriteJSON, ArrayServices); StringForReply = JSONWrite.Close (); Responder = Nueva respuesta HTTPServiceResponse (200); Answer.Headers.Paste ("Tipo de contenido", "aplicación / json; juego de caracteres = utf-8"); Answer.SetBodyFromString (StringForResponse, TextCode.UTF8, UsingByteOrderMark.Do not use); Respuesta de reembolso; EndFunction

Echemos un vistazo más de cerca al código dado. Al principio, describo una matriz que consta de estructuras. Necesitamos esta matriz únicamente para demostración. Traduciremos todo su contenido a JSON y se lo daremos al cliente. Inicializamos un objeto de tipo Registro JSON... Asegúrate de llamar al método Establecer cadena(), porque necesitamos obtener el texto JSON en una variable de cadena. A continuación, llamamos al método global Escribir JSON(), al que le pasamos un objeto de tipo Registro JSON y la matriz que se va a convertir. Luego obtenemos el resultado en la variable " StringForReply"Y prepara una respuesta HTTP.

En respuesta, agregamos (ver método " SetBodyFromStrings") El JSON resultante. Eso es todo, el código de demostración está listo y puede continuar con las pruebas.

Publicar un servicio HTTP en 1C: Enterprise 8.3

Publiquemos el servicio HTTP creado para probar los resultados del trabajo realizado. Para la prueba más simple, debe tener un servidor web instalado en su sistema. Mi función de servicio web es realizada por apache... Omitiremos los pasos necesarios para instalar / configurar el servidor web y pasaremos al tema de la publicación de un servicio HTTP.

Para publicar, debe ir al menú "Administración" y seleccionar " Publicar en un servidor web". En la ventana que aparece, complete:

  • Nombre Es el nombre de nuestra solución. Se utilizará en la URL al acceder al IB publicado. Por ejemplo, si especifica test aquí, su IB estará disponible en http: // localhost / test. La opción de prueba me conviene.
  • Servidor web- Completado automáticamente. Tengo Apache 2.2 como servidor web;
  • Catalogar- ruta al directorio donde se colocará archivo de configuración seguridad de la información publicada;
  • Desmarque las casillas " Publicar cliente ligero y cliente web», « Publicar interfaz estándar OData», « Publicar servicios WEB por defecto»;
  • En la pestaña de servicios HTTP, marque la bandera " Publicar servicios HTTP predeterminados"Y marque el servicio creado en la sección tabular.

Probando el servicio HTTP

Para probar el servicio http creado, inicie un navegador e intente acceder a él. Si repitió todas mis acciones, entonces la ruta debería verse así:

Http: // localhost: 9090 / services / hs / our-services / list

Presta atención al puerto 9090 que se especifica con dos puntos después del nombre de host. Si instaló Apache con la configuración predeterminada, escuchará en el puerto 80, por lo tanto, no necesita especificar nada. Como resultado, la URL será así:

Http: // localhost / services / hs / our-services / list

Intenta seguirlo, y si todo funciona correctamente, obtendrás una página con datos en formato JSON:

[(título: "Servicio n. ° 1", descripción: "Descripción del servicio n. ° 1"), (título: "Servicio n. ° 2", descripción: "Descripción del servicio n. ° 2"), (título: "Servicio n. ° 3", descripción: "Descripción del servicio n.º 3"), (título: "Servicio n.º 4", descripción: "Descripción del servicio n.º 4")]

Este es el final del ejemplo de demostración, pero me gustaría finalmente analizar la URL en sus elementos constituyentes, para que quede claro por qué recibimos ese enlace.

Entonces, la primera parte debe ser clara: localhost. Este es el nombre de host donde está instalado el servidor web. Además, hay un enlace (servicios) a la seguridad de la información publicada. Esto es seguido por hs, este elemento de ruta indica que estamos interesados ​​en interactuar con el servicio http. Los dos últimos elementos son la URL raíz de nuestro servicio y el patrón de URL.

En lugar de una conclusión

« 1C: Empresa 8.3»Le permite crear simples Servicios HTTP con un mínimo de trabajo, que debería haberte convencido después de leer esta pequeña nota. Funcionalidad amplía significativamente las opciones de uso de la plataforma. En las siguientes notas, hablaremos de casos prácticos de aplicación de la tecnología y consideraremos la implementación de varias soluciones en la práctica.