- APInita
- Возможности
- Сервисы
- Решения
- Рерайт статей с помощью ИИ и публикацией в Telegram
- Распознавание чеков и документов по фото с помощью APInita
- Генерация изображений с помощью ИИ и отправка в Телеграм
- Получение и передача файлов в Telegram по API
- Авторизация в Telegram-боте с использованием Google-таблицы в качестве базы данных
- Другие решения
- Начать бесплатно
- Вход
- Контакты
Списание остатков в МойСклад из Rubitime
Для того, чтобы автоматизировать отслеживание расходных материалов, необходимых для оказания определенной услуги, настроим интеграцию сервисов Rubitime и МойСклад. Предположим, у нас парикмахерская, и при оказании услуги “стрижка” расходуется одноразовый воротничок и одноразовый пеньюар.
В данной интеграции мы будем получать из Rubitime:
- статус записи;
- ID услуги.
В системе МойСклад нам понадобится создать:
- организацию (юр. лицо);
- склад;
- товар (или несколько), необходимый для оказания услуги.
Склад в данном контексте соответствует фактическому расположению запасов расходных материалов. Например, для салона на Ленина, 1 и салона на Фрунзе, 5 создаем два разных склада. Организация соответствует компании, оказывающей услугу.
1. Создание входящего вебхука в APInita
Создадим новый сценарий в APInita, назовем его "списание расходников по стрижке" и добавим модуль Webhook:

Скопируем URL вебхука после создания шага, нажав на ссылку во всплывающем баннере:

1.2. Настройка исходящего вебхука в Rubitime
В кабинете Rubitime в разделе “API” вставим скопированный на шаге 1 URL в соответствующее поле, сохраним настройки:

Чтобы не расходовать лишние транзакции в APInita, из отправляемых событий можно оставить только “Обновление записи (event-update-record)”, остальные две галочки снять.
1.3. Проверка работы связи Rubitime и APInita
Включаем сценарий:

В Rubitime создадим запись на нужную для интеграции услугу. Видим, что модуль сработал:

Открываем просмотр модуля, выходные данные. Мы получили данные о записи, из которых нас интересуют ключи: status (статус записи) и service_id (номер услуги). Если мы в Rubitime изменим статус этой записи на “завершен”, то получим { “status”: 2 }.

2. Обработка входящих данных из Rubitime
Выключаем сценарий для получения возможности редактирования. Следующим после модуля входящих данных поместим модуль IF:

Назовем его “проверка услуги и статуса записи” и пропишем следующее условие:
{{ s1.body.data.service_id == 46761 and s1.body.data.status == 2}}, где “46761” - это ID услуги, полученный на шаге 1.3 (подставьте свое значение), а “2” - это статус услуги “Завершен”.

3. Настройка подключения к МойСклад
В настройках системы МойСклад создадим токен, скопируем его, желательно сразу вставить в блокнот, чтобы не потерять.

Переходим в APInita в раздел “Подключения”. Создадим новое подключение с названием “МойСклад” (может быть любым), тип подключения: API ключ, Authorization: Bearer. Вставляем в поле ранее скопированный токен, сохраняем.

Подключение после сохранения имеет статус “подключено”:

3.2. Получение ID товаров, склада и организации в МойСклад
Чтобы в дальнейшем проводить списание конкретных товаров по конкретному складу и организации, нужно сначала узнать их ID в системе МойСклад.
Для этого отправим последовательно несколько запросов методом GET, тип (формат) данных application/json
В заголовке запроса передаем: "Accept-Encoding: gzip"
Подключение, созданное в пункте 3.
Далее нам нужно будет последовательно подставить в запрос следующие URL:
- https://api.moysklad.ru/api/remap/1.2/entity/organization (получить список юр.лиц) Чтобы узнать id организации
- https://api.moysklad.ru/api/remap/1.2/entity/store (получить список складов) Чтобы узнать id склада
- https://api.moysklad.ru/api/remap/1.2/entity/product (получить список товаров) Чтобы узнать id товара)
Для удобства создадим отдельный сценарий в APInita, назовем его “получение сущностей”, добавим модуль HTTP (назовем его так же) и заполним необходимые поля:


3.2.1.
Вставляем первый URL: https://api.moysklad.ru/api/remap/1.2/entity/organization Сохраняем модуль. Однократно запускаем сценарий:

Открываем модуль, смотрим на выходные данные:

Здесь мы получаем метаданные о каждой организации в виде вложенных массивов. У нас в примере организация одна, поэтому мы сразу видим ее в первом элементе массива rows (0). Если организаций несколько, то находим нужный нам элемент массива, который содержит название нужной организации в ключе “name”. Выделяем и копируем в блокнот значение ключа “id”.
3.2.2.
Переходим снова на редактирование шага, вставляем второй URL: https://api.moysklad.ru/api/remap/1.2/entity/store Сохраняем модуль, однократно запускаем сценарий, смотрим на выходные данные:

Находим элемент массива, который содержит название нужного склада в ключе “name”. Выделяем и копируем в блокнот значение ключа “id”.
3.2.3.
Переходим снова на редактирование шага, вставляем третий URL: https://api.moysklad.ru/api/remap/1.2/entity/product Сохраняем модуль, однократно запускаем сценарий, смотрим на выходные данные:

Здесь последовательно находим нужные элементы массива, которые содержат название нужного товара в ключе “name”. Выделяем и копируем в блокнот значение ключа “id” - для каждого товара свой ID (в нашем примере при оказании услуги расходуется две товарных позиции, оба ID сохраняем в блокнот).
Записав в блокнот ID всех нужных сущностей, выходим из сценария “получение сущностей”.
4. Формирование HTTP-запроса на создание списания
Теперь, чтобы создать в системе МойСклад списание товаров, отправим HTTP-запрос на URL: https://api.moysklad.ru/api/remap/1.2/entity/loss методом POST, тип (формат) данных text/plain.
В заголовке запроса передаем:
- Accept-Encoding: gzip;
- Content-Type: application/json;
- Подключение, созданное в пункте 3.1.
В теле запроса передаем следующий JSON-объект:
{
"store":{
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/store/6d0d7175-045f-11ef-0a80-0f130003d3dc",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/store/metadata",
"type": "store",
"mediaType": "application/json"
}
},
"organization": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/organization/09072925-03a3-11ef-0a80-08b60008fc32",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/organization/metadata",
"type": "organization",
"mediaType": "application/json"
}
},
"positions": [
{
"quantity": 1,
"reason": "расход",
"assortment": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/5be5f354-046d-11ef-0a80-014d0006d236",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata",
"type": "product",
"mediaType": "application/json"
}
}
},
{
"quantity": 1,
"reason": "расход",
"assortment": {
"meta": {
"href": "https://api.moysklad.ru/api/remap/1.2/entity/product/9baa7362-0485-11ef-0a80-1433000be89d",
"metadataHref": "https://api.moysklad.ru/api/remap/1.2/entity/product/metadata",
"type": "product",
"mediaType": "application/json"
}
}
}
]
}- в значении “href” последняя часть URL https://api.moysklad.ru/api/remap/1.2/entity/store/6d0d7175-045f-11ef-0a80-0f130003d3dc - это ID склада, полученный на шаге 3.2.2.
- последняя часть URL https://api.moysklad.ru/api/remap/1.2/entity/organization/09072925-03a3-11ef-0a80-08b60008fc32 - это ID организации, полученный на шаге 3.2.1.
- значением ключа “quantity” в виде числа задаем количество товара, расходуемого при оказании услуги;
- значением ключа “reason” в виде строки в кавычках прописываем причину списания (произвольное поле, можно прописать любое значение)
- в значении “href” последняя часть URL https://api.moysklad.ru/api/remap/1.2/entity/product/5be5f354-046d-11ef-0a80-014d0006d236 - это ID товара, полученный на шаге 3.2.3.
В нашем примере товарных позиций две - соответственно, вложенный массив содержит два элемента.
Возвращаемся в сценарий “списание расходников по стрижке”. Следующим после модуля IF добавим модуль HTTP:

Назовем его “создание списания”, заполним необходимые поля:

Сохраняем модуль, включаем сценарий.
5. Интеграция в действии
Проверим работу интеграции. В Rubitime создадим запись на услугу “стрижка”, ID которой обрабатывается на шаге 2. Изменим статус записи на “Завершен”. Видим, что сценарий сработал (рядом с модулями загораются зеленые точки, сигнализирующие об успешной передаче данных).
В системе МойСклад создалось списание заданных товаров:
