1с как через post метод передать массив
Перейти к содержимому

1с как через post метод передать массив

  • автор:

1с как через post метод передать массив

Нужно передать массив контрагентов в постзапросе, постзапрос делаю к сервису дадата, проверяю на контров на инн, для одного контрагента написал запрос через json, а как послать сразу несколько не понмиаю, с постзапросами да и с json работаю впервые могу что-то не понимать.

(0) Прям в жсоне и передавай массив. В чем вопрос?

адрес такой POST https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party
в заголовках указываю
Content-Type: application/json или application/xml.
Accept — аналогично.
1234567890 — API-ключ.
в параметрах передаю:
query string ИНН или ОГРН

вопрос как передать массив разных инн для проверки

(1) пробовал писать чтото такое на моменте ЗаписатьJSON падает с ошибкой
МассивДанныхJSON = Новый Массив;
СтруктураJSON = Новый Структура;
тДанные = Новый Структура;
Для Сч = 0 по массивконтров.ВГраница() Цикл
КонтрагентПро = массивконтров[Сч];
СведенияОКонтрагенте = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(КонтрагентПро, «ИНН, КПП, ЮрФизЛицо»);
КонтрагентИННПРО = СокрЛП(СведенияОКонтрагенте.ИНН);
КонтрагентКПП = СокрЛП(СведенияОКонтрагенте.КПП);
КонтрагентВид = СведенияОКонтрагенте.ЮрФизЛицо;
тДанные.Вставить(«query», КонтрагентИННПРО);
КонецЦикла;
МассивДанныхJSON.Добавить(тДанные);
СтруктураJSON.Вставить(«data», МассивДанныхJSON);
ЗаписьJSON = новый ЗаписьJSON();
ЗаписатьJSON(ЗаписьJSON, СтруктураJSON);
СтрокаJS = ЗаписьJSON.Закрыть();

Dadata ищет только по одному инн за раз
(4) то есть из вариантов только постзапрос в цикл засунуть?

(0) Читайте документацию и примеры реализации
https://dadata.ru/api/suggest/party/
Там же все по русски на писано и примеры рабочие есть, а так же все ограничение описаны. Вы указываете данные, по которым ищется организация, вам в ответе максимум 20 вариантов подходящих.

По сабжу я не увидел возможности поиска сразу нескольких организаций. (5) Нужно еще учитывать ограничения на запросы

Очень прикольный сервис, я через него переводил базу вручную вбитых адресов в классификатор и получал геокоординаты адресов.

(6) я читал, смотрел, сейчас просто реализована проверка инн через фнс и там через прокси была реализована проверка сразу нескольких контрагентов, думал можно через Json как-то через дадату также делать только без прокси, но видимо придется как-то в цикле все делать

1с как через post метод передать массив

Например, в запросе http://localhost:3000/item?product=phone&price=200 часть product=phone&price=200 будет представлять параметры запроса — product и price.
А если мы хотим передать табличку?
product1=phone1&price1=200
product2=phone2&price2=300

XML можно передавать.
SOAP

СП куплено?

HTTPСоединение.ОтправитьДляОбработки (HTTPConnection.Post)
HTTPСоединение (HTTPConnection)
ОтправитьДляОбработки (Post)
Синтаксис:

Тип: HTTPЗапрос.
HTTP-запрос.
(необязательный)

Тип: Строка.
Имя выходного файла, в который записываются полученные с сервера данные.
Если не указан или содержит пустую строку, то тело ответа может быть получено из объекта HTTPОтвет.
Возвращаемое значение:

Отправляет данные на указанный адрес для обработки при помощи HTTP-запроса POST.

Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:

// инициализируем объект для записи XML

ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла();
ОбъектЗапись = Новый ЗаписьXML;
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML(«windows-1251», , Ложь);
ОбъектЗапись.ОткрытьФайл(ИмяФайлаЗапроса, ПараметрыЗаписиXML);
ОбъектЗапись.ЗаписатьОбъявлениеXML();

// выводим корневой элемент Request

// выводим элемент ClientInfo

ОбъектЗапись.ЗаписатьНачалоЭлемента(«ClientInfo»);
ОбъектЗапись.ЗаписатьАтрибут(«email», АдресОтправителя);
ОбъектЗапись.ЗаписатьКонецЭлемента();

Если ИмяФайлаСертификата <> Неопределено Тогда

// кодируем в Base64 сертификат

ДвДанные.Прочитать(ИмяФайлаСертификата);
ФайлСертификатаBase64 = ДвДанные.ПолучитьСтрокуBase64();

// выводим элемент Certificate

ОбъектЗапись.ЗаписатьНачалоЭлемента(«Certificate»);
ОбъектЗапись.ЗаписатьТекст(ФайлСертификатаBase64);
ОбъектЗапись.ЗаписатьКонецЭлемента();

Если ИмяФайлаЗашифрованногоКонтейнера <> Неопределено Тогда

// кодируем в Base64 зашифрованный контейнер

ДвДанные.Прочитать(ИмяФайлаЗашифрованногоКонтейнера);
ФайлЗашифрованногоКонтейнераBase64 = ДвДанные.ПолучитьСтрокуBase64();

// выводим элемент Data

ОбъектЗапись.ЗаписатьНачалоЭлемента(«Data»);
ОбъектЗапись.ЗаписатьТекст(ФайлЗашифрованногоКонтейнераBase64);
ОбъектЗапись.ЗаписатьКонецЭлемента();

// записываем конец для корневого элемента

АдресСервераОнлайнПроверки = «onlinefc.taxcom.ru»;
РесурсНаСервере = «/online_fc/online_fc.dll» + ?(ПолучитьСертификат, «?IncludeCertificate», «»);

// устанавливаем соединение с сервером

Попытка
Соединение = Новый HTTPСоединение(АдресСервераОнлайнПроверки, , , , Прокси);
Исключение
Сообщить(«Не удалось установить соединение с сервером онлайн-проверки:»
+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
Возврат;
КонецПопытки;

Попытка
HTTPЗапрос = Новый HTTPЗапрос(РесурсНаСервере);
HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаЗапроса);
Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Соединение = Неопределено;
Если Результат.КодСостояния > 299 Тогда
Сообщить(«Код состояния » + Результат.КодСостояния + «. Проверка не выполнена»);
КонецЕсли;
Исключение
Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
КонецПопытки;

Передача данных методом POST с использованием JSON

Author24 — интернет-сервис помощи студентам

Добрый день. Встал очень не приятный вопрос связаный с передачей данных на сервер. Данную конструкцию тестировал в postman и все работало как надо, но 1с просто не поддается мне в этом вопросе. Если коротко выполнение данного куска кода возвращает мне 404 ошибку и файл ответ огромного содержания, его я так же приложу. Из него можно сделать вывод, что проблема в токене «mData=», но на что бы я его не заменял код ошибки не меняется. Буду рад любым советам и идеям.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
ЗаписьJSON = Новый ЗаписьJSON; тПараметрыJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет, " ", Истина); ЗаписьJSON.УстановитьСтроку(тПараметрыJSON); МассивДанныхJSON = Новый Массив; СтруктураДанныхJSON = Новый Структура; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл тДанные = Новый Структура; тДанные.Вставить("fio", Строка(ВыборкаДетальныеЗаписи.Сотрудник)); тДанные.Вставить("c1id", ВыборкаДетальныеЗаписи.СотрудникКод); ГУИД = Строка(ВыборкаДетальныеЗаписи.Сотрудник.УникальныйИдентификатор()); тДанные.Вставить("working", ИСТИНА);; тДанные.Вставить("objectId", ГУИД); тДанные.Вставить("dateOfReception", ЗаписатьДатуJSON(ВыборкаДетальныеЗаписи.Дата, ФорматДатыJSON.ISO, ВариантЗаписиДатыJSON.УниверсальнаяДата)); МассивДанныхJSON.Добавить(тДанные); КонецЦикла; СтруктураДанныхJSON.Вставить("test", МассивДанныхJSON); ЗаписатьJSON(ЗаписьJSON, СтруктураДанныхJSON); СтрокаJS = ЗаписьJSON.Закрыть(); ФайлОтвета = "C:\Users\user\Desktopтветы\answer.txt"; HTTPСоединение = Новый HTTPСоединение(АдресСервера); запросPOST = Новый HTTPЗапрос("/rest/data/entity/"+ ГУИД + "?formId=da57377d-f8f3-3242-9b4c-bfd92005794d"); запросPOST.Заголовки.Вставить("Content-type", "application/json"); запросPOST.Заголовки.Вставить("Cookie", КукиДляВхода); запросPOST.УстановитьТелоИзСтроки("mData="+СтрокаJS,"windows-1251",ИспользованиеByteOrderMark.НеИспользовать); Попытка HTTPСоединение.ОтправитьДляОбработки(запросPOST, ФайлОтвета); Результат = HTTPСоединение.Получить(запросPOST); Сообщить("Нам вернули код: " + Результат.КодСостояния); Исключение #Если клиент Тогда Сообщить(ОписаниеОшибки()); #КонецЕсли КонецПопытки;

Изображения

answer.txt (10.1 Кб, 12 просмотров)

Как передать массив через post в другой файл php

Есть масссив $places: Array ( [row1] => 1 [seet1] => 5 [row2] => 8 [seet2] => 15 [row3] => 4 [seet3] => 14 )
Как передать данный массив в другой php файл через форму?
Я пытался делать так:

И принимать их:

$data=$_POST; if(isset($data['booking']))

Но результат выводит лишь пустой массив. Я пробовал использовать json_encode и json_decode но не получалось.

Отслеживать
задан 6 дек 2020 в 16:40
5 1 1 серебряный знак 5 5 бронзовых знаков
покажите код с json_encode и json_decode
6 дек 2020 в 16:48
6 дек 2020 в 16:51
сделайте var_dump($_POST);
6 дек 2020 в 17:13
var_export($var) возвратит массив в виде, в котором PHP сможет его распознать
6 дек 2020 в 17:14
@ArchDemon используя var_dump($_POST[‘places’]); выводит:string(1) «<" 6 дек 2020 в 17:24

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Вы не можете с помощью PHP просто так взять и вставить значение таким образом value=»‘.$places.'» . Это нужно делать с помощью echo . Более того, таким образом массив таким образом тоже не передать, потому что на выходе будет строка «Array» . На помощь приходит функция json_encode() . Преобразуя массив в строку, его уже можно будет вставить в качестве значения для поля:

Обратите внимание, что аттрибут value имеет одинарные кавычки. Это связано с тем, что функция json_encode() возвращает строку с двойными кавычками и html парсер это воспример как просто фигурную кавычку, а не целую, нужную нам строку. В файле result.php мы с помощью функции json_decode() преобразуем нашу строку в объект\массив

Итого — файл с формой:

 21]; // ваш массив?> '> 

result.php:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *