Имя: Пароль:
1C
1С v8
Web-сервисы, как передать только изменения данных
,
0 Антиквар
 
10.09.21
01:19
Всем привет!
Есть задача: синхронизация данных 1С и внешней системы (не 1С). Нужен двухсторонний обмен.
Причем 1С должна передавать только изменения данных. Т.е. если 1С передала контрагента, то в следующий раз нужно передать его во внешнюю систему только в том случае, если у контрагента что-то поменялось, какой-то реквизит.
Была мысль сделать план обмена, реализовать нужную регистрацию изменений объектов, анализировать изменения и выгружать их в какой-то файл или напрямую во внешнюю систему (есть описания таблиц SQL внешней системы, т.е. можно напрямую пихать туда данные).
Но все сейчас говорят про веб-сервисы. Мол их очень удобно использовать как раз для задач синхронизации с внешними системами, к тому же это безопасно, потому что нет прямых подключений к внешним базам, и наоборот, в твою базу никто не лазает. В общем это сейчас очень популярно, и главное, как я понял, очень правильно. Хочется попробовать и научиться этому.
Я только начинаю в этом разбираться, но пока не могу понять, реализуема ли моя задача через веб-сервисы в принципе?
Пока всё что я понял - это возможность публикации определенных методов, которые клиент будет вызывать, получая мои данные. Либо наоборот, изменять мои данные.
Но как сделать, чтобы клиент получал только изменения данных? Т.е. тут в любом случае получается связка "План обмена + Web-сервисы"? Без плана обмена не обойтись? Т.е. в методах нужно просто через план обмена получать изменения?
И небольшая путаница с веб-сервисами, ибо в 1С они разделяются на http-сервисы и собственно на веб-сервисы. Первые для меня понятнее, тем более что я как клиент уже использовал их, забирал данные с различных площадок через опубликованные API. Но что лучше в моем случае...
Просьба поделиться соображениями, что в моем случае лучше использовать, в какую сторону мне копать.
85 Антиквар
 
10.09.21
11:36
(82) я это и имел ввиду, обмен из 1С во внешку подразумевает, что 1С выкладывает, а внешка стучится и забирает
86 Антиквар
 
10.09.21
11:37
(84) Да. Но и обратно тоже будет, пока просто непонятно какой объем информации на какой стороне будет вестись.
87 Василий Алибабаевич
 
10.09.21
11:37
(78) Ну так - то да.
88 Антиквар
 
10.09.21
11:37
(81) почему?
89 Garykom
 
гуру
10.09.21
11:37
(83) это НСИ и документы
Их надо будет как то синхронизировать по неким ID, кодам (уид) или наборам признаков-реквизитов
90 Garykom
 
гуру
10.09.21
11:38
91 Kassern
 
10.09.21
11:39
(85) а учет где будет основной вестись? Если в 1с, то поидее 1ска должна руководить обменом, отдавать, как ввелись данные, и периодически стучатся, забирая данные с сайта.
92 Антиквар
 
10.09.21
11:39
(89) всё по ГУИД. Сложнее только с регистрами сведений
93 Василий Алибабаевич
 
10.09.21
11:40
(80) "Т.е. мы должны опубликовать сервис. Ну и от них тоже будет" А вот это вот плохая идея.
Сервис должен быть один и на одной стороне. А другая сторона будет либо забирать с этого сервиса свои данные или отдавать.
94 Антиквар
 
10.09.21
11:40
(91) основной учет в 1С
95 Garykom
 
гуру
10.09.21
11:41
(92) если один вид сущности вводится в разных системах то дубли неизбежны
96 Антиквар
 
10.09.21
11:41
(93) тут пока не понимаю. Если обмен двухсторонний, то всё-равно должен быть один сервис???
97 rsv
 
10.09.21
11:42
(93) а пойдет это по сценарию …. Сервисов на 1с по причине «там все есть»
98 Антиквар
 
10.09.21
11:42
(95) это исключено. Источник данных всегда один
99 Garykom
 
гуру
10.09.21
11:42
(96) достаточно одного сервиса который умеет и туды и сюды
второй лишний
100 Garykom
 
гуру
10.09.21
11:42
(98) это фантастика и сказки
101 Kassern
 
10.09.21
11:45
(96) сервис на стороне 1с удобен например для корзины, к примеру перед оплатой сайт постучался в 1с и убедился что товар есть в наличие и дал оплатить онлайн. А если же речь о получении заказов, то 1ска сама может по крону спрашивать у сайта, а есть ли для меня заказики и загружать если есть. Смысл для этого поднимать сервис со стороны 1с, чтобы сайт пихал заказ сразу как создался, эти 3 мин в большинстве случаев роли не играют.
102 Kassern
 
10.09.21
11:46
(101) опять же надо понимать какая нагрузка будет на 1с в этом случае. К примеру тысячи клиентов начнут по 100 раз запрашивать статусы заказов, данные по скидкам/товарам и т.д. и дергать 1ску.
103 Антиквар
 
10.09.21
11:47
(99) ясно. Просто пока не очень понимаю как реализуется.
(100) нет-нет, это реальность)
104 Антиквар
 
10.09.21
11:50
(102) у нас не торговля. Синхронизация будет по расписанию. Т.е. неожиданно никто не начнет дергать. Дергать будет внешняя система, по расписанию, определенный набор объектов, каждый раз разный (в течении дня)
105 Kassern
 
10.09.21
11:50
(103) в веб сервис ты можешь постучаться с целью выплюнуть данные, или наоборот - запросить. Вот тебе и двухсторонний обмен.
106 Kassern
 
10.09.21
11:50
(104) я прост общую логику расписал с примерами, когда сервис удобен со стороны 1с.
107 Василий Алибабаевич
 
10.09.21
11:51
(103) У сервиса есть входные параметры (как минимум данные авторизации) и может возвращать какие-то ответы. Все. Этого достаточно.
Например запрос за цены - на входе коды номенклатуры и тип цен, на выходе - табличка цен.
Запрос на создание заказа - на входе код покупателя и табличка заказа. На выходе - табличка резервов. (Ну это так... Пример)
108 Garykom
 
гуру
10.09.21
11:52
(104) дык опубликуй из 1С http сервис, стандартную ODATA или свое и пусть "Дергать будет внешняя система, по расписанию"
109 Василий Алибабаевич
 
10.09.21
11:54
В общем то все уже обозначено. Осталось ТС определиться с тем что он будет пытаться реализовать.
Я - за ПланыОбмена + http сервис на стороне 1С.
110 Garykom
 
гуру
10.09.21
11:59
111 Kassern
 
10.09.21
12:00
(109) я за планы обмена и http сервис со стороны сайта)
112 Garykom
 
гуру
10.09.21
12:05
(111) в некоторых случаях напрямую в sql базу 1С
113 BeerHelpsMeWin
 
10.09.21
12:12
(109) а я за планы обмена + выгрузка во внешний источник
114 fisher
 
10.09.21
12:17
(104) А почему дергать должна внешняя система, если регламент? Дергай из 1С по регламенту - тогда и http-сервис не нужен будет на стороне 1С.
115 fisher
 
10.09.21
12:21
(104) Раз у тебя на той стороне такие умельцы, то пусть все сами и сделают. Скажи им что сумеешь по регламенту дергать ихний rest и засылать им json с примитивными типами. А дальше они сами все разрулят и дадут тебе протокол с форматами. И ты просто будешь через http-соединение работать как им надо.
116 rsv
 
10.09.21
12:24
(115) а те умельцы ждут умельцев на 1с . Кто кого переждет.
117 rsv
 
10.09.21
12:25
А в финале “ а это ваш сервис такой … :)
118 Garykom
 
гуру
10.09.21
12:26
"трансграничная передача данных"
119 rsv
 
10.09.21
12:39
(0) пусть внешники ваяют на свой стороне все.
Вы дергайте и …. Оперативно тикет во внешний хелп - сервис не доступен просьба разобраться.
120 Антиквар
 
10.09.21
12:42
(105) "в веб сервис ты можешь постучаться с целью выплюнуть данные, или наоборот - запросить. Вот тебе и двухсторонний обмен."
Т.е. если делаем один http-сервис, допустим на стороне 1С, то это значит, что внешняя система будет запускать методы сервиса для получения данных из 1С. А если нужно наоборот, получить данные из внешней системы в 1С, то опять же внешняя система будет запускать методы сервиса 1С, которые что-то пишут в базу 1С, передавая в эти методы какие-то объемы данных. Так?
121 Kassern
 
10.09.21
13:51
(120) к примеру у вас поднят сервис СожриФайл, сайт стукнет гет запросом в 1ску, та возьмет и проверит определенный каталог, если там есть файлы, то сожрет их. Либо поднять POST метод, тогда сайт будет в тушке запроса пихать данные, а 1ска загружать из нее и отвечать, мол спс было вкусно.
122 Kassern
 
10.09.21
13:52
(121) на я бы все же эту головную боль переложил на сайт, а 1ска пущай регламенты юзает.
123 Антиквар
 
10.09.21
15:44
в общем решили, что будет брокер сообщений. Только хотят не RabbitMQ, а Кафку.
Знаю, что крутая штука, но как 1С с ней общается пока не ясно.
124 fisher
 
10.09.21
16:08
Да. Без брокера тут не обойтись. Побольше middleware, нужных и не очень. Нужно же что-то админить.
125 Kassern
 
10.09.21
16:18
(123) а много будет систем для обмена? Сколько примерно сообщений в день? А то может получиться, что все эти брокеры будут выглядеть, как С-300 против мухи)
126 Garykom
 
гуру
10.09.21
16:20
(124) угу и ВК добавить обязательно для работы с брокером
127 fisher
 
10.09.21
16:24
Не, ну если у них kafka уже юзается в качестве эдакой корпоративной шины, тогда может и норм.
128 fisher
 
10.09.21
16:32
Просто обмен через брокера еще и больше ньюансов предполагает.
Вот запулит туда 1С свою чехарду. Считать это сразу успешной доставкой? А потом при выгребании окажется что там фигня какая-то оказалась и данные валидацию не проходят. Что дальше делать?
129 Kassern
 
10.09.21
16:36
(128) что делать что делать, грохаешь все сообщения, шлешь полную выгрузку и ждешь еще такой подставы)
130 fisher
 
10.09.21
16:43
Я к тому, что обмен через брокера сложнее, если все по уму делать.
131 2mugik
 
10.09.21
16:45
(128)Если у сообщений нет адресации то нужен ли брокер? Положил в папочку - забрал.
132 Kassern
 
10.09.21
16:56
(131) а если 2 системы принимают, то положил в 2 папочки?)
133 BeerHelpsMeWin
 
10.09.21
17:24
(128) Тогда при обработке данных в шину валится сообщение "перешлите данные пакета Х" или "перешлите данные, начиная с пакета Х". И это сообщение надо обработать на стороне 1С.
Что такого сложного в работе с шиной?
134 Garykom
 
гуру
10.09.21
17:30
(133) это уже RPC описываешь
135 _KaA
 
10.09.21
18:12
(0)

Мысль верная, только надо понимать, что передать файл или постучаться во внеш систему - это транспорт. А то как вы сформируете данные - это второй вопрос, который будет одинаковым для обоих реализаций.

А в целом логичнее взять БСП, забрать от туда п/с ОбменыДанными (+ обязательные подсистемы) и использовать типовой функционал, там уже есть и транспорт через WS, и через файл, и через FTP, почту...
136 Антиквар
 
10.09.21
19:42
(127) Да, кафка для каких-то задач уже юзается, либо собираются на неё переходить. Руководство высшее ИТ-шное там уже всё решило, они за кафку.
137 Антиквар
 
10.09.21
19:44
(125) ну вообще как я понял, главная причина - это стабильность. Типа сервис ляжет и кури бамбук. Кафка масштабируемая, производительная, безглючная) Ну и если она объединит в целом всё по компании, то наверное это всё же лучше, чем каждый сервис будет сам по себе барахтаться.
138 2mugik
 
11.09.21
12:54
(132) тогда  можно подумать)
139 MyNick
 
11.09.21
18:46
(0) "Если все в одной сети веб сервисы, как по мне, не нужны."
А что надо? Лампово-древний COM?
Откуда стереотипчик?

(4) "разработчики внешней базы против прямого подключения. Говорят, что это не правильно, что это прошлый век. "
Все правильно говорят. Ибо покупать мотыгу вместо мотоблока (или древние инструменты против современных) - это так себе.
Даже если площадь маленькая и "кажется что все будет на одном участке в 2 сотки".
140 ДенисЧ
 
11.09.21
18:49
(139) Правильно. Давайте ставить кролика для передачи сообщений между двумя соседними комптютерами
141 MyNick
 
11.09.21
19:09
(140) правильно давайте плюнем на концепцию API и будем напрямую в базы писать.
А когда контора вырастет в несколько раз и разными базами будут заниматься разные люди (команды), мы полностью все переделаем в авральном режиме (ресурсов и денег ведь докуа, да и не скучно хоть будет). И сделаем наконец так, как нужно было в самом начале.
142 ДенисЧ
 
11.09.21
20:03
(141) А если не вырастет, а деньги уже потрачены и создано грандиозное, никому не нужное, сооружение по ГОСТ 26074-84 ?
143 1CnikPetya
 
11.09.21
20:19
(47) Чем это отличается от варианта прямого доступа к базе SQL? OData - это не про обмены с внешними системами.
144 MyNick
 
11.09.21
20:32
(142) веб сервисы в 1С делать проще, чем с COM и прямыми селектами ковыряться.
- делать проще
- архитектура прозрачнее
- поддержка проще
- изоляция одного от другого - меньше потенциальных багов
145 MyNick
 
11.09.21
20:34
+(144) Даже самую малую фигню передать - лучше сразу сделать правильно.
Т.к. даже если контора не вырастет, то хотелки вырастут многократно.
И безобидный "прямой коннектор" превратится со временем в генератор проблем, который к тому же и развивать будет экспоненциально сложнее по мере роста.
А кому оно надо?
Нормально делай, нормально будет.
146 acanta
 
11.09.21
20:36
Правильно ли я понимаю, что изменение одного реквизита контрагента (например, ИНН) не приведет к выгрузке всей связанной с контрагентом информации (т.е. будет выгружено только гуид и ИНН)?
147 1CnikPetya
 
11.09.21
20:39
(128) Ничто не мешает настроить 2 очереди. Первая - данные от 1С к внешней системе, вторая - от внешней системы к 1С с квитанциями об успешной обработки. Но тут уже не удастся реализовать на планах обмена, так как уже 3 состояния у объекта: зарегистрирован, отправлен, получено подтверждение.
148 1CnikPetya
 
11.09.21
20:41
(142) Что грандиозного в обычном REST или SOAP API? Нет в инфраструктуре шины или брокера и нет уверенности ,то он будет нужен - ну и не надо его вводить. А простые API - это нормально. COM и прямой доступ к БД - это дно.
149 ДенисЧ
 
11.09.21
20:52
(148) Что днового в обычном COM-соединении?
150 acanta
 
11.09.21
20:56
(149) долго устанавливается и отваливается по истечении определенного интервала.
151 1CnikPetya
 
11.09.21
20:58
(149)
1. Работа COM сильно зависит от окружения. REST или SOAP API универсальны и стабильны.
2. Если для COM-соединения не написан программный интерфейс в приемнике (а если выбрали COM для новой интеграции, то его, скорее всего, не будет), то имеем все риски после обновления нарваться на ошибки, связанные с изменением методов. И система приемник может даже не знать, что ее изменения что-то сломают. REST и SOAP API в этой части намного прозрачнее.
3. COM - это медленно и ресурсоемко.
152 acanta
 
11.09.21
21:05
Вопрос был что вместо COM без шлюза в интернете в качестве сервера для обмена между двумя базами на одном носителе с тем же интерфейсом что и для разных компов в локальной сети?
153 Megas
 
11.09.21
21:32
Офигеть
Казалось бы простейший вопрос и столько обсуждений.
План обмена + шареная папка в сети + там две папки inbox и outbox + файлы json с именем дата в формате ddmmyyyyhhMMss_guid.json - всё! файл загрузил и положил в архивю
154 Megas
 
11.09.21
21:37
(149) Это прям вопрос на собеседование =)
Уже выше писал несколько минусов прямых подключений. Это я ещё забыл проблемы с отладкой.
Самое простое: Если приёмник "Лежит" - у тебя копится очередь - это как минимум.

Проще файлами на шару.
155 acanta
 
11.09.21
21:40
То есть, папка с файлами с некоторых пор надёжнее чем РИБ.
156 acanta
 
11.09.21
21:43
А есть в типовых конфигурациях механизм создания периферийной риб с определенной даты?
157 Megas
 
11.09.21
21:48
(155)
Сам Риб не делал, но других обменов делал очень много
Я чё то запутался, РИБ же вроде тоже через папку с файлами делается?
158 acanta
 
11.09.21
21:55
(157)Да, но в риб должно без получения подтверждения выгружаться повторно, а без риб выгрузка изменений однократная, по событию.
159 Антиквар
 
12.09.21
00:41
(141) "А когда контора вырастет в несколько раз и разными базами будут заниматься разные люди (команды) ..."

У нас уже всё так)
Контора очень большая, во многих регионах, 20 тысяч сотрудников.
Много команд разработчиков под разные системы.
160 Garykom
 
гуру
12.09.21
00:52
(153) Вариант неплохой только тем что достаточно быстро переделывается на http/rest или брокер
161 ДедМорроз
 
12.09.21
08:17
Если хочется надежную систему,то передачу данных нужно отделить от момента изменения данных,а в изменении просто регистрировать объект к обмену.
Есть такая вещь - правила регистрации объектов в стандартной КД,очень удобно,если можно использовать их.

Если хочется,то можно и свой велосипед,например регистр,где будет ссылка на объект и хэш от его передаваемых полей, если хэш поменялся,то объект нужно отправить.
Только хэш можно рассчитывать или при записи или уже при отправке - это определяется требованием к производительности.
Если,например,из номенклатуры передается несколько полей,а записывается она часто,то каждый раз при записи считать хэш смысла нет - просто регистрируем к отправке,а вот при отправке считаем хэш,и если он поменялся,то отправляем.
162 ДедМорроз
 
12.09.21
08:20
И еще раз,не стоит при проектировании обмена на транспорт закладываться.
От транспорта требуется наличие интерфейса к каналу с определенным набором функций,позволяющих отправить пакет,проверить наличие пакета в канале,получить пакет и подтвердить получение пакета из канала (удалить его) тогда потом можно работать в любом режиме и через что угодно.
163 ДедМорроз
 
12.09.21
08:25
Ну и формат файла двнных не важен - есть только два формата:
Файлы с последовательным доступом (txt,json,xml и т.п.)
Файлы с произвольным доступом (dbf,pdf и т.п.)
Для передачи данных файлы с произвольным доступом преимущество не дают,т.к.все равно читаются все данные,поэтому,формат может быть любой,если грамотно написаны функции помещения объекта в файл и чтение объекта обратно,то никаких проблем.
164 novichok79
 
12.09.21
10:09
Это ж очевидно, вам нужна событийная архитектура, делаете обмен через очередь сообщений на ваш вкус. Однако, если нужна синхронность в обеих системах, то тут без REST никак.
165 Garykom
 
гуру
12.09.21
10:20
(164) кроме REST есть куча других методик
например gRPC прекрасный штук
166 novichok79
 
12.09.21
10:26
Grpc из 1с? 1c может в HTTP/2?
167 Garykom
 
гуру
12.09.21
10:29
(166) gRPC и без HTTP/2 пашет
через ВК вполне можно
168 novichok79
 
12.09.21
10:32
Тут основной вопрос в синхронности - если нужна можно любой синхронный способ, если нет - очередь. Не представляю как в 1с писать protobuf и использовать кодогенерацию для gRPC.
169 Антиквар
 
12.09.21
21:45
(161) очень разумно на  счет хэша, спасибо
170 Антиквар
 
12.09.21
21:50
(164) это пока не очень понимаю. REST-интерфейс, как я понял, слегка ограничивает возможности HTTP-сервиса. Если речь о протоколе OData
171 fisher
 
13.09.21
09:24
(137) Тут стандартный trade-off синхронность vs асинхронность. Асинхронность теоретически прикольнее, но она небесплатна. И надо понимать, когда она хорошо окупается, а когда не окупается вообще. В твоей ситуации на первый взгляд она окупается плохо. Но я не знаю всех деталей и могу ошибаться.
(169) Не надо хэш. В том смысле, что хранить его не надо и именно хэш нет необходимости вычислять. Нужен обычный план обмена, только с отключенной автоматической регистрацией. А в перед записью объектов сравниваешь новые данные объекта с хранящимися в БД. И если эти изменения критичны с точки зрения внешней системы - тогда разрешаешь регистрацию изменения к обмену (добавляешь нужные узлы в ОбменДанными.Получатели).
172 Kassern
 
13.09.21
09:31
(171) А что в плане производительности? Реализовывали уже такую штуку в нагруженной базе, где тысячами документов в день регистрируют? Так же надо где то структуру проверяемых реквизитов хранить еще и в разрезе объектов, чтобы не по всем проверять.
173 fisher
 
13.09.21
09:35
(172) Типа еще один простой запросик в перед записью станет бутылочным горлышком интегральной производительности? Пфффф.
174 Антиквар
 
14.09.21
12:26
(126) "угу и ВК добавить обязательно для работы с брокером"
Да, ВК для кафки нужна, и походу она только одна существует, и стоит очень дорого...
А через REST с кафкой нельзя работать? Ну т.е. как я это представляю, дергать её API-методы, через http-запросы...
175 Garykom
 
гуру
14.09.21
12:58
(174) можно все
и ВК на заказ и через REST с чем угодно, если нельзя напрямую то через прокладку микросервис
176 Я_в_каске
 
14.09.21
15:07
На стороне 1С реализуйте как вам нравится, на стороне сайта не ваша проблема. Логично что там API и вам все на блюдечке преподнесли, что туда отправлять. С вашей стороны WEB сервисы для получения данных с сайта. Настройка регистра сведений отправки изменений или план обмена, это ваше решение. Не думаю , что у вас там мега объемы данных, чтобы обсуждать всякие сложности.
177 Антиквар
 
14.09.21
18:40
(176) У нас мегаобъемы данных)
И уже решено кафку. Решение свыше, не обсуждается. Но оно обдуманное, кафка уже есть в организации, в ней море разных сервисов крутится. Нет там только 1С пока)
178 novichok79
 
19.09.21
11:14
(174) Способы дергать Kafka из 1С:
1. Confluent REST Proxy - фирменный REST API, но он глючный - в одной версии норм работал, а в другой по таймауту отваливался.
2. Написать свой REST Proxy на Java, Python, Golang, you name it. Мы написали на Flask.
3. ВК от Серебрянной Пули, у меня она есть, использовал. Но видимо я "неасилил" просто.

В итоге на проде используется способ №2, я там уже не работаю, инфа может быть уже неактуальна.
RabbitMQ удобнее для 1Са, для него есть аж 2 компоненты, и одна использовалась на проде, на одном из прошлых мест работы.

В итоге реализация может быть следующей:
На стороне 1С правила обмена для каждого справочника и т. д, потом реализуете обработчики - обработчики отдают JSON без пробелов и это дело пуляется в Kafka регламентным заданием.
Обратный путь - загружаете сообщения в справочник одним заданием, обходите справочник другим.
По какому-нибудь стандартному заголовку - типа "type" загружаете сущности в БД через обработчики завязанные на этот type.
179 novichok79
 
19.09.21
11:15
(178) компонента медленной оказалась очень, возможно где-то нужно было подергать "правильные" ручки, но как и написал выше - "неасилил"
180 dmitryds
 
19.09.21
17:41
-


НУ ВЫ БЛИН ДАЕТЕ
Столько флуда)


-

Какие веб-сервисы 1С, если 1С передает данные?
Если во внешней системе реализовано API - работать через это API - если нет, то вариантов как бы то и нет))

_
181 novichok79
 
19.09.21
18:48
(181) это нормально для мисты, было бы странно, если бы ответили сразу ))
182 Антиквар
 
20.09.21
23:42
(178) "По какому-нибудь стандартному заголовку - типа "type" загружаете сущности в БД через обработчики завязанные на этот type."
Не понял этого, можно поподробнее?
183 серый КТУЛХУ
 
21.09.21
00:49
ну и web-сервисы - это уже давно не "новое" и не такое уж и "удобное".
сейчас более в ходу и востребованы и безглючны и быстры http-сервисы.
184 novichok79
 
21.09.21
18:50
(182) не архитектуру же мне за вас придумывать. у нас было сделано на rabbitmq и обработчиках.
в обработчиках в зависимости от отправляемых сущностей формируется json, 1 объект имеет 2 обязательных реквизита.
id, type.
id может быть null, type идетифицирует что мы посылаем.
в attributes лежат данные сущности. вот и посылаем через RabbitMQ массив сущностей в json:

"sender": "petya",
"timestamp": 123 unix time,
"data": [
{"id": 1, "type": "penoplast", "attributes": {"blaBlaBla": "BlaBla"}},
{"id": 112, "type": "sosnovyeShishki", "attributes": {"blaBlaBla1": "BlaBla1"}}
]

вот и все...
а что делать с данными решает принимающая система, ваше дело малое - пульнуть изменения
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс