На прошлых уроках Учимся создавать http-сервисы (часть первая) , Учимся создавать http сервисы (часть вторая). Передача параметра в http сервис , мы с вами научились создавать http сервис, научились передавать один параметр в сервис. Сегодня мы разберем вопрос о том, как передавать несколько параметров в http сервис, а так-же немного поработаем с формированием JSON строки.
Цель:
-Научится передавать сколько угодно параметров в http сервис.
-Научится собирать сложные JSON строки.
Прежде чем начнем разбирать вопрос по передаче параметров, подготовим несколько объектов метаданных для демонстрации.
-Добавим справочник «Склады»
-Добавим справочник «Контрагенты»
-Добавим документ «РеализацияТоваровУслуг»
Реквизиты шапки:
-Контрагент (спр. Ссылка «Контрагенты»)
-Склад (спр. Ссылка «Склады»)
Табличная часть «Товары»
Реквизиты табличной части:
-Номенклатура (спр. «Номенклатура»)
-Цена (Число 15,2)
-Количество (Число 15,3)
-Сумма (Число 15,3)
Сохраним все изменения и обновим конфигурацию базы данных.
Зайдем в режим предприятия и добавим несколько складов, контрагентов и документов.
Постановка задачи:
Необходимо получить документы в JSON формате за период с Даты1 по Дата2.
Из задачи следует, что нам нужно передать два параметра в http запрос, начальную дату и конечную дату.
-Откроем ветку «Общие» - «HTTP сервисы»
-Создадим новый http сервис «РаботаСДокументами»
-Установим корневой URL – documents
-Перейдем на закладку «ШаблоныURL»
-Добавим новый шаблон «ПолучитьРасходныеДокументыЗаПериод». Настроим шаблон /get_documents_from_date_to_date/. Как помним из второго урока, параметры записываются в фигурных скобках, установим параметр /get_documents_from_date_to_date/{beginDate}. Установили первый параметр. Установим второй параметр /get_documents_from_date_to_date/{beginDate}/{endDate}. Таким образом мы установили два параметра.
Можно было уставить их немного по другому, добавить дополнительное пояснение в шаблоне, о том что это за параметры, например так: /get_documents_from_date_to_date/beginDate/{beginDate}/endDate/{endDate}.
Давайте в нашей задаче остановимся на первом варианте.
Итак мы имеем шаблон: /get_documents_from_date_to_date/{beginDate}/{endDate}. Таким образом мы научились передавать два параметра в http запрос.
-Добавим новый метод «ПолучитьДокументы»
-Перейдем в обработчик
-Получим значения параметра {beginDate} и {endDate} (если забыли, смотрим вторую часть infostart.ru/1c/articles/1296740/)
-Преобразуем наши параметры в тип «Дата», при помощи функции Дата()
-Перейдем в общий модуль «ОбщегоНазначения» и в нем напишем функцию «ПолучитьJSONСтрокуДокументов», которая возвращаем json строку – информацию по документам.
-Вызываем эту функцию из обработчика и передаем в нее два параметра НачалоПериода и КонецПериода.
-JSON строку устанавливаем в «Ответ»
-Публикуем http сервис. Запускаем программу 1С из под администратора. Меню Администрирование – Публикация на веб сервере. Публикуем http сервис. Подробное описание тут infostart.ru/1c/articles/1293341/
-Открываем браузер. Собираем строку подключения с параметрами. В моем случае эта строка будет иметь такой вид: http://localhost/my_name/hs/documents/get_documents_from_date_to_date/20201001/20201002
-В браузере проверяем результат. Должны увидеть json строку, которую мы сформировали.
{
"Документы": [
{
"номер": "000000001",
"дата": "2020-10-01T23:15:39",
"id": "613f40d0-0422-11eb-85d6-54271ef75e0a",
"Товары": [
{
"id_товара": "b427820a-fc3e-11ea-85d4-54271ef75e0a",
"наименование": "Печенье",
"количество": 20,
"сумма": 1200
},
{
"id_товара": "b427820b-fc3e-11ea-85d4-54271ef75e0a",
"наименование": "Вентилятор",
"количество": 15,
"сумма": 15000
},
{
"id_товара": "613f40cd-0422-11eb-85d6-54271ef75e0a",
"наименование": "Номенклатура 2",
"количество": 2,
"сумма": 10000
}
]
},
{
"номер": "000000002",
"дата": "2020-10-01T23:16:29",
"id": "613f40d1-0422-11eb-85d6-54271ef75e0a",
"Товары": [
{
"id_товара": "b427820a-fc3e-11ea-85d4-54271ef75e0a",
"наименование": "Печенье",
"количество": 20,
"сумма": 1200
},
{
"id_товара": "613f40cd-0422-11eb-85d6-54271ef75e0a",
"наименование": "Номенклатура 2",
"количество": 10,
"сумма": 10000
},
{
"id_товара": "613f40ce-0422-11eb-85d6-54271ef75e0a",
"наименование": "Номенклатура 3",
"количество": 3,
"сумма": 300
}
]
},
{
"номер": "000000003",
"дата": "2020-10-01T23:17:05",
"id": "613f40d2-0422-11eb-85d6-54271ef75e0a",
"Товары": [
{
"id_товара": "613f40cf-0422-11eb-85d6-54271ef75e0a",
"наименование": "Номенклатура 4",
"количество": 4,
"сумма": 2000
}
]
}
]
}
На этом уроке мы научились передавать два параметра в http сервис.
Аналогично можно передавать множество параметров, по шаблону
Ip адрес / Имя публикации / hs / корневой каталог / шаблон / {Параметр1}/{Параметр2}/ … / {Параметр N}.
Всего хорошего.
При реализации данного функционала была использована платформа 1С:Предприятие 8.3 (8.3.12.1567).