Имя: Пароль:
1C
1С v8
Нужно создать в 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
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) Если быть до конца честным, то да, так и есть. :)