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

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

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

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

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

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

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

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

404
- конечно нужно это делать и не только 404. В целом я упомянул про коды статусов, но расписывать не стал, так как нужен более конкретный пример для этого.
18. malikov_pro 1152 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 90 03.05.20 18:16 Сейчас в теме
В модуле http-сервиса только логика работы с объектом HTTPRequest. Вся бизнес-логика должна быть вынесена в общий модуль. Так вы получите независимые слои приложения (с натяжкой сюда можно прикрутить термин MVC) и простоту тестирования бизнес-логики.

Эта рекомендация важна не только ради красоты. Как оказалось, 1С не проверяет синтаксис в модуле http-сервиса. И чем меньше там будет кода, тем меньше нервов потратишь при отладке.
20. Cyberhawk 130 10.06.20 09:06 Сейчас в теме
Хорошо бы для каждого примера из раздела
Примеры неправильных URI
дать пояснение, что и почему там неправильно
21. nbeliaev 10.06.20 13:14 Сейчас в теме
(20)
Спасибо за интерес к материалу.
/products/getAll - REST оперирует глаголами, которые предоставляют методы HTTP. Здесь мы изобрели "свой" глагол
/products/brand/NoName - Попробуйте представить что будет, если кроме brand будет еще хотя бы 5 параметров. Для этого есть параметры запроса, а не части пути.
/products/?action=put&id=0 - Практически аналогично с первым пунктом, только здесь глагол как параметр запроса.
/products/delete/?id=0 - Практически аналогично с первым пунктом, только здесь глагол как часть пути.
22. Cyberhawk 130 10.06.20 13:24 Сейчас в теме
(21) Я не для себя спрашивал :)
Неплохо бы добавить эти пояснения в саму публикацию.
Оставьте свое сообщение

См. также

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    11126    comol    31    

Rest API от чайника для чайников

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

На написание статьи побудило чтение книги "Технологии интеграции "1С:Предприятия 8.3"" Хрусталевой Е.Ю. В первой главе там постоянно чередуются слова REST, REST-интерфейс, архитектура REST и т.д. Мне стало интересно, я начал копать, что это такое, и тема оказалась достаточно интересной.

06.06.2022    3577    zeltyr    2    

Обмен сообщениями "Системы взаимодействия 1С" с "НЕ 1С" системой. Где хранятся файлы вложений и как получить их местоположение в хранилище s3?

Внешние источники данных WEB Обмен между базами 1C v8 1cv8.cf Бесплатно (free)

Вы когда-нибудь задавались вопросом: где хранятся сообщение и их прикрепления «Системы взаимодействия 1С»? Мне пришлось!

31.05.2022    748    Zlohobbit    3    

Загрузка выпусков подкаста Радио 1С Энтерпрайз

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

Код для загрузки всех выпусков подкаста Радио 1С Энтерпрайз для оффлайн-прослушивания.

29.04.2022    736    q_i    9    

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

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

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

10.03.2016    66324    Serginio    33    

УПП: Ошибка при взаимодействии с ФСС

Регламентированный учет и отчетность WEB v8 УПП1 Россия БУ ФОМС, ПФ, ФСС Бесплатно (free)

При обновлении релиза УПП до 1.3.178.2 пользователи начали жаловаться, что не отправляются в ФСС документы "Ответ на запрос ФСС для расчета пособия" и "Сведения о застрахованных лицах, ФСС". В статье предложен вариант обхода данной ошибки, возможно, это кому-то поможет.

28.04.2022    892    alex_bob    8    

Методика интеграции HTML редакторов в поле HTML документа базы 1С

WEB v8 Платформа 1C v8.2 Бесплатно (free)

В статье описаны критерии WYSIWYG HTML редакторов и общая картина интеграции с платформенными механизмами. На момент платформы 1С 8.3 и возможно для будущих релизов описание будет скорее всего актуально. Апробировано на 1С 8.3.20 и 8.2.12, а также на мобильной платформе 8.3.19.59.

12.04.2022    832    user1206119    0    

Создание кодогенератора для Postman

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

Опишу порядок разработки кодогенератора для Postman c использованием OneScript и HTTPКоннектор.

13.03.2022    897    malikov_pro    0    

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

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

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

10.03.2017    28186    ruha    21    

Ювелирсофт: Ювелирный торговый дом. Настройка интеграции с ГИИС ДМДК

WEB v8 1cv8.cf Ювелирная промышленность и торговля Россия Бесплатно (free)

Краткое описание настройки без лишней воды, для локального и серверного варианта.

21.02.2022    2572    Drasha    21    

Как из 1С отдать миллионы строк в BI и успеть это сделать быстро

Консолидация данных Анализ и проектирование ИТ-систем WEB v8 Бесплатно (free)

На онлайн-митапе «Бизнес-анализ по данным базы 1С. Интеграция c платформами BI» выступил ведущий разработчик WiseAdvice.tech Дмитрий Фурцев. Дмитрий рассказал о том, как отдать миллионы строк из 1С в платформу бизнес-аналитики и не потратить на это сутки.

14.02.2022    3776    Fudj1k    11    

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

Внешние источники данных WEB Обмен между базами 1C v8 Россия Бесплатно (free)

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

11.04.2013    44061    YPermitin    42    

Передача сообщений из 1С в MS Teams

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

Пример организации уведомлений в канал MS Teams.

09.02.2022    1627    Alex_YAM    3    

Работа с 1С через протокол OData

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

В данной статье мы будем рассматривать работу с данными информационной базы через протокол OData (далее OData).

17.12.2021    13809    ProgrammingStore    19    

Подключение к HTTP-сервису с авторизацией посредством передачи клиентского SSL-сертификата

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

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

07.12.2021    6266    kholkin    12    

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

WEB Обмен между базами 1C v8 1cv8.cf Бесплатно (free)

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

03.06.2013    31768    anig99    6    

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С (Часть 2)

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

Это вторая часть цикла статей, посвящённых типовому модулю интеграции 1С Предприятия и Битрикс24. Цель данной части: рассмотреть тонкости, связанные с обменом товарами и сопутствующими сущностями (спойлер - единицы измерения и свойства товаров). Также затронем некоторые нюансы связи сущностей 1С и Б24 (относящиеся не только к товарам) и их побочное влияние при переносе данных из модуля в модуль (при смене конфигурации, переустановки или обновлении модуля).

27.11.2021    3756    freegman74    12    

Web консоль управления сеансами 1С

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

Мы дали ему название adm1c, он позволяет посредством веб доступа удалять или смотреть на сеансы в 1С базах и при необходимости удалять их. Да и что тут такого, сказали бы, есть же консоль на win, с нее же это можно делать, и все верно, но есть пара но.

26.11.2021    2669    4ernuy    16    

Реализация перевода текста средствами Azure

WEB Локализация решений v8 Россия Бесплатно (free)

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

19.11.2021    538    user1559835    2    

Необычно-экономное использование 1С:Предприятие 8 на Asp.Net-хостинге для реализации Интернет-магазина Промо

WEB Анализ и проектирование ИТ-систем v8 1cv8.cf Россия Бесплатно (free)

Статья описывает, как можно сэкономить на реализации Интернет-магазина предприятия, в который данные поступают из 1С:Предприятие 8. Данные размещаются в базе данных MSSql удаленно у хостинг-провайдера. Предлагается практический опыт гармоничной интеграции 1С:Предприятие и Asp.Net через LINQ и прямой доступ к информационной базе 1С. Строится простейшее решение, с одной стороны имеющее веб-интерфейс, а с другой стороны построенное как desktop-приложение. Тем самым достигается эффективность в наполнении веб-сайта контентом. Максимальный эффект достигается, когда Интернет-магазин проектируется «с нуля» с уникальной для предприятия структурой.

12.11.2010    43570    Elisy    13    

Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С

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

Цель статьи - указать на подводные камни и нюансы, о которых “не пишут на заборах” и которые встретились мне за время внедрения типового модуля интеграции 1С и Битрикс24. Будет интересна для людей, кто подумывает о том, чтобы настроить интеграцию, и хотят понять, с чем столкнутся. А также для тех, кто уже работает с подобным обменом, столкнулся с какими-то из описанных ситуаций и хочет понять, что пошло не так и “как жить дальше”. Постараюсь все описать “человеческим” языком с минимальной долей терминов, так как статья, надеюсь, будет полезна не только программистам.

07.11.2021    5857    freegman74    13    

Внешняя компонента как REST-API-компонента...

Разработка внешних компонент WEB Linux v8 Бесплатно (free)

...и совсем немного кода на С[++]...

01.11.2021    2277    starik-2005    10    

Окей, Google

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

Пример интеграции Google Ассистента с 1С. В основе которого лежит платформа Dialogflow CX для понимания естественного языка.

28.10.2021    1711    Soloist    6    

Повышение производительности веб-сервисов. Переиспользование сеансов

WEB HighLoad оптимизация v8 Бесплатно (free)

Повышение производительности веб-сервисов. Переиспользование сеансов. Практическая реализация.

20.10.2021    3309    sorter1    2    

WEB/HTTP сервисы. Базовые отличия и применение на практике

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

Рассказываем о WEB и HTTP сервисах, их практическом применении, о шишках, которые мы набили, и о выводах, которые сделали. Спойлер: тех, кто дочитает статью до конца, ждет бонус от автора.

04.10.2021    16162    Neti    17    

Интеграция 1С с ГИИС ДМДК

WEB Файловые протоколы обмена (TXT, XML, DBF), FTP v8 ERP2 Ювелирная промышленность и торговля Россия Бесплатно (free)

ГИИС ДМДК - единая информационная платформа для взаимодействия участников рынка драгоценных металлов и драгоценных камней. с 01.09.21 стартовал обязательный обмен данными с Федеральной пробирной палатой (ФПП) исключительно через ГИИС. А постепенно - с 01.01.2022 и с 01.03.2022 - все данные о продаже драгоценных металлов и камней должны быть интегрированы с ГИИС. У многих пользователей возникает вопрос как автоматизировать обмен между программой 1С и ГИИС ДМДК. В настоящей статье ВЦ Раздолье поделится своим опытом о реализации такого обмена. Автор статьи - Мордовин Антон - архитектор систем на базе 1С Внедренческого центра "Раздолье".

30.09.2021    29597    1СERP    157    

Быстрое чтение составных http сообщений multipart/form-data

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

Алгоритм быстрого разбора составного http сообщения multipart/form-data.

26.09.2021    2372    cherkasovvitalik    3    

Интеграция 1С с Битрикс24 через вебхуки

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

Пример получения токена и http запрос к API битрикса.

15.09.2021    5439    TyurinArt    8    

Обмен с HTTP сервисом файлами по формату multipart/form-data

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

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

07.09.2021    6452    ix5s    25    

Разработка гибридного web-приложения на 1С, возможности и ограничения

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

Все чаще разработчики склоняются к использованию 1C в качестве бэкенда при разработке веб-приложений. Но благодаря встраиванию веб-клиента 1С в сайт можно получить еще больше готовой функциональности. О том, как реализовать гибридное приложение за счет связки 1С с другими веб-технологиями, рассказал разработчик компании Neti Эльдар Мингалиев.

06.09.2021    3981    Бэнни    11    

Работа с WEB-сервисами под HTTPS на примере прямого обмена между базами (1С – 1С) 

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

Использование веб-сервисов 1С при обмене 1С – 1С позволяет быстро передавать достаточно большие объемы данных из базы-источника в базу-приемник в объектах языка 1С. Данный метод обмена может применяться при бесшовной интеграции между двумя базами 1С, но требует определенной серверной инфраструктуры (установленного и настроенного WEB-сервера).

03.09.2021    9114    UltraUnion2005    8    

Глава 2. Как я написал (собрал с инфостарта) свой парсер сайта 1С Releases

WEB v8 1cv8.cf 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Путешествие начинающего программиста 1С. Глава вторая. Призываем экспертов в комментарии, оптимизируем код, ругаемся на кривые руки автора. Автор же, в свою очередь, делится своим опытом, читает умные комментарии, стремится дать те знания, за которыми он сидел ночами тем, кто их хочет найти.

31.08.2021    2020    ldmonster    4    

Взаимодействие с api Честный знак (Молочная продукция)

WEB Универсальные функции v8 1cv8.cf Бесплатно (free)

Обзор основных примеров взаимодействия с Честным знаком по api для нетиповых конфигураций.

30.08.2021    7010    user5300    58    

Умная маршрутизация: о сложностях интеграции с 1С (часть 2)

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

В статье будет много примеров кода с комментариями работы расширения для обмена данными УТ11.4 с Яндекс.Маршрутизацией через выгрузку/загрузку EXCEL файла.

27.08.2021    2431    greencactus    6    

Встраивание форм 1С на страницы сайта

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

В платформе 8.3.16 появилась возможность выводить на страницах сайта информацию из веб-клиента 1С так, что пользователь даже не заметит, что работает с платформой. Руководитель компании Айтон Михаил Пинягин на онлайн-митапе «Web-клиенты для 1С» рассказал о том, какие особенности нужно учесть при настройке встраиваемого веб-клиента, и какие возможности он дает.

27.08.2021    5416    mikepin    9    

Гарри Поттер и подкапотное пространство веб-клиента

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

При разработке сайтов, интегрированных с 1С через HTTP-сервисы, приходится бороться с кодировками, искать производительные интерфейсные решения и задумываться над безопасностью. В ходе онлайн-митапа «Web-клиенты для 1С» Юрий Лазаренко показал на практике, как работает магия самодельного веб-клиента и как решать проблемы, возникающие при интеграции.

20.08.2021    4179    TitanLuchs    19    

Умная маршрутизация: кейс интеграции с 1С (часть 1)

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

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

18.08.2021    5385    greencactus    42    

Сравнительный анализ вариантов интеграции между системами

Файловые протоколы обмена (TXT, XML, DBF), FTP WEB v8 Бесплатно (free)

На Infostart Meetup «Интеграционные решения для 1С» выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами кейсами из собственной практики: какие интеграционные решения остаются актуальными до сих пор, а каких приемов стоит избегать – даже в безвыходных ситуациях.

30.07.2021    3251    SergeyN    1    

Примеры вызова в 1С методов API до реестров открытой части Электронного кабинета налогоплательщика (Украина)

WEB v8 Украина Бесплатно (free)

Примеры вызова в 1С методов API до реестров открытой части Электронного кабинета налогоплательщика, Украина. Тестирование проводил на 1С:Предприятие 8.3 (8.3.10.2561).

28.07.2021    2370    Pervuy    5    

Пример организации HTTP сервиса на 1С: Документооборот. Источник 1С: ЕРП => Приемник 1С: Документооборот

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

Статья - пример для разработчика, как можно, не используя подсистему Интеграция с Документооборотом, управлять процессами, а именно на нашем примере прерывать выполнение процессов в 1С: Документооборот. Используя данный пример, можно организовать http-сервис в любой конфигурации 1С, которая поддерживает механизм HTTP сервисов.

13.05.2021    3447    Flover    0    

Настраиваем авторизацию пользователей 1С через Okta

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

Чем больше в компании различных конфигураций и сервисов, тем актуальнее становится проблема единой системы авторизации single Sign-On. Его лидером практически безоговорочно считается Okta. Но на просторах интернета очень мало информации про интеграцию 1С с Okta через протокол OpenID Connect. Что ж, настало время восполнить недостающие пробелы и перевернуть эту печальную страницу в вашей истории

30.04.2021    5120    ripreal1    16    

Правила обмена больше не нужны

Внешние источники данных Обмен между базами 1C WEB Файловые протоколы обмена (TXT, XML, DBF), FTP v8 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    16239    Nikola23    40    

Альфа-Авто 5.0 и современные HTTP сервисы

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

Решение, позволяющее программным продуктам, работающим на устаревших версиях платформы 1С (8.2), интегрироваться с современными HTTP сервисами. Решение, интегрированное с HTTP-сервисом программы по расчету компонентов для изготовления ЛКМ, описанное в настоящей статье, успешно работает в одном из автосервисов, работающем на устаревшей платформе и конфигурации Альфа-Авто 5.0.

01.03.2021    1866    osivv    2    

Доступ из базы 1С к стандартному интерфейсу Odata базы 1С, в которой заведен пользователь

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

Есть база, с пользователем/паролем, нужно подключиться к Odata из другой базы 1С, получить элементы справочника.

24.02.2021    1371    user823999    6    

Интеграция с API WB (Wildberries). Создание карточки товара (спецификации)

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

Опыт интеграции с API WB (Wildberries), опыт создания карточки товара, получение токенов API WB.

18.01.2021    52092    jenyavp    67