Как сделать интеграцию с Мой Склад
В этой статье рассмотрим как сделать интеграцию платформы Falcon Space с Мой Склад на примере вывода отчета из Мой Склад в виде таблицы.
Документация по API Мой Склад: https://dev.moysklad.ru/doc/api/remap/1.2/
Мы будем брать данный отчет: https://dev.moysklad.ru/doc/api/remap/1.2/reports/#otchety-otchet-pribyl-nost-poluchit-pribyl-nost-po-sotrudnikam
Также для интеграции понадобятся логин и пароль от МойСклад.
1. Для авторизации нам необходимо закодировать в base24 в формате логин:пароль (https://www.base64encode.org/). Данное значение будет использоваться для Basic авторизации через header при каждом запросе к Мой Склад.
Генерация Base64 в SQL Server - https://stackoverflow.com/questions/5082345/base64-encoding-in-sql-server-2005-t-sql
2. Создаем метод исходящего API, например ms1. Тип GET JSON.
Настройка запроса request:
CREATE PROCEDURE [dbo].[api_ms1_request]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32) -- текущий пользователь.
AS
BEGIN
-- SELECT 1 Msg, Result, Url (адрес, куда будет идти запрос)
declare @url nvarchar(256)
set @url = 'https://online.moysklad.ru/api/remap/1.2/report/profit/byemployee'
select '' Msg, 1 Result, @url Url
-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
--select 'Authorization' name, 'Basic XXXXXXXXXXXXXXXXXXX' value, 'header' [type]
END
Response процедура остается по умолчанию:
CREATE PROCEDURE [dbo].[api_ms1_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32)
AS
BEGIN
-- SELECT 1
select '' Msg, 1 Result, @response Response
-- SELECT 2 Внешние действия
END
Примечание: процедура request служит для подготовки параметров запроса, а процедура response вызывается для обработки пришедшего ответа от внешней системы.
Здесь мы можем проверить, что выдает нам внешний API (формат JSON) и подготовить обработку этих данных через SQL с функциями работы с JSON.
Пример для данного варианта отчета:
declare @s nvarchar(max) = '{ ... большой JSON от API... }'
SELECT
JSON_VALUE(value,'$.employee.name') employeeName,
JSON_VALUE(value,'$.salesCount') salesCount,
JSON_VALUE(value,'$.salesAvgCheck') salesAvgCheck,
JSON_VALUE(value,'$.sellSum') sellSum,
JSON_VALUE(value,'$.sellCostSum') sellCostSum,
JSON_VALUE(value,'$.returnCount') returnCount,
JSON_VALUE(value,'$.returnAvgCheck') returnAvgCheck,
JSON_VALUE(value,'$.returnSum') returnSum,
JSON_VALUE(value,'$.returnCostSum') returnCostSum,
JSON_VALUE(value,'$.profit') profit,
JSON_VALUE(value,'$.margin') margin
FROM OPENJSON(@s, '$.rows')
Данный запрос мы сможем в таблице использовать для извлечения данных, полученных от API.
3. Создаем страницу и добавляем на нее сниппет таблицы.
<div class="as-table" data-code="ms1"></div>
Примечание: имя таблицы не обязательно должно совпадать с request API кодом.
4. Создаем таблицу, создаем колонки с именами полей, прописываем источник API = ms1. Эта настройка приводит к тому, что перед загрузкой таблицы идет обращение к исходящему запросу API и его ответ поступает на вход процедуры GetItems (в параметре @filters).
5. Прописываем GetItems таблицы:
CREATE PROCEDURE [dbo].[crud_ms1_getItems]
@filters ExtendedDictionaryParameter READONLY,
@sort sql_variant,
@direction nvarchar(8),
@page int,
@pageSize int,
@username nvarchar(32)
AS
BEGIN
declare @ids TABLE (id int)
declare @s nvarchar(max) = (select top 1 Value2 from @filters where [key]='ms1')
--print @s
-- SELECT 1
SELECT
JSON_VALUE(value,'$.employee.name') employeeName,
JSON_VALUE(value,'$.salesCount') salesCount,
JSON_VALUE(value,'$.salesAvgCheck') salesAvgCheck,
JSON_VALUE(value,'$.sellSum') sellSum,
JSON_VALUE(value,'$.sellCostSum') sellCostSum,
JSON_VALUE(value,'$.returnCount') returnCount,
JSON_VALUE(value,'$.returnAvgCheck') returnAvgCheck,
JSON_VALUE(value,'$.returnSum') returnSum,
JSON_VALUE(value,'$.returnCostSum') returnCostSum,
JSON_VALUE(value,'$.profit') profit,
JSON_VALUE(value,'$.margin') margin
FROM OPENJSON(@s, '$.rows')
-- SELECT 2
select 1
-- SELECT 3
select 1 Compact, 1 HideTitleCount
END
Здесь мы извлекаем данные из API Response и трансформируем в табличные данные, которые выводятся в таблице на странице.
Таким образом, мы извлекли данные по API, трансформировали их в табличные данные из JSON и вывели через компонент Таблица на странице.
Аналогичным образом можно данные сохранять в БД, вызывать управляющие действия (вызов исходящего запроса API через кнопку Отправить в Форме).
Google поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций Прием платежей через Яндекс.Кассу Онлайн-платежи. Интеграция с Робокассой (платежный шлюз) Zapier интеграция на платформе Falcon Space Интеграция коллтрекинга МАНГО ОФИС (режим Площадка) Интеграция API DaData.ru подсказки по адресам Интеграция API Курсы валют Центрального Банка РФ в веб-платформе Falcon Space Интеграция API Почта РФ Интеграция API Служба доставки СДЭК (CDEK) Интеграция API Служба доставки Деловые линии Интеграция импорт и парсинг файла CSV Интеграция API IpGeoBase Город по IP-адресу Интеграция API DaData.ru Город по IP-адресу Как вычислить расстояние между 2 точками с координатами через Google Maps Сканирование штрихкодов и QR кодов через камеру и с картинок Получение данных контрагента по ИНН Прием платежей на сайте через CloudPayments Как сделать интеграцию с Мой Склад Внедрение подсказок dadata на сайт Вывод точек на карте Яндекс. Интеграция с Яндекс Карты Интеграция с телефонией Zadarma.com Получение данных о контрагенте - интеграция с сервисом ЗаЧестныйБизнес Интеграция с AMO CRM Как импортировать данные в базу CRM из Google Контакты Вход/регистрация через ВКонтакте(vk.com) Интеграция CRM с онлайн чатом на сайте (Replain) Как связать yandex metrika clientID с пользователем на сайте и посмотреть полный путь его по сайту? Телеграм. Работа с файлами Как сделать обработку входящей почты (создание клиента в CRM из Email) Интеграция сайта с ChatGPT (openAI) Интеграция с Яндекс Метрика Интернет-эквайринг Тинькоф Банк Интеграция с платежным шлюзом LifePay Как сделать вебхук для передачи данных с Тильды на Falcon Space Пополнение средств через Yookassa (Юкасса) Тинькофф Банк - уведомление в учетную систему по операциям с расчетным счетом Интеграция с Ютуб. Получение роликов канала Интеграция с Ozon, Wildberries - извлечение статистики Вывод данных из различных удаленных SQL Server через технологию Linked Server
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта