| 
    
            
         
         | 
    
    
  | 
Преобразование массива структур в таблицу значений | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        NordMad    
     19.04.21 
            ✎
    18:47 
 | 
         
        Добрый вечер, интересует такой вопрос: читал строку JSON таким вот образом
 
        Функция ИзСтрокиВJSON(СтрокаОтвета)//Экспорт ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.УстановитьСтроку(СтрокаОтвета); ОтветВJSON=ПрочитатьJSON(ЧтениеJSON); ЧтениеJSON.Закрыть(); Возврат ОтветВJSON; КонецФункции В результате получил структуру, некоторые атрибуты которой распарсились в массив структур типа: (имя; значение). Что достаточно неудобно в смысле поиска. Непонятно почему не считывается соответствием. Вопрос, как можно такую структуру преобразовать в соответствие или таблицу значений для быстрого поиска? или может быть как то иначе можно прочитать строку JSON исходную  | 
|||
| 
    1
    
        NordMad    
     19.04.21 
            ✎
    18:48 
 | 
         
        (0) понятно что циклами можно, вопрос в том - можно это как то сделать оптимально? структура получилась большая и таких вот атрибутов -массивов в ней много     
         | 
|||
| 
    2
    
        Chameleon1980    
     19.04.21 
            ✎
    19:09 
 | 
         
        там, вроде каким-то параметром указывается, что
 
        читать в соответствие  | 
|||
| 
    3
    
        NordMad    
     19.04.21 
            ✎
    19:10 
 | 
         
        (2) ОтветВJSON=ПрочитатьJSON(ЧтениеJSON); здесь?     
         | 
|||
| 
    4
    
        acht    
     19.04.21 
            ✎
    19:18 
 | 
         
        (3) Давно бы уже синтакс-помощник открыл.     
         | 
|||
| 
    5
    
        novichok79    
     19.04.21 
            ✎
    19:58 
 | 
         
        // Возвращает таблицу значений на основании массива структур
 
        // // Параметры: // МассивСтруктур - МассивСтруктур - массив структур, которые будут преобразованы в таблиц значений. // Свойства структуры первого элемента массива определяют состав колонок результирующей таблицы. // // Возвращаемое значение: // ТаблицаЗначений - таблица значений, созданная из массива структур. // Функция МассивВТаблицуЗначений(МассивСтруктур) Экспорт Таблица = Новый ТаблицаЗначений; // Создадим колонки по первой структуре массива Если ТипЗнч(МассивСтруктур) = Тип("Массив") И МассивСтруктур.Количество() <> 0 Тогда ПерваяСтруктура = МассивСтруктур[0]; Для Каждого Свойство Из ПерваяСтруктура Цикл Таблица.Колонки.Добавить(Свойство.Ключ, ОписаниеТиповПоТипу(ТипЗнч(Свойство.Значение))); КонецЦикла; Для Каждого Структура Из МассивСтруктур Цикл НоваяСтрока = Таблица.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Структура); КонецЦикла; КонецЕсли; Возврат Таблица; КонецФункции  | 
|||
| 
    6
    
        novichok79    
     19.04.21 
            ✎
    20:03 
 | 
         
        (1) через какие-нибудь преобразования json-строки можно перевести в что-то подобное СериализаторXDTO.ЗаписатьJSON, а затем сделать СериализаторXDTO.ПрочитатьJSON. но непонятно что будет быстрее - ё**бля со строкой или перевод вышеописанной функцией. чуваки, которые писали ERP выбрали последний вариант, научитесь уже пользоваться глобальным поиском по конфигурации, найдете много интересного.     
         | 
|||
| 
    7
    
        NordMad    
     19.04.21 
            ✎
    22:25 
 | 
         
        (4) а подробнее? я не нашел     
         | 
|||
| 
    8
    
        NordMad    
     19.04.21 
            ✎
    22:28 
 | 
         
        (6) ну так получается что вы то тоже нашли только вариант обхода массива циклами. Это итак понятно что можно сделать, но выглядит громоздко. В том то и заключался вопрос - есть ли способ сделать это оптимально, например сразу при чтении строки JSON получить вместо массива структур соответствие, или возможно средствами платформы сделать преобразование.     
         | 
|||
| 
    9
    
        novichok79    
     19.04.21 
            ✎
    23:17 
 | 
         
        (8) как я помню - 1С не предоставляет способа конвертации набора значений, он дает повесить только свои обработчики при чтении JSON, а на выходе все равно получается структура или соответствие.
 
        можно взять полученное из ПрочитатьJSON соответствие, сериализовать в XML, потом натравить ПреобразованиеXSL на него, потом прочитать обратно в объект - получится таблица значений. в любом случае, придется помучаться.  | 
|||
| 
    10
    
        novichok79    
     19.04.21 
            ✎
    23:18 
 | 
||||
| 
    11
    
        vde69    
     20.04.21 
            ✎
    07:27 
 | 
         
        JSON нужен правильный объект и каждый элемент массив     
         | 
|||
| 
    12
    
        NordMad    
     20.04.21 
            ✎
    09:36 
 | 
         
        (9) выходит что такой вариант тоже танцы с бубнами..     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |