Выгрузка документов с помощью HTTP-сервиса
Добрый день!
Прошу помощи у более опытных коллег по работе с 1С, а именно по HTTP-сервисам.
Задача передо мной стоит такая, что из одной базы необходимо выгружать документы с табличной частью в другую базу с помощью HTTP-сервиса.
Создал HTTP-сервис в базе источнике. В этом сервисе добавил два метода GET и POST.
В общем модуле ОбменСервер написал две функции:
При проверке работы функции GET получаю такую информацию:
[
{
"НомерДокумента": "00000000001",
"ДатаДокумента": "2025-02-14T19:08:34",
"КонтрагентНаименование": "Контрагент",
"КонтрагентИНН": "ИНН",
"СкладНаименование": "Склад готовой продукции №3",
"НоменклатураНаименование": "Шамот ША-5",
"ЕдиницаИзмеренияКод": 168,
"ЕдиницаИзмеренияНаименование": "т",
"Количество": 32
},
{
"НомерДокумента": "00000000001",
"ДатаДокумента": "2025-02-14T19:08:34",
"КонтрагентНаименование": "Контрагент",
"КонтрагентИНН": "ИНН",
"СкладНаименование": "Склад готовой продукции №3",
"НоменклатураНаименование": "Шамот ША-5",
"ЕдиницаИзмеренияКод": 168,
"ЕдиницаИзмеренияНаименование": "т",
"Количество": 33
},
{
"НомерДокумента": "00000000002",
"ДатаДокумента": "2025-03-03T08:42:29",
"КонтрагентНаименование": "Контрагент",
"КонтрагентИНН": "ИНН",
"СкладНаименование": "Склад готовой продукции №3",
"НоменклатураНаименование": "Шамот ША-5",
"ЕдиницаИзмеренияКод": 168,
"ЕдиницаИзмеренияНаименование": "т",
"Количество": 32
},
{
"НомерДокумента": "00000000002",
"ДатаДокумента": "2025-03-03T08:42:29",
"КонтрагентНаименование": "Контрагент",
"КонтрагентИНН": "ИНН",
"СкладНаименование": "Склад готовой продукции №3",
"НоменклатураНаименование": "Заполнитель шамотный 6-0 мм",
"ЕдиницаИзмеренияКод": 168,
"ЕдиницаИзмеренияНаименование": "т",
"Количество": 33
}
]
А вот при проверке функции POST ругается на конструкцию РезультатЗапроса.Товары.
Подскажите, пожалуйста, как мне вывести информацию с помощью метода POST, чтобы табличная часть группировалась по номеру документа. Или можно как-то в методе GET это сделать?
Спасибо за любую помощь
Прошу помощи у более опытных коллег по работе с 1С, а именно по HTTP-сервисам.
Задача передо мной стоит такая, что из одной базы необходимо выгружать документы с табличной частью в другую базу с помощью HTTP-сервиса.
Создал HTTP-сервис в базе источнике. В этом сервисе добавил два метода GET и POST.
Функция ВыгрузкаЗаказКлиентаPOST(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
СтрокаJSON = ОбменСервер.ПолучитьЗаказКлиентаСТЧ();
Ответ.УстановитьТелоИзСтроки(СтрокаJSON);
Возврат Ответ;
КонецФункции
Функция ВыгрузкаЗаказКлиентаGET(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
СтрокаJSON = ОбменСервер.ПолучитьЗаказКлиента();
Ответ.УстановитьТелоИзСтроки(СтрокаJSON);
Возврат Ответ;
КонецФункции
ПоказатьВ общем модуле ОбменСервер написал две функции:
Функция ПолучитьЗаказКлиента() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НКЗаказКлиентаТовары.Ссылка.Номер КАК НомерДокумента,
| НКЗаказКлиентаТовары.Ссылка.Дата КАК ДатаДокумента,
| НКЗаказКлиентаТовары.Ссылка.Контрагент.Наименование КАК КонтрагентНаименование,
| НКЗаказКлиентаТовары.Ссылка.Склад.Наименование КАК СкладНаименование,
| НКЗаказКлиентаТовары.Номенклатура.Наименование КАК НоменклатураНаименование,
| НКЗаказКлиентаТовары.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
| НКЗаказКлиентаТовары.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
| НКЗаказКлиентаТовары.Количество КАК Количество,
| НКЗаказКлиентаТовары.Ссылка.Контрагент.ИНН КАК КонтрагентИНН
|ИЗ
| РегистрСведений.Синхронизация КАК Синхронизация
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК НКЗаказКлиентаТовары
| ПО Синхронизация.ЗаказКлиента.Ссылка = НКЗаказКлиентаТовары.Ссылка";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Массив = Новый Массив;
Пока Выборка.Следующий() Цикл
Структура = Новый Структура("НомерДокумента, ДатаДокумента, КонтрагентНаименование, КонтрагентИНН, СкладНаименование,
|НоменклатураНаименование, ЕдиницаИзмеренияКод, ЕдиницаИзмеренияНаименование, Количество");
ЗаполнитьЗначенияСвойств(Структура, Выборка);
Массив.Добавить(Структура);
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Массив);
СтрокаJSON = ЗаписьJSON.Закрыть();
Возврат СтрокаJSON;
КонецФункции
Функция ПолучитьЗаказКлиентаСТЧ() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЧЗаказКлиента.Номер КАК Номер,
| ТЧЗаказКлиента.Дата КАК Дата,
| ТЧЗаказКлиента.Контрагент.ИНН КАК КонтрагентИНН,
| ТЧЗаказКлиента.Контрагент.Наименование КАК КонтрагентНаименование,
| ТЧЗаказКлиента.Склад.Наименование КАК СкладНаименование,
| ТЧЗаказКлиента.Товары.(
| Номенклатура.Наименование КАК НоменклатураНаименование,
| Количество КАК Количество
| ) КАК Товары
|ИЗ
| РегистрСведений.Синхронизация КАК Синхронизация
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ТЧЗаказКлиента
| ПО Синхронизация.ЗаказКлиента = ТЧЗаказКлиента.Ссылка";
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Массив = Новый Массив;
Для каждого Стр Из РезультатЗапроса Цикл
Структура = Новый Структура("Номер, Дата, КонтрагентНаименование, КонтрагентИНН, СкладНаименование");
ЗаполнитьЗначенияСвойств(Структура, СТР);
Массив.Добавить(Структура);
мТч = Новый Массив;
Для Каждого ТЧ Из РезультатЗапроса.Товары Цикл
КонецЦикла;
КонецЦикла;
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Массив);
СтрокаJSON = ЗаписьJSON.Закрыть();
Возврат СтрокаJSON;
КонецФункции
ПоказатьПри проверке работы функции GET получаю такую информацию:
[
{
"НомерДокумента": "00000000001",
"ДатаДокумента": "2025-02-14T19:08:34",
"КонтрагентНаименование": "Контрагент",
"КонтрагентИНН": "ИНН",
"СкладНаименование": "Склад готовой продукции №3",
"НоменклатураНаименование": "Шамот ША-5",
"ЕдиницаИзмеренияКод": 168,
"ЕдиницаИзмеренияНаименование": "т",
"Количество": 32
},
{
"НомерДокумента": "00000000001",
"ДатаДокумента": "2025-02-14T19:08:34",
"КонтрагентНаименование": "Контрагент",
"КонтрагентИНН": "ИНН",
"СкладНаименование": "Склад готовой продукции №3",
"НоменклатураНаименование": "Шамот ША-5",
"ЕдиницаИзмеренияКод": 168,
"ЕдиницаИзмеренияНаименование": "т",
"Количество": 33
},
{
"НомерДокумента": "00000000002",
"ДатаДокумента": "2025-03-03T08:42:29",
"КонтрагентНаименование": "Контрагент",
"КонтрагентИНН": "ИНН",
"СкладНаименование": "Склад готовой продукции №3",
"НоменклатураНаименование": "Шамот ША-5",
"ЕдиницаИзмеренияКод": 168,
"ЕдиницаИзмеренияНаименование": "т",
"Количество": 32
},
{
"НомерДокумента": "00000000002",
"ДатаДокумента": "2025-03-03T08:42:29",
"КонтрагентНаименование": "Контрагент",
"КонтрагентИНН": "ИНН",
"СкладНаименование": "Склад готовой продукции №3",
"НоменклатураНаименование": "Заполнитель шамотный 6-0 мм",
"ЕдиницаИзмеренияКод": 168,
"ЕдиницаИзмеренияНаименование": "т",
"Количество": 33
}
]
А вот при проверке функции POST ругается на конструкцию РезультатЗапроса.Товары.
Подскажите, пожалуйста, как мне вывести информацию с помощью метода POST, чтобы табличная часть группировалась по номеру документа. Или можно как-то в методе GET это сделать?
Спасибо за любую помощь
По теме из базы знаний
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Реализация простого http-сервиса "Просмотр карточки номенклатуры(товара) в браузере"
- Формирование списка документов и скачивание печатной формы документа через веб-сайт с использованием HTTP-сервиса, плюс особенности авторизации
- Как выжить, если у тебя в базе 1С 50+ расширений
- Универсальный обмен данными между конфигурациями через http-сервис
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) В результате запроса (а это таблица значений) нет и не может быть реквизита Товары. Он есть у строки табличной части. Скорее всего товары - это результат запроса. А вот как с этим работать - решайте сами.
В конце концов, как же вы все разрабатываете без отладчика то?
В конце концов, как же вы все разрабатываете без отладчика то?
(4) Фактически, я разрабатываю мало, львиная доля моей работы заключается в консультировании, написании внешних обработок и отчетов (простых). Поэтому и могу в очевидных вещах растеряться.
Но инфостарт же на то и создан, чтобы такие как я могли найти помощь или получить дельный совет, от более опытных коллег)))
Но инфостарт же на то и создан, чтобы такие как я могли найти помощь или получить дельный совет, от более опытных коллег)))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот