Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Юрий Гуреев, «‎Интеграция 1С с внешними система...

Ozon Tech
October 14, 2024
35

Юрий Гуреев, «‎Интеграция 1С с внешними системами. Проблемы и их решения»‎

Ozon Tech

October 14, 2024
Tweet

More Decks by Ozon Tech

Transcript

  1. Интеграция 1С с внешними системами. Проблемы и их решения Юрий

    Гуреев Cтарший разработчик 1С в Ozon, группа разработки 1С «Библиотеки и сервисы»
  2. 2 AGENDA Инструменты для работы с API и ключевые моменты,

    на которые стоит обратить внимание Реализация интеграций вне 1С, когда возможностей 1С не хватает Получение файла Excel и загрузка данных из него
  3. 4 Загружаем данные из Excel • Простой код загрузки из

    файлов Excel (.xlsx). Используем возможности табличного документа 1С • Но ведь файлы Excel могут быть с «сюрпризом»
  4. 5 Загружаем данные из Excel • Немного изменим код, чтобы

    получить то, что действительно хранится в ячейках • Добились желаемого результата
  5. 11 Получаем данные с почты • Создаём ИнтернетПочтовыйПрофиль. Подключаемся по

    IMAP • Задаём параметры отбора заголовков. Это нам позволяет IMAP • Выбираем письма по отбору Параметры: удалять с сервера, отбор по заголовкам, отмечать как прочитанные • Выбираем файлы с отбором по типу MIME
  6. 13 Когда нет API 1. Бывает, что файл на почту

    нам присылают ссылкой. Хорошо, если это ссылка на сайт поставщика данных Например: 2. Пытаемся зайти по ссылке, а там стандартное окно:
  7. 14 Нам поможет DevTools в Google Chrome 1. Выход есть!

    Мы можем проследить, что делает сайт, когда мы отправляем данные для авторизации 2. Для этого используем DevTools браузера
  8. 16 Реализация в 1С 1. Запрос уже легко можно повторить

    из 1С 2. Передаём токен при последующих запросах
  9. 18 Что такое API REST (Representational State Transfer) — это

    архитектурный стиль, используемый при разработке распределённых систем, веб-сервисов и API (Application Programming Interface). Он определяет набор принципов и ограничений для создания масштабируемых, гибких и легко поддерживаемых систем.
  10. 19 КоннекторHTTP — главный помощник https://github.com/vbondarevsky/Connector Если нужно, размести тут

    QR-код или удали эту фигуру Если нужно, размести тут QR-код или удали эту фигуру Лицензия Apache даёт пользователю право использовать программное обеспечение для любых целей, свободно изменять и распространять изменённые копии, за исключением названия Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 Основные возможности библиотеки: • Удобная работа с запросами и ответами в формате JSON • Отправка данных формы (полей формы), application/x-www- form-urlencoded • Прозрачная поддержка ответов, закодированных GZip • Basic, Digest и AWS4-HMAC-SHA256 аутентификация • Автоматическое разрешение редиректов • Установка и чтение Cookies • Работа в рамках сессии с сохранением состояния (cookies, аутентификация и пр.)
  11. 23 Полезные советы Stage отличается от Production Возврат не всегда

    JSON Ошибка с кодом ответа 200 Нужно больше логов Swagger — не всегда истина API меняется без предупреждения
  12. 24 Немного о работе с ошибками • Мы используем в

    каждом модуле функцию для быстрой записи логов. Функция фиксирует событие, уровень журнала регистрации, текст сообщения об ошибке
  13. 28 PowerShell • Для работы с AD (Active Directory) используем

    PowerShell • Данная возможность активно используется для систем управления доступом (IDM) • Можем получать переменные среды • Перезапустить или убить зависший процесс
  14. 29 PowerShell умеет и такое • Можем даже поднять свой

    HTTP сервер и выполнить какую-либо задачу
  15. 33 Представляем Go • На Go легко поднять простой HTTP

    сервер. Он будет легковесный и производительный
  16. 34 Представляем Go • На Go легко поднять простой HTTP

    сервер. Он будет легковесный и производительный 01 Go легко изучить. В интернете огромное количество учебных материалов на русском (и уж тем более на английском) языке
  17. 35 Представляем Go • На Go легко поднять простой HTTP

    сервер. Он будет легковесный и производительный 01 Go легко изучить. В интернете огромное количество учебных материалов на русском (и уж тем более на английском) языке 02 В Go очень простая реализация ООП, будет понятна любому программисту 1С
  18. 36 Представляем Go • На Go легко поднять простой HTTP

    сервер. Он будет легковесный и производительный 01 Go легко изучить. В интернете огромное количество учебных материалов на русском (и уж тем более на английском) языке 02 В Go очень простая реализация ООП, будет понятна любому программисту 1С 03 Огромное количество библиотек для работы с любой СУБД
  19. 37 Представляем Go • На Go легко поднять простой HTTP

    сервер. Он будет легковесный и производительный 01 Go легко изучить. В интернете огромное количество учебных материалов на русском (и уж тем более на английском) языке 02 В Go очень простая реализация ООП, будет понятна любому программисту 1С 03 Огромное количество библиотек для работы с любой СУБД 04 Любой ИИ хорошо умеет писать на Go, что сильно облегчает труд живого человека
  20. 38 Простой веб-сервер 01 Имя пакета и имя функции —

    входная точка программы 03 Тело функции обработчика 02 Назначение обработчика и запуск сервера Выполняем: go build Получаем: program.exe
  21. 39 С чего начать? 01 Скачиваем и устанавливаем • Visual

    Studio Code https://code.visualstudio.com • Go https://go.dev
  22. 40 С чего начать? 01 Скачиваем и устанавливаем • Visual

    Studio Code https://code.visualstudio.com • Go https://go.dev 02 Устанавливаем Extension
  23. 41 С чего начать? 01 Скачиваем и устанавливаем • Visual

    Studio Code https://code.visualstudio.com • Go https://go.dev 03 Проект • Создаём каталог, открываем в VSCode • Пишем в консоли go mod init sample • Создаем файл main.go 02 Устанавливаем Extension
  24. 42 С чего начать? 01 Скачиваем и устанавливаем • Visual

    Studio Code https://code.visualstudio.com • Go https://go.dev 03 Проект • Создаём каталог, открываем в VSCode • Пишем в консоли go mod init sample • Создаем файл main.go 02 Устанавливаем Extension 04 Что может быть полезно • A Tour of Go https://go.dev/tour • Go (Golang) – первое знакомство https://stepik.org/course/100208
  25. Спасибо за внимание! Юрий Гуреев Старший разработчик 1С в Ozon,

    группа разработки 1С «Библиотеки и сервисы» [email protected] Проверяйте форматы при загрузке из Excel, используйте настройки загрузки 01 Сохраните слайд с кодом загрузки из почты 02 Используйте Chrome DevTools для анализа запросов сайта 03 Используйте КоннекторHTTP для работы с API, пишите логи, анализируйте разные ответы 04 Используйте PowerShell для работы с компонентами Windows 05 Пишите микросервисы на Go для интеграций, которые нельзя реализовать в 1С 06 Итоги