Выразительный Web API

Публикация № 1227351

Разработка - Системная интеграция - Интеграция с WEB

REST API HTTP-сервис Архитектура

Теория разработки Web API с ожидаемым поведением, за который не будет стыдно за пределами мира 1С.

Введение

Что такое API?

Термины URI, URL, URN

HTTP-протокол

HTTP-запрос

HTTP-ответ

Методы запросов

Идемпотентность?!

Версионирование

Best practices

REST

Примеры конкретных URI

Введение

В рамках публикации рассмотрим вопросы создания HTTP-сервиса согласно архитектурным принципам разработки Web API. Поведение сервиса должно быть детерминировано, прозрачно и предсказуемо. Для достижения этих целей используем архитектурный стиль REST. 

Что такое API?

Есть хороший пример идеального API не из мира IT и это ресторан. Если вы идете в ресторан как гость, то вам запрещено проходить на кухню. В этом случае вы должны знать, что вы можете заказать. Для этого у вас есть меню. После изучения меню, вы делаете заказ официанту, который передает заказ на кухню, и он же принесет вам то, что вы заказали. Официант может принести только то, что может дать ему кухня. Как же это относится к API? Официант это API ресторана. Вы пользователь API. Меню это документация, которая объясняет, что вы можете запросить у API. Блюдо в вашем заказе это запрос. Кухня это сервер, которая знает, как готовить то или иное блюдо.

Стоит заметить, что API это не только про Web. Например, все экспортные методы общего модуля или модуля менеджера документа - это тоже API.

Термины URI, URL, URN

  • URI - Uniform Resource Identifier (унифицированный идентификатор ресурса). Обозначает имя и адрес ресурса в сети. Как правило, делится на URL и URN.
  • URL - Uniform Resource Locator (унифицированный определитель местонахождения ресурса). Адрес некоторого ресурса в веб. URL определяет местонахождение ресурса и способ обращения к нему.
  • URN - Unifrorm Resource Name (унифицированное имя ресурса). Хороший пример это ISBN у книг (например, ISBN 978-5-699-12014-7 однозначно идентифицирует книгу, но ничего не говорит о ее местоположении). Смысл URN в том, что он определяет только название конкретного предмета, который может находится во множестве конкретных мест.

Можно сказать, что 

URI = URL + URN 

Приведу простой пример как это может выглядит на практике:

  • URI - https://mydomain.com/products.html
  • URL - https://mydomain.com
  • URN - /products.html

Еще пример структуры URI в виде картинки:

Протокол HTTP

HTTP - текстовый протокол передачи данных, который работает по схеме запрос-ответ (клиент-сервер). На данный момент является основным протоколом в Интернете. Поверх него часто делают прикладные протоколы (SOAP, WebDAV). Актуальная версия 1.1.

HTTP-запрос

Используется для отправки клиентом серверу запроса на получение информации. Формат запроса - текстовый.

Общий вид запроса

Метод Путь HTTP/Версия протокола

Host: Адрес

Другие заголовки (опционально)

(пустая строка)

Тело запроса (опционально)

Минимальный GET запрос

GET /wiki/HTTP HTTP/1.1

Host: ru.wikipedia.org

HTTP-ответ

Используется для отправки сервером клиенту запрошенных данных. Формат ответа - текстовый.

Общий вид ответа

HTTP/Версия протокола Код статуса/Текст статуса

Заголовки

(пустая строка)

Тело ответа (опционально)

Пример ответа сервера

HTTP/1.1 200 OK

Content-Type: text/html; charset=utf-8 Content-Length: 512

(пустая строка)

(тело ответа)

Методы запросов

Для каждого запроса обязательным является указание метода. Рассмотрим самые популярные методы в контексте CRUD операций. Если говорить о SQL, то вы не сможете оператором select удалить данные, а оператором update вставить новые. Что касается методов HTTP-запросов, то технически такого ограничения нет. Если вы разрабатываете веб-сервис, то можете сделать так, что любым методом можно получить данные или удалить. Но так делать крайне не рекомендуется, потому что это будет неожиданное поведение сервиса, да и в принципе для этих операций есть свои методы. 

Распространенные методы

  • GET - получение содержимого указанного ресурса (Retrieve в контексте CRUD).
  • POST - передача данных или для операции Create в контексте CRUD.
  • PUT - изменение данных ресурса целиком (операция Update в контексте CRUD).
  • DELETE - удаление указанного ресурса (Delete в контексте  CRUD).
  • PATCH - частичное изменение ресурса (применяется не часто, обычно используется PUT)
  • HEAD - практически тоже самое, что GET, но без тела ответа. Можно использовать как валидацию URL через кастомный заголовок в ответе.

Если веб сервис разрабатывается для работы с формами HTML, то можно использовать только методы GET, POST. Но для поддержки остальных достаточно использовать JS. Если говорить не про формы, то в любом современном ЯП есть поддержка остальных методов "из коробки".

Идемпотентность

Выдыхайте, это про методы запросов. Запрос является идемпотентным, если повторный идентичный запрос, сделанный с его помощью, гарантирует одинаковое воздействие на систему, при этом возвращаемые ответами коды статусов могут быть различными. Другими словами, идемпотентный метод не должен иметь никаких побочных эффектов (side-effects).

Идемпотентные методы

  • GET, HEAD - независимо от того, сколько будет раз запрошен ресурс, состояние системы никак не меняется.
  • PUT, PATH - состояние ресурса при идентичных запросах будет изменено только в первый раз (ресурс с id=0 имел имя name0, после первого изменения имя стало name1, но и при последующих запросах оно вновь будет name1).
  • DELETE - удалить ресурс с помощью идентичных запросов можно также только один раз.

Важно понимать, что ответ сервера при идемпотентных запросах может быть различным. Например, при попытке удалить ресурс, ответ на второй и последующие запросы может быть с информацией о том, что такого ресурса в принципе нет. При этом состояние системы никак не меняется. 

Не идемпотентные методы

  • POST - независимо от того, сколько раз мы передадим данные, они будут добавлены (не берем в расчет контроль уникальности реквизитов), то есть состояние системы меняется при каждом запросе.

Почему идемпотентность важна? Это соглашение. То есть это то, на что пользователи будут рассчитывать при работе с вашим сервером.

Версионирование

На практике приходилось несколько раз сталкиваться с ситуацией, когда разработчик API менял его, считая что он монополист и может делать с ним что угодно. По факту, даже если у вас есть хотя бы один пользователь, то необходимо использовать версионирование, так как клиентский код опирается на ваши методы. Сделать его несложно. Мне известно два способа:

  • URL - {host}/v1/products
  • Custom header - api-version:1

Best practices

Поделюсь списком лучших практик, которые использую в своей работе:

  • Никакой кириллицы при именовании ресурсов. Иначе адрес придется кодировать и при интеграции со сторонними системами никто вам спасибо за такое не скажет.
  • В модуле http-сервиса только логика работы с объектом HTTPRequest. Вся бизнес-логика должна быть вынесена в общий модуль. Так вы получите независимые слои приложения (с натяжкой сюда можно прикрутить термин MVC) и простоту тестирования бизнес-логики.
  • Методы POST и PUT должны отдавать соответственно созданный и измененный объекты обратно. Этим вы избавите клиента от повторного вызова вашего сервиса.
  • Поддержка обработки заголовка Content-Type. Например, если заголовок не указан - сервис отдает ответ в формате json, а если указан application/xml - то ответ в xml.
  • Стандартные коды статусов ответов. Например, код 415 используйте тогда, когда клиент запрашивает ответ в формате xml, а вы его не поддерживаете. В противном случае поведение придется описывать в документации.
  • Pretty print для сериализованных данных. Экономия на символах табуляции дает не так много, зато убивает читаемость ответа при отладке. 
  • Если на сервере опубликован не только ваш веб-сервис, а допустим веб-клиент, то необходимо разделение таких ресурсов через URI. Обычно, сервис начинается с /api/.... В нашем случае платформа за нас добавляет /hs. Так что этот пункт не обязателен, но помнить про него нужно. 

REST

REST (Representational State Transfer — «передача состояния представления»). Не является протоколом, но описывает набор архитектурных принципов формирования API.

Основные идеи REST

  • Клиент-серверная архитектура.
  • Все есть ресурс.
  • Любой ресурс имеет ID (путь из URI).
  • Сервер не хранит никакого состояния, то есть все обработчики stateless. Вся информация, которая необходима для обработки запроса, передается клиентом вместе с запросом.
  • Список доступных действий определяется стандартными методами HTTP.

В связи с недавней популярностью этой аббревиатуры, многие ее смысл понимали как что угодно, лишь бы это было связано с формированием Web API. На самом деле, это правила формирования URI. В качестве примера можно привести структуру папок на диске и доступные операции с ними. Допустим есть папка D:/files и есть файл Dummy.data. Если необходимо получить содержимое файла, то используется D:/files/dummy.data. Если нужно изменить файл, то опять же D:/files/dummy.data. Если нужны все файлы из это папки, то D:/files. При любой операции с файлами остается неизменным путь к папке. Именно такой подход используется в REST.

Но такой подход далеко не всегда удобен. Например, если вы пишете сервис для обмена с другой ИС на платформе 1С и в обоих случаях используются планы обмена, то REST здесь вряд ли подойдет, потому что клиент в теле запроса присылает целую пачку данных и скорей всего ваш сервис будет состоять из 1-2 методов. Ранее я освещал эту тему - Обмен без правил.

Примеры конкретных URI

Рассмотрим конкретный пример сервиса для работы с товарами.

Действие Метод URI
Получить список всех товаров GET /products
Получить список всех товаров марки NoName и классом продукта A  GET /products?brand=NoName&class=A
Получить определенный товар (id=0) GET /products/0
Добавить товар POST /products
Изменить товар PUT

/products/0

Удалить товар DELETE /products/0

 

Примеры неправильных URI

  • /products/getAll
  • /products/brand/NoName
  • /products/?action=put&id=0
  • /products/delete/?id=0
 
 Пример того, как такой сервис может выглядеть на уровне метаданных 1С

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. CyberCerber 499 27.04.20 17:34 Сейчас в теме
Полезная статья, спасибо!
Буквально месяц - два назад сам искал best practices, правила написания хорошего API.
Ты рассказал про общие методы: создание, изменение объекта...
А как правильно реализовать, например, поиск объектов по фильтрам? Это будет GET или POST? Что стоит делать параметрами url, а что помещать в тело запроса?
2. fr13 714 27.04.20 17:43 Сейчас в теме
(1) Спасибо за отзыв )
В разделе Примеры конкретных URI есть инфо как реализовать поиск по фильтрам и как его не надо делать (если быть точным то вот это /products?brand=NoName&class=A).
3. CyberCerber 499 27.04.20 17:55 Сейчас в теме
(2) А если нужно передать фильтры по сложнее? Например, найти товары:
1. В списке категорий: Телефоны, Планшеты, Часы
2. Имя содержит "самое лучшее устройство *&^%$#* !"
3. Страна производства не равна Китай
4. fr13 714 27.04.20 18:02 Сейчас в теме
(3) Я бы все делал через параметры запроса, они специально для этого и заточены. То есть так как это все же получение данных, то метод GET, а в нем тела нет. Другой вопрос, что может немного придется распарсить такие параметры уже на стороне сервера.
6. CyberCerber 499 27.04.20 22:06 Сейчас в теме
(4) В общем случае, фильтры могут быть представлены произвольным JSONом. Нормально передавать JSON параметром URLа?
7. fr13 714 28.04.20 05:36 Сейчас в теме
(6) Скорей всего придется кодировать такую строку из за спец. символов в json. А нормально ли передавать или нет, точного ответа я не могу дать, не сталкивался ни разу. Но сам бы я подумал хорошо еще раз перед тем как использовать такой подход.
8. ltfriend 500 28.04.20 09:19 Сейчас в теме
(6) конечно, идеологически для возврата результатов поиска больше подходит GET. Вы данные получаете, а не добавляете, изменяете или удаляете. Но если вы используете сложные параметры (фильтры), то разумней сделать POST с JSON'ом в теле. Это не является криминалом. А общие рекомендации не являются обязательными к исполнению и вполне могут быть исключения. И не стоит забывать, что передавая кучу сложных параметров в URL вы можете превысить его максимально допустимую длину.
9. fr13 714 28.04.20 09:23 Сейчас в теме
(8) Согласен, что это всего лишь рекомендации и про длину вы верно подметили. Все зависит от конкретного кейса. Поэтому я и написал, что надо подумать.
Но в общем случае все же GET предпочтительнее )
10. ltfriend 500 28.04.20 09:25 Сейчас в теме
(9) в общем случае конечно. Но бывают частные, в которых как раз и можно отойти от общих рекомендаций.
11. CyberCerber 499 28.04.20 09:57 Сейчас в теме
(8) Да, вот у меня поэтому и был вопрос, т.к. частенько я встречаю API, где получение данных проходит через POST, т.к. в теле передается полноценный JSON.
12. nomad_irk 49 28.04.20 10:07 Сейчас в теме
(11)ИМХО, тут работает такое же правило, как и везде: если параметров у процедуры/функции можно пересчитать по пальцам одной руки, то их МОЖНО запихать в строку запроса GET, если больше - делай полноценный POST с блэкджеком и прочей атрибуикой......
5. nicxxx 236 27.04.20 18:30 Сейчас в теме
(1) Посмотрите документацию по интерфейсу oData, который 1С предоставляет по-умолчанию. Там есть про фильтры.
13. bulpi 173 28.04.20 12:09 Сейчас в теме
Единственный ИМХО сомнительный совет в статье :
"Методы POST и PUT должны отдавать соответственно созданный и измененный объекты обратно."
А если он там на фиг не нужен, зачем его отдавать?
14. fr13 714 28.04.20 12:26 Сейчас в теме
(13) Спасибо за проявленный интерес.
Отдавать нужно, чтобы клиент мог проверить какие-то ключевые поля (например те, которые считаются на сервере). То есть ему не нужно дергать сервис еще раз через GET чтобы получить созданные/обновленные атрибуты сущности.
16. malikov_pro 269 29.04.20 05:52 Сейчас в теме
(14) Зависит от варианта использования, если данные записаны некорректно, то это ошибка сервиса, о которой нужно сообщить клиенту.

У Вас указана структура метаданных, но она неудобна для обработки листенерами (предварительные проверки и аутентификация), мои наработки по теме https://infostart.ru/public/1131305/, буду рад разумной критике.

В статью можно добавить вариант обработки 404, потому что при if GET/{id} -> 404(POST) else (PUT/{id}) насоздавать дубликатов, а 404 может выдать и прокси. Вариант решения договоренность через документацию о формате тела ответа при ошибке.

С вопросом практики реализации имеет смысл связать вопрос документирования.
17. fr13 714 29.04.20 07:33 Сейчас в теме
(16) Спасибо за комментарий.

аутентификация
- у нас есть Basic auth. Если этого не достаточно, то можно использовать токены в заголовках.

предварительные проверки
- про что именно вы говорите? Валидация запроса? Если да, то не упомянул этот момент в публкации, может есть смысл добавить.

404
- конечно нужно это делать и не только 404. В целом я упомянул про коды статусов, но расписывать не стал, так как нужен более конкретный пример для этого.
18. malikov_pro 269 29.04.20 07:57 Сейчас в теме
(17)
"Basic auth" реализованная на уровне платформы привязана к пользователям в конфигураторе это не всегда удобно, как и подсистема БСП внешних пользователей.
В своих проектах использую справочник внешних пользователей и листенером для всех запросов делаю проверку.

"Валидация запроса?" - в общем да, проще проверить перед тем как отправлять данные в общий модуль (контроллер по сути).


"более конкретный пример для этого." - пример типа ресурса(формат RAML) во вложении, в основном блоке используется:
/categories:
  type: collection-item
  description: Работа со справочником категории (группы номенклатуры в 1С)
  /{xml_id}:
      type: item


Можно совместно продумать и сделать описание/реализацию основных функций по работе с объектами для 1С, аналог https://infostart.ru/public/709325/ только для сервера.
Прикрепленные файлы:
item.type.raml
15. hardcodder2020 28.04.20 13:11 Сейчас в теме
Статья полезная, спасибо, автор!
19. Vortigaunt 76 03.05.20 18:16 Сейчас в теме
В модуле http-сервиса только логика работы с объектом HTTPRequest. Вся бизнес-логика должна быть вынесена в общий модуль. Так вы получите независимые слои приложения (с натяжкой сюда можно прикрутить термин MVC) и простоту тестирования бизнес-логики.

Эта рекомендация важна не только ради красоты. Как оказалось, 1С не проверяет синтаксис в модуле http-сервиса. И чем меньше там будет кода, тем меньше нервов потратишь при отладке.
Оставьте свое сообщение

См. также

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

Практика программирования WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    53787    0    Serginio    33    

История создания успешной системы чат-ботов на 1С

WEB v8 Бесплатно (free)

Использование чат-ботов в мессенджерах позволяет автоматизировать многие сложные бизнес-процессы путем диалога с системой через виртуального собеседника. О том, как создать универсальную систему ботов с бэкендом на 1С, работающую в Telegram, Viber и Facebook Messenger одновременно, на конференции Infostart Event 2019 Inception рассказал программист-фрилансер Константин Гейнрих.

21.05.2020    4746    0    CyberCerber    10    

Парсинг html страниц с выводом информации через JavaScript с использованием Selenium

WEB v8 1cv8.cf Бесплатно (free)

Есть девочки как девочки, есть мальчики как мальчики, есть сайтики как сайтики, но странички их обманщики. В целях сохранить информацию, от автоматизированного сбора, многие ресурсы пытаются защитить ее. Один из таких способов - вывод информации на странице через JavaScript. При получении такой страницы в 1С, JavaScript не успевает вывести необходимые данные, и в 1с получаем практически пустую страницу. В статье приведу пример разработки, для парсинга таких страниц, без регистрации и смс.

20.05.2020    1695    0    platonov.e    16    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг третий, WooCommerce, публикация категорий товаров

WEB v8 1cv8.cf Бесплатно (free)

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции публикации категорий товаров в магазин WooCommerce, с комментариями внутри.

13.05.2020    1425    0    osivv    3    

Online телефонный справочник из 1С: Зарплата и управление персоналом Промо

WEB Управление персоналом (HRM) Управление персоналом (HRM) v8 ЗУП3.x Россия Бесплатно (free)

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    24266    0    ruha    14    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Шаг второй, публикация картинок

WEB v8 Бесплатно (free)

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции передачи фото из 1С, с комментариями внутри.

13.05.2020    1053    0    osivv    0    

Интеграция Camunda BPM и 1С

WEB Интеграция v8 Бесплатно (free)

Быстрый старт. Только практические примеры. Установка, запуск и публикация бизнес-процесса на сервере Camunda BPM. Управление бизнес-процессами из 1С при помощи Camunda REST API.

12.05.2020    1477    0    zhichkin    17    

Интеграция 1С и CMS WordPress посредством Rest API сайта. Первый шаг

WEB v8 Россия Бесплатно (free)

Интеграция 1С и CMS WordPress посредством функционала Rest API. Используем только язык программирования 1С и штатный функционал Rest API предоставляемый CMS, без дополнительных библиотек и плагинов. Процедуры и функции 1С с комментариями внутри.

28.04.2020    2558    0    osivv    23    

Кэширование COM-соединения. Три способа Промо

Практика программирования Перенос данных из 1С7.7 в 1C8.X Внешние источники данных WEB v8 Россия Бесплатно (free)

Статья о трех способах кэширования COM-соединения в 1С:Предприятии 8.x.

11.04.2013    39718    0    YPermitin    33    

Хранение статистики публикаций автора сообщества Инфостарт ® (мобильное приложение И ++)

Мобильная разработка WEB v8 1cv8.cf Бесплатно (free)

Инфостарт ® достаточно удобный в плане работы со своим личным кабинетом сайт. Но программисты тем и отличаются от большинства людей, что им хочется знать больше. Поэтому появилась конфигурация 1С (она же мобильное приложение 1С) для более подробного учета статистики публикаций: рейтинг, количество просмотров, количество комментариев в динамике и в разрезах.

24.04.2020    1341    0    capitan    13    

Интеграция УАТ с топливными сервисами

WEB v8 1cv8.cf Автомобили, автосервисы Бесплатно (free)

Интеграция конфигурации Управление автотранспортом с топливными веб-сервисами.

21.04.2020    6123    0    RPGrigorev    2    

Интеграция 1С с веб-сервисами Лукойл ЛИКАРД

WEB v8 1cv8.cf Россия Бесплатно (free)

Описание интерфейса взаимодействия сервиса Лукойл- ЛИКАРД с информационной системой 1С.

20.04.2020    2728    0    RPGrigorev    0    

Помощник работы с VirtueMart Промо

WEB Розничная торговля Розничная торговля v8 УТ10 УПП1 Россия Бесплатно (free)

Обработка для обмена данными с интернет-магазином на базе VirtueMart. Позволяет выгружать товары с изображениями и загружать заказы покупателей. Управлять интернет-магазином теперь стало просто!

19.04.2012    23293    1    salexdv    13    

Ошибка инициализации модуля: HTTPСервис

WEB v8 1cv8.cf Узбекистан Бесплатно (free)

Решение проблемы "Ошибка при работе с HTTP сервисом 500. Ошибка инициализации модуля".

13.04.2020    1531    0    VipDim    10    

COVID-19. Динамика эпидемии

WEB v8 v8::СКД 1cv8.cf Бесплатно (free)

Весной 2020 практически все ждут, «когда же это закончится», когда эпидемия пойдет на спад. Специалисты призывают «сгладить кривую». Как понять, в какой точке мы сейчас? Данные университета Джонса Хопкинса в любой 1С.

01.04.2020    2523    0    Alejandro_V    6    

Как я собрал для себя высокопроизводительный и бесплатный облачный бекенд для 1С на PosgreSQL + PostgREST

Производительность и оптимизация (HighLoad) WEB Интеграция Мобильная разработка Администрирование веб-серверов v8 Бесплатно (free)

В этой статье я расскажу о проблемах бека для мобильных приложений или другого фронта, который требует производительности, быстрой реакции и отказоустойчивости, и как я решил это благодаря opensource проекту PostgREST и СУБД Postgre SQL 12. Проведу простой тест производительности для сравнения 1С с данным решением. Это может быть полезно всем, кто разрабатывает мобильные приложения либо фронтсайд-приложения для 1С на чем угодно - на мобильной платформе или на нативном языке или на Simple UI. И также обзор новых функций SimpleUI для связи с этим бекендом.

31.03.2020    9768    0    informa1555    21    

Заготовка для загрузки файлов по ftp Промо

WEB Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

3 процедуры и 1 макет

03.06.2013    29262    0    anig99    6    

Коронавирус COVID-19. Статистика по странам

WEB v8 Бесплатно (free)

В связи с COVID-19 люди поделились на две категории: те, кто осознал, и те кто ЕЩЕ не осознал. Единственное наше преимущество перед Коронавирусом заключается в том, что информация распространяется быстрее, чем расползается "невидимка".

25.03.2020    5057    2    Evgen.Ponomarenko    60    

Получение html-кода страницы. JS из 1С

Практика программирования WEB v8 Бесплатно (free)

Получение исходника страницы, выполнение произвольного js-кода. Теперь с WebKit от 1С.

18.02.2020    4351    0    Yashazz    1    

Отладка конфигурации в режиме веб-клиента

WEB v8 Бесплатно (free)

После очередного обновления платформы при попытке запуска отладки в веб-клиенте стало появляться сообщение. Собственно, до этого момента никогда веб-клиентом особо не пользовался и необходимости в отладке как-то не возникало. Данное сообщение заставило задуматься, что не так с отладкой в веб-клиенте и как ее собственно включить? Тот самый неловкий момент, когда программа просит обратиться к администратору, а администратор - это вы.

12.02.2020    3439    0    gamletspb    2    

Анализ работы внешней обработки сервиса МодульКасса применительно к задаче фискализации чеков при доставке

Кассовые операции WEB v8 УТ11 Россия Бесплатно (free)

В статье разберу работу внешней обработки для работы с МодульКасса, опишу недочеты и применимость для организации доставки, предложу собственный вариант реализации.

11.02.2020    1966    0    malikov_pro    0    

Вариант реализации REST API для 1С-Битрикс Управление сайтом

WEB v8 Россия Бесплатно (free)

В статье опишу вариант обмена 1С УТ 11.4 и 1С-Битрикс УС 18.5 с иcпользованием компонентов Symfony, в качестве примера обмен данными по складам.

28.01.2020    3145    0    malikov_pro    2    

Вариант реализации работы с сервисом Dadata применительно к конфигурации УТ 11.4 и подобным

WEB v8 УТ11 Россия Бесплатно (free)

В статье описывается реализация получения данных с сервиса DaData при работе с формами справочников в конфигурации УТ 11 для дополнения информации по ФИО, ИНН, Адресу.

22.01.2020    2335    0    malikov_pro    5    

Двусторонний обмен с поставщиком через интернет-магазин для реализации товаров с ответственного хранения (с 01.02.2020 "Партии" не используются)

Файловые протоколы обмена, FTP WEB v8 УНФ Оптовая торговля, дистрибуция, логистика Россия УУ Бесплатно (free)

Рассмотрены реализация двустороннего обмена данными с использованием API-сервиса сайта поставщика при продаже товаров со склада ответственного хранения, алгоритм движения товаров и обмена документами на примере конфигурации 1С: УНФ у партнера, который взаимодействует с поставщиком "ООО Пауэр-Интернэшнл-шины" - одним из крупнейших в России поставщиков автомобильных шин и дисков.

16.01.2020    3486    0    chkurs    0    

Получение номера ВСД по идентификатору 1С: Меркурий

Производство готовой продукции (работ, услуг) WEB v8 УТ11 Пищевая промышленность Россия Бесплатно (free)

Код парсинга веб страницы для получения номера ВСД в системе Меркурий.

24.11.2019    3569    0    ohyen    0    

Немного о интеграции с CRM AMO

WEB v8 1cv8.cf Бесплатно (free)

Немного информации о том, как настроить интеграцию с CRM AMO. Пример функций для подключения к АМО и обновления заказа. Пример на основе API авторизации.

15.11.2019    3450    0    xxxAndricxxx    6    

Ещё немного о ИНН и сервисе DaData

WEB v8 1cv8.cf Бесплатно (free)

Об использовании сервиса dadata и немного информации о возможностях получать данные по ИНН. Возможно, кому-то будет полезным.

14.11.2019    6136    0    xxxAndricxxx    21    

Вариант реализации клиента SOAP на примере получения остатков из MERLION

WEB v8 1cv8.cf Россия Бесплатно (free)

В статье приведу пример клиента к сервису SOAP, функции которого принимают несколько значений типа строка или массив строк.

14.11.2019    2861    0    malikov_pro    0    

Разбор любого JSON-объекта в соответствующую структуру

Инструментарий разработчика WEB v8 1cv8.cf Бесплатно (free)

Данная публикация предназначена разработчикам 1С, которым приходиться разбирать данные формата JSON. Выложенный пример кода создает объект типа Структура, полностью повторяющий структуру данных формата JSON.

13.11.2019    6446    0    user665435_al.windstorm    14    

Проверка reCAPTCHA от Google на стороне HTTP-Сервиса

WEB v8 Россия Бесплатно (free)

Код проверяет переданный токен reCAPTCHA от Google при вызове HTTP-Сервиса. Таким образом проверяем, отправил ли данные на наш HTTP-Сервис робот или реальный пользователь.

06.11.2019    5219    0    AVR    0    

Простой способ опубликовать базу 1C из дома в интернет, когда Ваш провайдер этого не обеспечивает (3G, 4G модем и т.п.)

WEB Облачные сервисы, хостинг v8 1cv8.cf Бесплатно (free)

Если у Вас возникла потребность опубликовать из дома во всемирную паутину базу 1С (например, для тестирования), в т.ч. интерфейс OData, HTTP или Web-сервисы, а интернет-провайдер (например, 3G Мегафон) не предоставляет возможности инициировать соединения извне, то в конце статьи Вы найдете простой, быстрый и условно-бесплатный способ это сделать.

14.10.2019    9643    0    uno-c    25    

Самый примитивный HTTP-сервис в мире

WEB v8 Бесплатно (free)

Пошаговый пример создания простейшего HTTP-сервиса, который генерирует HTML-страницу для поиска товара, а также реализует асинхронное получение данных из базы.

12.09.2019    18339    0    YPermitin    26    

Свой веб интерфейс к 1С: побеждаем CORS на IIS, сохраняя авторизацию

WEB Администрирование данных 1С v8 Бесплатно (free)

Если "веб морда" расположена не по тому же адресу, что и публикация 1С (что часто бывает, например, при разработке, публикация 1С на http://localhost/1c, а разрабатываемое веб-приложение на http://localhost:8080) или, например, мы заходим на веб приложение то по ip адресу, то по имени сервера, или просто веб сервер и сервер, на котором опубликована 1С - это разные сервера, то для большинства запросов от браузера к 1С срабатывает политика CORS, которая заключается в том, что браузер сначала посылает запрос OPTIONS, на который сервер должен ответить определенным образом, заголовками, содержащими разрешения, а потом уже (если разрешение есть), браузер посылает основной запрос. В случае, когда в публикации 1С (default.vrd) жестко прописан логин и пароль, разрулить ситуацию можно средствами 1С. В случае же, когда нужно сохранить авторизацию (или используется стандартный интерфейс odata), начинаются проблемы.

20.08.2019    9557    0    Fragster    9    

Вывод отчетов из Штрих-М Торговое предприятие 5 на кассовое ПО Кассир 5 через веб-сервис

Розничная торговля WEB Розничная торговля v8 1cv8.cf Розничная и сетевая торговля (FMCG) Россия УУ Бесплатно (free)

Универсальный механизм вывода отчетов товароучетной системы Штрих-М Торговое предприятие в кассовое ПО Кассир 5 посредством веб-сервиса.

14.08.2019    5311    0    Van2507    1    

Совсем простой обмен HTTP, 2 функции

WEB v8 Бесплатно (free)

Функция для вызова рест-сервиса и функция для разбора результата. Быстро, просто, универсально.

12.08.2019    7758    0    Yashazz    15    

Использование HTTP-сервиса для создания "фронтенда" HTML/CSS/jQuery. Продолжение

WEB v8 1cv8.cf Бесплатно (free)

Получение изображений из информационной базы и отправка файлов через "фронт" на HTML/CSS/JS.

08.08.2019    7315    0    Sedaiko    1    

1Script.Web. Интернет-приложения на языке 1С

WEB OneScript Инструментарий разработчика v8 Бесплатно (free)

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    18468    0    Evil Beaver    33    

Неверные остатки на сайте битрикс

WEB v8 УТ11 Бесплатно (free)

Исправление процедуры выгрузки остатков на сайт битрикс из УТ 11

25.04.2019    5238    0    distorshion    4    

Отправка файлов через SOAP. SOAP with attachments, MTOM

WEB v8 1cv8.cf Россия Бесплатно (free)

В продолжение «своеобразной» поддержки 1С протокола SOAP, описанной в https://infostart.ru/public/965259/, опишу еще одну особенность. 1С не поддерживает возможность отправки файлов-вложений. Для решения этой проблемы пришлось самостоятельно писать формирование пакетов SOAP и разбор ответов сервера.

18.04.2019    7394    0    mysm    2    

HTML-клиент у конфигурации 1С

WEB v8 Бесплатно (free)

Приветствую. В этой публикации опишу свой опыт создания html-клиента для конфигурации 1С с помощью http-сервисов. HTML-клиент в этом случае - это frontend (html + css+ js), который генерирует и выдает пользователю конфигурация + backend, который тоже реализован в этой же конфигурации.

17.04.2019    16190    0    Smaylukk    119    

Парсинг сайтов из 1С на примере ломбарды.рф с помощью XPATH для ДокументDOM

WEB v8 Бесплатно (free)

На всякую хитрую гайку всегда найдется болт с резьбой (с)

01.04.2019    14092    0    starik-2005    33    

Логируй больше! 1С + UPD + GELF + Graylog

Практика программирования Администрирование данных 1С WEB Разработка v8 Бесплатно (free)

Наличие производительной платформы управления логами - это жизненно важный элемент в ландшафте систем с высокой активностью. Рассмотрим один из подходов логирования активности систем на платформе 1С в Graylog.

26.02.2019    10550    0    Lars Ulrich    16    

Устранение некоторых ошибок, обнаруженных в модуле Обмена с ВЕТИС (ФГИС Меркурий)

WEB Адаптация типовых решений v8 БП3.0 Сельское хозяйство и рыболовство Оптовая торговля, дистрибуция, логистика Пищевая промышленность Россия Бесплатно (free)

Устранение ошибок, обнаруженных в модуле Обмена с ВЕТИС (ФГИС Меркурий) в конфигурации Бухгалтерия предприятия, редакция 3.0 (3.0.67.67).

08.02.2019    7433    0    aks    3    

Создание телеграм бота с гугл авторизацией, обратными вызовами и уведомлениями об обновлении через сервер-маршрутизатор

WEB v8 1cv8.cf Бесплатно (free)

Статья детально рассказывает обо всех аспектах настройки телеграм бота, работающего через сервер-маршрутизатор посредством обратных вызовов. Приведены примеры работы отправки/исправления сообщений, отправки файлов, работы с внутренними и встроенными запросами. Создание клавиатуры. Авторизация пользователей через gmail.

07.11.2018    27016    0    🅵🅾️🆇    57    

Мой опыт небольшого проекта с веб-сервисами (Часть 2)

WEB v8 Бесплатно (free)

Продолжение публикации по веб-сервису для реализации странички с выводом данных.

05.10.2018    6692    0    alex_bitti    0