|   |   | 
| 
 | v7: Передача JSON в API, в BOXBERY. У кого каким образом получалось? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Владимир1С 09.08.17✎ 12:50 | 
        Сообщение, собственно, в теме. Загвоздка , в данный момент, в передаче массива массивов, то есть в передаче спецификации(табличной части). Каким образом что там объявлять?     | |||
| 1
    
        Владимир1С 09.08.17✎ 12:53 | 
        Поддержка от боксберри тупо написала, что мне нужно учить JSON, и пока от неё внятного ответа добиться не удалось. Может быть, кто нибудь здесь уже решал подобную задачу?     | |||
| 2
    
        Sserj 09.08.17✎ 12:55 | 
        (1) Ну собственно правильно же написали - учить JSON. 
 :) Это же обычный текстовый файлик. Бери форматируй и посылай. | |||
| 3
    
        v77 09.08.17✎ 12:57 | 
        (2) да вы все сговорились     | |||
| 4
    
        Владимир1С 09.08.17✎ 12:59 | 
        Форматирую и посылаю. В ответ получаю одну общую фразу: "  Ошибка входящих данных. Не удалось преобразовать JSON строку обратно в массив."
 Никаких подробностей, в каком поле ошибка, ничего. и как его понять? | |||
| 5
    
        Numerus Mikhail 09.08.17✎ 12:59 | ||||
| 6
    
        Владимир1С 09.08.17✎ 13:02 | 
        (5) Видимо нет, но понять где не так, сервер мне не даёт. Поэтому, собственно, я и здесь.     | |||
| 7
    
        Владимир1С 09.08.17✎ 13:02 | 
        (5) Пишу я на 7.7, если что. не на 8.х     | |||
| 8
    
        v77 09.08.17✎ 13:03 | 
        (7) ну так показывай свой JSON уже     | |||
| 9
    
        Владимир1С 09.08.17✎ 13:04 | 
        {
 "token" : "10000.rbpqbafb", "updateByTrack" : "0", "order_id" : "Из-ЦО-0042601", "PalletNumber" : "0", "barcode" : "0", "price" : 4741, "payment_sum" : 4741, "delivery_sum" : 0, "vid" : 1, "Shop" : { "name" : "", "name1" : "" }, "customer" : { "fio" : "Мизерак Иван Иосифович", "Phone" : "9153919582", "Phone2" : "9153919582", "email" : "", "name" : "Мизерак Иван Иосифович", "adress" : "М.о.,ЛМС, Центральный, д.9,кв.19", "inn" : "", "kpp" : "", "r_s" : "", "bank" : "", "kor_s" : "", "bik" : "" }, "kurdost" : { "index" : "", "city" : "", "addressp" : "", "timesfrom1" : "", "timesto1" : "", "timesfrom2" : "", "timesto2" : "", "timep" : "", "comentk" : "" }, "items" : { "1" : { "id" : "8060", "name" : "варежки жен 8060 OCEAN", "UnitName" : "шт.", "nds" : "18", "price" : "290", "quantity" : "1" }, "2" : { "id" : "2035", "name" : "шапка муж 2035 MIDNIGHT", "UnitName" : "шт.", "nds" : "18", "price" : "790", "quantity" : "1" }, "3" : { "id" : "4000", "name" : "Кошелек Mano 20100 SETRU dark blue, Размер: 2.5 * 10 * 18.5 см, цвет: темно-синий", "UnitName" : "шт.", "nds" : "18", "price" : "3661", "quantity" : "1" } }, "weights" : { "weight" : 0.466, "barcode" : "", "weight2" : "0", "barcode2" : "", "weight3" : "0", "barcode3" : "", "weight4" : "0", "barcode4" : "", "weight5" : "0", "barcode5" : "" } } | |||
| 10
    
        Sserj 09.08.17✎ 13:06 | 
        (9) Ну сразу в глаза бросается - массивы не фигруными скобками а квадратными обрамляются.     | |||
| 11
    
        Владимир1С 09.08.17✎ 13:08 | 
        (10) : расшифровка, присланная поддержкой Боксберри:
 Регина Галимова http://prntscr.com/g5tb9w Образец массива на PHP: $SDATA=array(); $SDATA['updateByTrack']='Трекинг-код ранее созданной посылки'; $SDATA['order_id']='ID заказа в ИМ'; $SDATA['PalletNumber']='Номер палеты'; $SDATA['barcode']='Штрих-код заказа'; $SDATA['price']='Объявленная стоимость'; $SDATA['payment_sum']='Сумма к оплате'; $SDATA['delivery_sum']='Стоимость доставки'; $SDATA['vid']='Тип доставки (1/2)'; $SDATA['weights']=array( 'weight'=>'Вес 1-ого места', 'barcode'=>'Баркод 1-го места', 'weight2'=>'Вес 2-ого места', 'barcode2'=>'Баркод 2-го места', 'weight3'=>'Вес 3-его места', 'barcode3'=>'Баркод 3-го места', 'weight4'=>'Вес 4-ого места', 'barcode4'=>'Баркод 4-го места', 'weight5'=>'Вес 5-ого места', 'barcode5'=>'Баркод 5-го места' ); В JSON будет иметь вид: { "updateByTrack":"Трекинг-код ранее созданной посылки", "order_id":"ID заказа в ИМ", "PalletNumber":"Номер палеты", "barcode":"Штрих-код заказа", "price":"Объявленная стоимость", "payment_sum":"Сумма к оплате", "delivery_sum':'Стоимость доставки", "vid":"Тип доставки (1/2)", "weights":{ "weight":"Вес 1-ого места", "barcode":"Баркод 1-го места", "weight2":"Вес 2-ого места", "barcode2":"Баркод 2-го места", "weight3":"Вес 3-его места", "barcode3":"Баркод 3-го места", "weight4":"Вес 4-ого места", "barcode4":"Баркод 4-го места", "weight5":"Вес 5-ого места", "barcode5":"Баркод 5-го места" } } | |||
| 12
    
        Владимир1С 09.08.17✎ 13:08 | 
        Скобки фигурные.     | |||
| 13
    
        spock 09.08.17✎ 13:09 | 
        (0) Учи JSON: http://jsoneditoronline.org/     | |||
| 14
    
        Владимир1С 09.08.17✎ 13:11 | 
        (10) - а как же тогда имена полей-элементов массива JSON ? Разве квадратные скобки предполагают наличие имён?     | |||
| 15
    
        spock 09.08.17✎ 13:18 | 
        Скорее всего должно быть так:
 "weights":[ {"weight":"Вес 1-ого места", "barcode":"Баркод 1-го места"}, {"weight":"Вес 2-ого места", "barcode":"Баркод 2-го места"}, {"weight":"Вес 3-его места", "barcode":"Баркод 3-го места"}, {"weight":"Вес 4-ого места", "barcode":"Баркод 4-го места"}, {"weight":"Вес 5-ого места", "barcode":"Баркод 5-го места"} ] | |||
| 16
    
        Sserj 09.08.17✎ 13:18 | 
        (14) Да нет, но ты в 0 написал - передача массива массивов. Поэтому и ищу у тебя [].
 А теперь уточняется что это не массивы а наборы объектов передаются. | |||
| 17
    
        Владимир1С 09.08.17✎ 13:21 | 
        (15) С чего бы? Поддержка прислала 
 "weights":{ "weight":"Вес 1-ого места", "barcode":"Баркод 1-го места", "weight2":"Вес 2-ого места", "barcode2":"Баркод 2-го места", "weight3":"Вес 3-его места", "barcode3":"Баркод 3-го места", "weight4":"Вес 4-ого места", "barcode4":"Баркод 4-го места", "weight5":"Вес 5-ого места", "barcode5":"Баркод 5-го места" } | |||
| 18
    
        Владимир1С 09.08.17✎ 13:34 | 
        А как понимать вот это: ? 
 Регина Галимова Добрый день array( array(), array(), array(), array(), array(), ) Эквивалент: array( "0" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), "1" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), "2" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), "3" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), "4" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), ) | |||
| 19
    
        Владимир1С 09.08.17✎ 13:35 | 
        По схеме  "items":{"0":{ .....},"1":{......}  }   ?     | |||
| 20
    
        Владимир1С 09.08.17✎ 13:37 | 
        Может быть, здесь есть кто нибудь, кто работал с JSON c Boxberry?     | |||
| 21
    
        Numerus Mikhail 09.08.17✎ 13:58 | 
        (20) Вообще странно тогда, ваш JSON выглядит вполне рабочим.
 Да и парсеры его нормально съедают. Возможно вы просто не посылаете те поля, которые нужны другой стороне? | |||
| 22
    
        Владимир1С 09.08.17✎ 14:07 | 
        (21) Так... Версию об отсутствии необходимых полей мы сейчас проверим.     | |||
| 23
    
        v77 09.08.17✎ 14:18 | 
        мож число в ковычки записать?
 "weight" : 0.466, "barcode" : "", "weight2" : "0", "barcode2" : "", | |||
| 24
    
        v77 09.08.17✎ 14:20 | 
        а то чота половина в ковычках половина нет     | |||
| 25
    
        Владимир1С 09.08.17✎ 14:23 | 
        (24)В кавычках было всё. Ответ - с ошибкой.     | |||
| 26
    
        Бубр 09.08.17✎ 17:43 | 
        (18) ты бы для начала запрос  свой к серваку потестил   в строке браузера...  а дальше уже бы и код  написал     | |||
| 27
    
        Бубр 09.08.17✎ 17:44 | 
        (20)  к Wialon  подключался.     | |||
| 28
    
        Бубр 09.08.17✎ 17:46 | 
        (18) json  это  структуры  пар  ключ:значение     | |||
| 29
    
        PLUT гуру 09.08.17✎ 17:48 | 
        (0) проверяй свой "жейсон" в отладчике браузера гугл хрома на валидность (кнопка F12), закладка Concole и копипаста твоего сформированного текста в 1С7.7     | |||
| 30
    
        d4rkmesa 09.08.17✎ 22:04 | 
        Может, вам стоит накидать в 8.3 "рыбу" обработки, формирующую валидный тестовый файл (заполнение через объект Записьjson много времени не займет) и сравнить с тем, что у вас получается в 7ке?     | |||
| 31
    
        dmitryds 09.08.17✎ 23:17 | 
        (0) попросите пример валидного файла...
 мне кажется в items дело items:[ { "id" : "8060", "name" : "варежки жен 8060 OCEAN", "UnitName" : "шт.", "nds" : "18", "price" : "290", "quantity" : "1" }, { "id" : "2035", "name" : "шапка муж 2035 MIDNIGHT", "UnitName" : "шт.", "nds" : "18", "price" : "790", "quantity" : "1" }, { "id" : "4000", "name" : "Кошелек Mano 20100 SETRU dark blue, Размер: 2.5 * 10 * 18.5 см, цвет: темно-синий", "UnitName" : "шт.", "nds" : "18", "price" : "3661", "quantity" : "1" } ] | |||
| 32
    
        dmitryds 09.08.17✎ 23:23 | 
        +
 weights - правильно, если именованный массив({"a":"1","b":"2"}), то только в {}, если обычный массив [0,1,2,3, {"2":3},{"f":"22"}] тогда в [] еще стоит проверить, что бы в начале файла не было символов до { | |||
| 33
    
        Владимир1С 10.08.17✎ 16:31 | 
        Разобрались.  
 Надо было вот так: ТокенАвторизации="10000.rbpqbafb"; Метод="ParselCreate"; ДанныеЗаказаУТФ8=глСлужебныеСкрипты.Run("encodeURIComponent",ДанныеЗаказаJSON); ТелоЗапроса="token="+ТокенАвторизации+"&method="+Метод+"&sdata="+ДанныеЗаказаУТФ8; ВинХТТП=глПолучитьОбъектВинХТТП(); ВинХТТП.Open("POST",АдресСкрипта,0); ВинХТТП.SetRequestHeader("Content-Language","ru"); ВинХТТП.SetRequestHeader("Content-Charset","utf-8"); ВинХТТП.SetRequestHeader("Content-Type","application/x-www-form-urlencoded"); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |