#0
by olegon7
Здравствуйте, подскажите как реализовать иерархию в json. от сервиса буду получать ответ в формате json. данные в нем связаны иерархически. Данные записаны в json массивом. На основе этих данных буду строить отчет с группировкой.
#4
by DrShad
тоже сейчас вштырили всякие json? php и иже с ними для создания json данных пользую обработку 1С:JSON. JavaScript Object Notation парсер и сериализатор.
#7
by olegon7
принимаю json преобразовываю в тз , тз использую как внешний источник для построения отчета в скд
#8
by olegon7
в отчете обычная группировка. т.е. Подстанция __________Фидер _______________ТП т.е . элемент коллекции может быть одним из этих значений
#9
by DrShad
так тут не 1С-ский сервис, а внешний и как на внешнем ресурсе отражена иерархия? да и зачем в СКД пихать иерархию если ее можно в самой СКД построить как угодно
#11
by Ластик
Массив в массиве приходит, если я правильно понял вопрос, таким образом в json иерархия и строится как я понял. Сам не писал приходилось обмен допиливать где именно так дело было, приходил файл с вложенными массивами.
#12
by DrShad
у тебя же есть ChildNode и ParentNode в СКД создаешь набор данных и соединяешь его сам с собой по ChildNode = ParentNode
#18
by AceVi
Че вы огород городите. Все уже давно придумано за вас - реквизит Родитель в нем указываешь УИД или Код что там у тебя есть и все. Вот вообще не понятно как у тебя из ТЗ иерархия получается. Что то ты недоговариваешь.
#19
by Torquader
Нет, а в чём проблема передачи иерархии ? У каждого элемента есть массив дочерних - назовём его Children и всё. Вот когда нужно будет передать граф или группу, тогда придётся уже искать идентификаторы и чесать репу. Аналогом иерархии можно рассматривать объект ДеревоЗначений из 1С - оно должно успешно сериализоваться в JsOn.
#20
by olegon7
т.е . 2 создать набора данных (тз) , запихнуть его в скд. И соединить эти 2 набора по связи ChildNode = ParentNode левым соединением? я правильно понял?
#21
by olegon7
структура json {"Items":[{"ObjectType":"Фидер","ObjectCode":"1253-ав-2332","ObjectName":"10 кВ Ф-662","TimeStamp":"01.06.2015","PreviousValue":423423,"NextValue":254235,"Difference":null,"ParentCode":4376-ап-232}, ... вот этот json преобразуется в массив. массив в скд не передашь. как поменять структуру json что бы получилась тз? если элемент верхнего уровня ParentCode какое должен иметь значение "" или null?
#24
by olegon7
в скд можно соединять наборы только левы соединением насколько я помню.... почему не массив.... Вот так я получаю ответ от сервиса Строка=Ответ.ПолучитьТелоКакСтроку("UTF-8"); Items это массив как раз таки
#25
by AceVi
А если там не 1 уровень подчиненности а 3? Иерархия строиться только в рекурсии и не в запросах. В запросах можно использовать только заранее созданную иерархию в справочниках. Ок Items - массив - а в массиве что храниться? а там Структура - потому что у каждого элемента помимо значения есть наименованиеключ.
#27
by DrShad
а по фигу сколько уровней вложенности соединением набора данных сам с собой получаем всю описанную структуру иерархии сколько бы там не было уровней
#29
by olegon7
Хорошо я получу массив из сервиса, мне этот массив надо будет преобразовать в тз? чтобы запихнуть в скд во внешний набор данных так? потому что кроме этого набора я в отчете буду использовать еще два . Один из Mysql а второй непосредственно из 1с. И мне их тоже надо будет соединить по полю ObjectCode . Причем соединять надо только элементы нижнего уровня из первого набора с элементами из второго и третьего набра по полю ObjectCode.
#32
by AceVi
Это не левое соединение в запросе - это именно связь наборов данных. И иерархия там строиться не запросом, и в приведенном тобой примере(1 ссылка) не заполнена колонка "параметр" по которому собственно и определяеться иерархия. Грубо говоря - в таком случае для каждой строки из "источника связи" будет выполняться весь запрос из "приемника связи" в который будет передан параметр(например код). Просто левое соединение не сработает.
#36
by DrShad
в принципе да, только учти в json массиве у тебя не обязательно в первом же элементе будут все ключи структуры
#37
by olegon7
у меня в итоге будут 3 набора данных первый набор- из сервиса (тз1) второй набор - из mysql (тз2) третий набор - из 1 с (тз3) как расставить связи в скд между наборами первая связь понятна тз1 - тз1 левое соединение по полям ObjectCode = ParentCode как организовать связь с двумя другими наборами?
#40
by olegon7
попробую объяснить в тз2 и в тз2 содержаться абоненты которые тоже должны быть подчинены самому нижнему уровню из т31. а связываются они по коду ObjectCode. Т е данные из тз2 и тз3 еще один уровень получается четвертый. В тз1 может хранится только 3 уровня вложенности.
#42
by olegon7
1)скажите элемент верхнего уровня в поле ParentCode Заполнять чем? null или пустым значением? 2)если я сначала объединю все 3 набора , а потом сделаю соединение самим с собой по полю code. Все пройдет правильно? Что первично соединение или объединение?
#44
by olegon7
получил тз от сервиса соединяю само с собой получаю ошибку не найдено поле замены "КодОбъекта" что делать ?
#46
by olegon7
разобрался с этой ошибкой описание полей в скд должно совпадать с описанием полей в тз сейчас другая ошибка соединяю набор сам с собой получаю в ответ
#48
by AceVi
По русски же все пишет. Зайди на вкладку Связь наборов данных там есть 2 колонки которые так называются вот их и заполни. И читай внимательно те ссылки которые тут в теме. особенно ту что ведет в гугл)
#49
by olegon7
Начальное значение связи набора данных заполнил "" строкой Я так понимаю параметр отвечающий за верхний уровень чтобы система понимала у меня у элемента верхнего уровня поле ParentCode пустая строка ошибка пропала , но в отчет ничего не выводит. Что не так сделал? подскажите
#50
by AceVi
Не знаю что не так. я твои ТЗ и отчет не видел. выгрузи ТЗ в эксел(надеюсь знаешь как быстро сделать? это все стандартными способами делается за 3 секунды) И обработку свою на почту мне вышли.
#53
by olegon7
отправил вам на почту , посмотрите пожалуйста... если не получится буду работать с тз запросами еще до помещения во внешний источник скд...
#55
by olegon7
Ошибка тип не может быть выбран в запросе на вторую строку запроса тз1 создал программно , указав принудительно типы полей
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как учитывать возвратную тару по нулевой цене
- В какой версии УТ11 появился справочник "УпаковкиЕдиницыИзмерения"?
- Как в диаграмме сделать точки разного цвета.
- УФ. Как из клиентской процедуры вызвать серверную функцию?
- Попытка получения неинициализированного параметра сеанса
- Необязательные поля, условия в запросе, Как с ними работать?
- Не работает google maps api v3
- работа с HTTPСоединение и ОтправитьДляОбработки на 1с.
- БГУ1.0. Кредиторка по счету 302.34 в разрезе счетов 105.3Х, возможно ли?
- Как перенести структуру подчиненности документов при конвертации данных.
- СКД Как вывести в макете сгруппированные значения без "Уровней группировок"
- Конвертация Данных не перезаписывать ПКС
- Работа с клиент-банком по нескольким банковским счетам в УТ 10.3 (дубли номеров)
- УФ - Как в процедуре формы выбора ПриСозданииНаСервере получить ссылку
- КД и регистр сведений из запроса через ПКГС
- Краснота на счете 41
- 1с и sql загружают сервер
- Выбор нескольких элементов справочника в 1с 8.3
- Формат EnterpriseData подскажите
- Код цели в БГУ