1с http-сервис выгрузка данных

1. applesound 1 06.07.20 15:06 Сейчас в теме
Добрый день. Получаю данные контрагентов из конфигурации Бухгалтерия предприятия 3.0.79.11 с помощью http-сервиса.
1. HTTP-Сервис
Имя: Контрагент
Синоним: Контрагент
Корневой URL: partner
2. Шаблон
Имя: ПоискИНН
Синоним: ПоискИНН
Шаблон: /search
3. Метод
Имя: SearchPartner
Синоним: Search partner
HTTP-метод: POST
Обработчик:
Функция ПоискИННSearchPartner(Запрос)
		//Формируем массив контрагентов
	Контрагенты = Справочники.Контрагенты.Выбрать();
	МассивКонтрагентов = Новый Массив;
	Пока Контрагенты.Следующий()Цикл
		ДанныеКонтрагентов = Новый Структура;
		ДанныеКонтрагентов.Вставить("Code", Контрагенты.Код);
		ДанныеКонтрагентов.Вставить("Inn", Контрагенты.ИНН);
		ДанныеКонтрагентов.Вставить("Name", Контрагенты.Наименование);
		ДанныеКонтрагентов.Вставить("FullName",Контрагенты.НаименованиеПолное);
		МассивКонтрагентов.Добавить(ДанныеКонтрагентов);
	КонецЦикла;
	
	//Сериализуем массив в JSON
	 ЗаписьJOIN = Новый ЗаписьJSON;
     ЗаписьJOIN.УстановитьСтроку();
     ЗаписатьJSON(ЗаписьJOIN,МассивКонтрагентов);
     СтрокаДляОтвета = ЗаписьJOIN.Закрыть();
	 
	 //Формируем ответ веб-клиенту
	 Ответ = Новый HTTPСервисОтвет(200);
     Ответ.Заголовки.Вставить("Content-type","application/JOIN; charset=utf-8");
     Ответ.УстановитьТелоИзСтроки(СтрокаДляОтвета,КодировкаТекста.UTF8,
     ИспользованиеByteOrderMark.НеИспользовать);
     Возврат Ответ;
КонецФункции
Показать


При выборе HTTP-метод: POST ничего не выгружается.
При смене HTTP-метод: POST на GET получаю ошибку {HTTPСервис.Контрагент.Модуль(18)}: Ошибка при вызове метода контекста (ЗаписатьJSON).
При смене HTTP-метод: POST на GET и в структуре ДанныеКонтрагентов оставляю только Код и Наименование выгрузка проходит. Не выгружается ИНН и НаименованиеПолное
Как выгрузить все записи структуры?
По теме из базы знаний
Найденные решения
4. andy_zhav 197 06.07.20 15:30 Сейчас в теме
(3) Извиняюсь. Всегда забываю что это: метод или свойство. Конечно нужно без скобок писать:

Если Контрагенты.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
applesound; +1 Ответить
5. andy_zhav 197 06.07.20 15:35 Сейчас в теме
А вообще - при работе с данными в HTTP сервисе всегда проверяйте типы, с которыми работаете. http сервисы позволяют работать только с примитивными данными: строка, число, булево (не уверен на 100% на счет него). В вашем случае скорее всего для групп справочника 1с возвращает неопределено для ИНН и полного наименования, что критично для http ответа.

Для JSON аналогично
applesound; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. andy_zhav 197 06.07.20 15:11 Сейчас в теме
(1) Как вариант:
Контрагенты = Справочники.Контрагенты.Выбрать();
МассивКонтрагентов = Новый Массив;
Пока Контрагенты.Следующий()Цикл
Если Контрагенты.ЭтоГруппа() Тогда
Продолжить;
КонецЕсли;
ДанныеКонтрагентов = Новый Структура;
ДанныеКонтрагентов.Вставить("Code", Контрагенты.Код);
ДанныеКонтрагентов.Вставить("Inn", Контрагенты.ИНН);
ДанныеКонтрагентов.Вставить("Name", Контрагенты.Наименование);
ДанныеКонтрагентов.Вставить("FullName",Контрагенты.НаименованиеПолное);
МассивКонтрагентов.Добавить(ДанныеКонтрагентов);
КонецЦикла;
Показать
3. applesound 1 06.07.20 15:26 Сейчас в теме
(2){HTTPСервис.Контрагент.Модуль(7)}: Метод объекта не обнаружен (ЭтоГруппа)
4. andy_zhav 197 06.07.20 15:30 Сейчас в теме
(3) Извиняюсь. Всегда забываю что это: метод или свойство. Конечно нужно без скобок писать:

Если Контрагенты.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
applesound; +1 Ответить
6. applesound 1 06.07.20 15:41 Сейчас в теме
(4) Спасибо!!! Завелось. На ЭтоГруппа я и забыл проверить.
5. andy_zhav 197 06.07.20 15:35 Сейчас в теме
А вообще - при работе с данными в HTTP сервисе всегда проверяйте типы, с которыми работаете. http сервисы позволяют работать только с примитивными данными: строка, число, булево (не уверен на 100% на счет него). В вашем случае скорее всего для групп справочника 1с возвращает неопределено для ИНН и полного наименования, что критично для http ответа.

Для JSON аналогично
applesound; +1 Ответить
7. applesound 1 06.07.20 15:44 Сейчас в теме
(5)Вы правы. В запросе обычно проверяю на отсутствие значения - уже в привычку вошло, а с http-сервисами только недавно столкнулся.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот