105 lines
5.5 KiB
Markdown
105 lines
5.5 KiB
Markdown
Для получения данных о факте выполнения работ из системы **Cropwise** через API и сохранения их в справочнике 1С, потребуется:
|
||
|
||
1. Вызвать REST-метод Cropwise API.
|
||
2. Получить JSON-ответ.
|
||
3. Обработать данные.
|
||
4. Сохранить в справочник 1С.
|
||
|
||
Ниже пример кода на языке 1С:Предприятие для внешней обработки или модуля управляемого приложения.
|
||
|
||
---
|
||
|
||
### 🧾 Предположим:
|
||
- Cropwise предоставляет эндпоинт `/api/v1/work-completion` для получения фактов выполнения работ.
|
||
- Используется авторизация по токену (`Authorization: Bearer <token>`).
|
||
- Ответ в формате JSON.
|
||
- Данные содержат поля: `id`, `taskName`, `completionDate`, `worker`.
|
||
|
||
---
|
||
|
||
## ✅ Пример кода (внешняя обработка)
|
||
|
||
```bsl
|
||
Процедура ПолучитьФактыВыполненияРабот(Команда)
|
||
|
||
// Параметры подключения
|
||
URL = "https://api.cropwise.com/api/v1/work-completion";
|
||
Токен = "ваш_токен_авторизации";
|
||
|
||
// Подготовка HTTP-запроса
|
||
HTTPСоединение = Новый HTTPСоединение("api.cropwise.com", 443, , , СертификатПровайдераHTTPS());
|
||
Запрос = Новый HTTPЗапрос(URL);
|
||
Запрос.ДобавитьЗаголовок("Authorization", "Bearer " + Токен);
|
||
Запрос.Метод = "GET";
|
||
|
||
// Выполнение запроса
|
||
Ответ = HTTPСоединение.Получить(Запрос);
|
||
|
||
Если Ответ.КодСостояния = 200 Тогда
|
||
|
||
// Парсинг JSON
|
||
JSONТекст = Ответ.ПолучитьПоток().Читать(БезПробелов).ПолучитьСтроку();
|
||
JSONДокумент = Новый JSONДокумент;
|
||
JSONДокумент.Прочитать(JSONТекст);
|
||
|
||
// Корневой массив
|
||
Результаты = JSONДокумент.Корень;
|
||
|
||
Для Каждого ЭлементJSON Из Результаты Цикл
|
||
|
||
// Создание элемента справочника
|
||
ЭлементСправочника = Справочники.ФактыВыполненияРабот.СоздатьЭлемент();
|
||
ЭлементСправочника.Код = JSONДокумент.ПолучитьЗначение("id", ЭлементJSON);
|
||
ЭлементСправочника.Наименование = JSONДокумент.ПолучитьЗначение("taskName", ЭлементJSON);
|
||
ЭлементСправочника.Дата = Формат(Дата(СокрЛП(Сред(JSONДокумент.ПолучитьЗначение("completionDate", ЭлементJSON), 1, 19))), "ДФ=ГГГГ-MM-ДД");
|
||
ЭлементСправочника.Исполнитель = JSONДокумент.ПолучитьЗначение("worker", ЭлементJSON);
|
||
|
||
// Запись элемента
|
||
Попытка
|
||
ЭлементСправочника.Записать();
|
||
Исключение
|
||
Прервать; // Логировать ошибку
|
||
КонецПопытки;
|
||
|
||
КонецЦикла;
|
||
|
||
Иначе
|
||
Сообщить("Ошибка получения данных: " + Ответ.КодСостояния + " - " + Ответ.ТекстСостояния);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
```
|
||
|
||
---
|
||
|
||
## 📁 Структура справочника "ФактыВыполненияРабот"
|
||
|
||
- **Код** — строка (например, идентификатор из Cropwise).
|
||
- **Наименование** — строка (название задачи).
|
||
- **Дата** — дата (дата завершения работы).
|
||
- **Исполнитель** — строка (ФИО или ID исполнителя).
|
||
|
||
---
|
||
|
||
## 🔐 Авторизация
|
||
|
||
Если используется OAuth или другой способ аутентификации, то перед этим может понадобиться получить токен через отдельный запрос.
|
||
|
||
---
|
||
|
||
## 🧪 Советы по тестированию
|
||
|
||
- Включите в код вывод JSON-ответа в журнал или файл для отладки.
|
||
- Убедитесь, что сертификат HTTPS корректно обрабатывается (особенно если стоит прокси/SSL-инспекция).
|
||
- Можно использовать объект `ЗаписьЖурналаРегистрации()` для логирования успешных/ошибочных записей.
|
||
|
||
---
|
||
|
||
## 🔄 Расширение функционала
|
||
|
||
- Возможна синхронизация только новых записей (по дате/ID).
|
||
- Добавление периодического запуска через регламентное задание.
|
||
|
||
---
|
||
|
||
Если у тебя есть конкретные данные (формат ответа, структура JSON, метод API), могу адаптировать код под точную специфику. |