|   |   | 
| 
 | Нужно создать в 1С массив-структур в формате json | ☑ | ||
|---|---|---|---|---|
| 0
    
        Обработка 24.11.21✎ 09:11 | 
        Вот структра кторая требуется:
 "route_points": [ { "coordinates": [71.40182314019768,51.13285146954383] }, { "coordinates":[71.50529418933989,51.13162822572868] } ] route_points N-значный массив. Этот массив в которм, структура из двух двухзначных массивов в которых хранится точки координат (долгота и широта) отправки и поступления. Как это реализовывать? | |||
| 1
    
        Kassern 24.11.21✎ 09:14 | 
        (0) Присваиваете имя массиву, Для каждой coordinates добавляете начало объекта, в объекте снова массив с именем coordinates, в нем уже пихаете точки.     | |||
| 2
    
        Галахад гуру 24.11.21✎ 09:16 | 
        МассивКоодр = Новый Массив;
 МассивКоорд.Добавить(а); МассивКоорд.Добавить(б); Коорд = Новый Структура; Коорд.Вставить("coordinates", МассивКоорд); route_points = Новый Массив; route_points.Добавить(МассивКоорд); | |||
| 3
    
        Kassern 24.11.21✎ 09:17 | 
        (0) чтобы было проще понимать:
 [ - Массив { - объект | |||
| 4
    
        Галахад гуру 24.11.21✎ 09:19 | 
        (2)+ Млин:
 МассивКоодр = Новый Массив; МассивКоорд.Добавить(а); МассивКоорд.Добавить(б); Коорд = Новый Структура; Коорд.Вставить("coordinates", МассивКоорд); route_points = Новый Массив; route_points.Добавить(Коорд); | |||
| 5
    
        Галахад гуру 24.11.21✎ 09:22 | 
        Да млин.
 Структура = Новый Структура; Структура.Вставить("route_points", route_points); | |||
| 6
    
        Обработка 24.11.21✎ 09:39 | 
        Спасибо за помощь и ответы.
 Но мне кажется не совсем то. Вместо 2х координат получается один. | |||
| 7
    
        Галахад гуру 24.11.21✎ 09:41 | 
        (6) Напрягись и добавь еще одну.     | |||
| 8
    
        mTema32 24.11.21✎ 09:50 | 
        Вот это: "coordinates": [71.40182314019768,51.13285146954383]
 Стандартными средствами не получится сделать, если прямо так нужно с квадратными скобками. Пилите вручную. | |||
| 9
    
        Garykom гуру 24.11.21✎ 09:50 | 
        (0) не можешь через структуры (соответствия) и массивы делай напрямую через ЗаписьJSON
 https://wonderland.v8.1c.ru/blog/sredstva-raboty-s-json/ | |||
| 10
    
        Garykom гуру 24.11.21✎ 09:52 | 
        (8) все получится     | |||
| 11
    
        Garykom гуру 24.11.21✎ 09:53 | 
        (10) http://v8.1c.ru/o7/201410json/4.png из (9)     | |||
| 12
    
        ДенисЧ 24.11.21✎ 09:55 | 
        (8) Это с какого перепугу?     | |||
| 13
    
        Галахад гуру 24.11.21✎ 09:58 | 
        (9) Не учи плохому. :-)     | |||
| 14
    
        Garykom гуру 24.11.21✎ 09:59 | 
        (13) практически это более шустрый способ     | |||
| 15
    
        Garykom гуру 24.11.21✎ 10:00 | 
        (14)+ на реально больших объемах с мало оперативки особенно оптимальней вручную напрямую     | |||
| 16
    
        Kassern 24.11.21✎ 10:01 | 
        (0) А где у вас начало объекта?
 Нельзя начинать json с имени свойства на обернув это дело в объект! | |||
| 17
    
        Kassern 24.11.21✎ 10:02 | 
        (16) Вот так будет правильно:
 { "route_points": [{ "coordinates": [71.40182314019768, 51.13285146954383] }, { "coordinates": [71.50529418933989, 51.13162822572868] } ] } | |||
| 18
    
        Kassern 24.11.21✎ 10:07 | 
        (6) Ну так добавьте 2 координаты) 
 route_points = Новый Массив; route_points.Добавить(Коорд); route_points.Добавить(Коорд); | |||
| 19
    
        Гипервизор 24.11.21✎ 10:13 | 
        Т.е. я правильно понимаю, для примера из (0) формирование json без использования сериализации будет выглядеть вот так?
 ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписьJSON.ЗаписатьНачалоОбъекта(); ЗаписьJSON.ЗаписатьИмяСвойства("route_points"); ЗаписьJSON.ЗаписатьНачалоМассива(); ЗаписьJSON.ЗаписатьНачалоОбъекта(); ЗаписьJSON.ЗаписатьИмяСвойства("coordinates"); ЗаписьJSON.ЗаписатьНачалоМассива(); ЗаписьJSON.ЗаписатьЗначение(71.40182314019768); ЗаписьJSON.ЗаписатьЗначение(51.13285146954383); ЗаписьJSON.ЗаписатьКонецМассива(); ЗаписьJSON.ЗаписатьКонецОбъекта(); ЗаписьJSON.ЗаписатьНачалоОбъекта(); ЗаписьJSON.ЗаписатьИмяСвойства("coordinates"); ЗаписьJSON.ЗаписатьНачалоМассива(); ЗаписьJSON.ЗаписатьЗначение(71.50529418933989); ЗаписьJSON.ЗаписатьЗначение(51.13162822572868); ЗаписьJSON.ЗаписатьКонецМассива(); ЗаписьJSON.ЗаписатьКонецОбъекта(); ЗаписьJSON.ЗаписатьКонецМассива(); ЗаписьJSON.ЗаписатьКонецОбъекта(); СтрокаJSON = ЗаписьJSON.Закрыть(); | |||
| 20
    
        Kassern 24.11.21✎ 10:16 | 
        (19) да, только ТС забыл обернуть свой текст в {} чтобы превратить в json.     | |||
| 21
    
        mTema32 24.11.21✎ 10:20 | 
        (0)
 Если вот это "[12.121, 1222]" - просто строка, тогда вот так надо: СтруктураОсновная = Новый Структура; Массив = Новый Массив; СтруктураЭлемента1 = Новый Структура; СтруктураЭлемента1.Вставить("coordinates", "[71.263,12.3213]"); СтруктураЭлемента2 = Новый Структура; СтруктураЭлемента2.Вставить("coordinates", "[71.263,12.3213]"); Массив.Добавить(СтруктураЭлемента1); Массив.Добавить(СтруктураЭлемента2); СтруктураОсновная.Вставить("route_points", Массив); ЗаписьJSON = Новый ЗаписьJSON(); ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, СтруктураОсновная); Json = ЗаписьJSON.Закрыть(); Циклы там и обход сами добавите. | |||
| 22
    
        Kassern 24.11.21✎ 10:24 | 
        (21) вы походу не уловили суть данного json. в coordinates передается массив координат. Скобки [] - говорят о массиве значений, а запятая разделяет их. В данном случае 71.263 и 12.3213 - две точки координат.     | |||
| 23
    
        Garykom гуру 24.11.21✎ 10:25 | 
        (21) ыыыыыы     | |||
| 24
    
        Kassern 24.11.21✎ 10:25 | 
        (21) уже скинули верный текст, которые правильно формирует json еще в начале топика. Вот он собранный в 1 посте:
 МассивКоорд = Новый Массив; МассивКоорд.Добавить("71.40182314019768"); МассивКоорд.Добавить("51.13285146954383"); Коорд = Новый Структура; Коорд.Вставить("coordinates", МассивКоорд); route_points = Новый Массив; route_points.Добавить(Коорд); route_points.Добавить(Коорд); Структура=Новый Структура("route_points",route_points); ЗаписьJson=Новый ЗаписьJSON; ЗаписьJson.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJson,Структура); Результат=ЗаписьJson.Закрыть(); | |||
| 25
    
        Обработка 24.11.21✎ 10:37 | 
        Уточню для тез кто чуть ушел не в ту сторону.
 Мне нужно чтоб внутри были две точки "Пункт Отправитель" и "Пункт получатель" | |||
| 26
    
        mistеr 24.11.21✎ 10:40 | 
        (22) >две точки координат
 Ты хотел сказать "две координаты точки". | |||
| 27
    
        Garykom гуру 24.11.21✎ 10:59 | 
        для меня немного странно что человек с таким вот опытом v8: Ищу работу (Казахстан, Алматы)
 не может понять простейшую вещь | |||
| 28
    
        Garykom гуру 24.11.21✎ 10:59 | ||||
| 29
    
        Обработка 24.11.21✎ 11:05 | 
        (27) Открою тайну. Самому некогда тестить и придумывать.
 По сути ветка и тема моей коллеги. У нее нет аккаунта тут и особо не ходит по форумам пока. Извините если пришлось поэксплуатировать ваши мозги. )) | |||
| 30
    
        Обработка 24.11.21✎ 11:06 | 
        (29)  к (28)...     | |||
| 31
    
        Garykom гуру 24.11.21✎ 11:08 | 
        (29) Т.е. ты с таким опытом не мог с лету ответить коллеге и завел тут тему? На смешную тему.     | |||
| 32
    
        mTema32 24.11.21✎ 11:09 | 
        (25) Сч = 4;
 ОсновнойМассив = Новый Массив; Пока Сч > 0 Цикл СтруктураОсновная = Новый Структура; Массив = Новый Массив; МассивКоординат1 = Новый Массив; МассивКоординат1.Добавить("71.263"); МассивКоординат1.Добавить("12.3213"); МассивКоординат2 = Новый Массив; МассивКоординат2.Добавить("71.265"); МассивКоординат2.Добавить("12.3215"); СтруктураЭлемента1 = Новый Структура; СтруктураЭлемента1.Вставить("coordinates", МассивКоординат1); СтруктураЭлемента2 = Новый Структура; СтруктураЭлемента2.Вставить("coordinates", МассивКоординат2); Массив.Добавить(СтруктураЭлемента1); Массив.Добавить(СтруктураЭлемента2); СтруктураОсновная.Вставить("route_points", Массив); ОсновнойМассив.Добавить(СтруктураОсновная); Сч = Сч - 1; КонецЦикла; ЗаписьJSON = Новый ЗаписьJSON(); ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, ОсновнойМассив); Json = ЗаписьJSON.Закрыть(); Вот так што ле надо? | |||
| 33
    
        mTema32 24.11.21✎ 11:10 | 
        (29) Охеренно. А нам тут нечем заняться стало быть.     | |||
| 34
    
        acht 24.11.21✎ 11:10 | 
        (29) > ветка и тема моей коллеги.
 Еще одно ленкавовка | |||
| 35
    
        Обработка 24.11.21✎ 11:13 | 
        (31) (33) Когда вам будет уже 50 лет у вас подход к решению задач точно изменится.     | |||
| 36
    
        acht 24.11.21✎ 11:15 | 
        (35) Оправдание своим возрастом, оно такое... забавное     | |||
| 37
    
        Garykom гуру 24.11.21✎ 11:16 | 
        (35) Мне думаешь еще 9 лет что то сильно изменят?
 Нет уж. Вайтишник это диагноз. | |||
| 38
    
        acht 24.11.21✎ 11:17 | 
        (35) Кстати, а кто это пишет - ты или твоя коллега? =))))))))))))     | |||
| 39
    
        Garykom гуру 24.11.21✎ 11:20 | 
        (38) "У моей подруги с её парнем"     | |||
| 40
    
        Обработка 24.11.21✎ 11:22 | 
        Ну вы не позортье меня перед ней.
 Ей 20 лет мне 50. Эту аккаунт полностью мой. Всегда сам писал и отвечал. Аналогичным образом решал проблему коллег не раз за эти 15 лет. Кстати я коллеге на словах сразу ответил но не было 100% уверенности. И обратился к сообществу. Ничего в этом не вижу зазорного. Иногда могу тут запостить совсем тупой вопрос просто из-за того что не успеваю продумать... Конечно хейта тоже получаю. Но главное решается задача. | |||
| 41
    
        mistеr 24.11.21✎ 11:24 | 
        (33) Если быть до конца честным, то да, так и есть. :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |