3ERP

3ERP - простая и бесплатная программа для бухгалтерского и оперативного учёта в учреждениях сферы торговли и услуг, общественного питания, складского хранения, автосервиса, медицины, логистики, производства, управления работами и заявками, поддерживающая до 100 пользователей, на русском языке и полностью бесплатная для 1 пользователя. На сайт (скачать)

13. Обмен и интеграции

Платформа предоставляет REST API для интеграции с внешними системами, а также механизмы для вызова внешних API из процедур.

13.1. Определение API-эндпоинта

API Интеграция
    API_ЭНДПОИНТ "/api/v1/zayavka"
        МЕТОД POST
        ПАРОЛЬ "secret123"
        ОБЪЕКТ Процедура.ОбработатьЗаявку
    КОНЕЦ_ЭНДПОИНТА
    
    API_ЭНДПОИНТ "/api/v1/clients"
        МЕТОД GET
        ОБЪЕКТ Клиенты
        ПАРОЛЬ "secret123"
    КОНЕЦ_ЭНДПОИНТА
КОНЕЦ_API

13.2. GET-эндпоинт с фильтрацией

API_ЭНДПОИНТ "/api/v1/orders"
    МЕТОД GET
    ОБЪЕКТ ЗаказНаряд
    ПАРОЛЬ "secret123"
    ФИЛЬТР "Клиент = {{client_id}}"
КОНЕЦ_ЭНДПОИНТА

13.3. POST-эндпоинт со схемой валидации

СХЕМА_ДАННЫХ СхемаЗаявки
    ПОЛЕ name СТРОКА ОБЯЗАТЕЛЬНОЕ
    ПОЛЕ phone СТРОКА ОБЯЗАТЕЛЬНОЕ
    ПОЛЕ description СТРОКА
КОНЕЦ

API_ЭНДПОИНТ "/api/v1/zayavka"
    МЕТОД POST
    ОБЪЕКТ Процедура.СоздатьЗаявку
    ПАРОЛЬ "secret123"
    СХЕМА СхемаЗаявки
КОНЕЦ_ЭНДПОИНТА

13.4. Вызов внешнего API из процедуры (HTTP_ЗАПРОС)

ПРОЦЕДУРА ОтправитьУведомление
    ВЫЧИСЛИТЬ Данные = {
        "chat_id": "123456789",
        "text": "Новый заказ!"
    }
    
    ПОПЫТКА
        ВЫЧИСЛИТЬ Ответ = HTTP_ЗАПРОС(
            "POST",
            "https://api.telegram.org/botTOKEN/sendMessage",
            Данные
        )
        ВЫВЕСТИ "Уведомление отправлено"
    ИСКЛЮЧЕНИЕ Ошибка
        ВЫВЕСТИ "Ошибка: " + Ошибка
    КОНЕЦ_ПОПЫТКИ
КОНЕЦ_ПРОЦЕДУРЫ

13.5. Схемы данных для валидации

СХЕМА_ДАННЫХ СхемаКонтрагента
    ПОЛЕ Наименование СТРОКА ОБЯЗАТЕЛЬНОЕ
    ПОЛЕ Телефон СТРОКА
    ПОЛЕ Email СТРОКА
    ПОЛЕ ИНН СТРОКА
КОНЕЦ

13.6. Пример процедуры для API

ПРОЦЕДУРА СоздатьЗаявкуИзAPI
    ВЫЧИСЛИТЬ Данные = ПОЛУЧИТЬ(args, 0)
    
    # Ищем клиента
    ВЫЧИСЛИТЬ Клиент = НАЙТИ("Клиенты", "Телефон = '" + Данные.phone + "'")
    ЕСЛИ ПУСТО(Клиент) ТО
        ВЫЧИСЛИТЬ Клиент = СОЗДАТЬ("Клиенты")
        ЗАПОЛНИТЬ Клиент.Наименование = Данные.name
        ЗАПОЛНИТЬ Клиент.Телефон = Данные.phone
        ВЫЧИСЛИТЬ _ = ЗАПИСАТЬ(Клиент)
    КОНЕЦ
    
    # Создаём заказ
    ВЫЧИСЛИТЬ Заказ = СОЗДАТЬ("ЗаказНаряд")
    ЗАПОЛНИТЬ Заказ.Клиент = Клиент.id
    ЗАПОЛНИТЬ Заказ.Статус = "Заявка с сайта"
    ЗАПОЛНИТЬ Заказ.Описание = Данные.description
    ВЫЧИСЛИТЬ _ = ЗАПИСАТЬ(Заказ)
    
    ВОЗВРАТ {"status": "success", "order_id": Заказ.id}
КОНЕЦ_ПРОЦЕДУРЫ

13.7. Параметры в пути

API_ЭНДПОИНТ "/api/v1/clients/:id"
    МЕТОД GET
    ОБЪЕКТ Процедура.ПолучитьКлиента
    ПАРОЛЬ "secret123"
КОНЕЦ_ЭНДПОИНТА

ПРОЦЕДУРА ПолучитьКлиента
    ВЫЧИСЛИТЬ ID = ПОЛУЧИТЬ(args, 0)
    ВЫЧИСЛИТЬ Клиент = ПРОЧИТАТЬ("Клиенты", ID)
    ВОЗВРАТ Клиент
КОНЕЦ_ПРОЦЕДУРЫ
3537 | 0 | 3537 | 359 | 173 | 40