0. kser87 1864 02.11.15 16:04 Сейчас в теме

Выгрузка/загрузка данных в формате JSON v 1.0.5

Обработка предназначена для обмена данными между схожими конфигурациями в формате JSON. Этот формат обладает рядом существенных преимуществ по сравнению с xml и прочими популярными форматами. В отличие от существующих аналогов, обработка не использует никаких дополнительных библиотек. (де)Сериализация всех объектов происходит средствами встроенного языка и методов ЗаписатьJSON() и ПрочитатьJSON(). Работает на платформе версии не ниже 8.3.6.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. Brawler 449 28.01.16 08:58 Сейчас в теме
XML универсален и подходит для решения большинства задач. Но у него есть один большой недостаток: наличие тэгов и , как следствие, большой объем "лишней" информации.

Все в мире относительно, как по мне, так XML лучше.
На вкус и цвет все фломастеры разные.
2. kser87 1864 28.01.16 10:45 Сейчас в теме
(1) Brawler, у xml при использовании в 1С есть один очень большой плюс по сравнению с JSON: почти все типы (де)сериализуются на уровне платформы. JSON же умеет работать только с примитивными типами, массивами, структурами и соответсвиями. При этом соответствие десериализуется в структуру (WTF?!) и в качестве ключа можно использовать только строку.
vasiliy_b; +1 Ответить
3. vasiliy_b 280 28.01.16 13:54 Сейчас в теме
При этом соответствие десериализуется в структуру (WTF?!)
- сам еще не проверял, но если это так, то я согласен, лучше было бы наоборот, так как соответствие допускает любое значение ключа, и при десериализации в структуру, можно получить ошибку.
5. kser87 1864 28.01.16 14:23 Сейчас в теме
(3) vasiliy_b, поэтому сейчас при попытке сериалации в JSON соответствия с нестроковым ключом 1С-ка падает с ошибкой
4. KurganPX 28.01.16 13:55 Сейчас в теме
Каждому свое.
Десериализация при переносе данных, особенно между неидентичными конфигурациями или различными платформами является больше злом, чем добром.
JSON придумывался не для бэкапов или обмена в виде файлов, он нужен для обмена в интернетах и в этом плане - незаменим.
Извините, но передавать бессмысленный объем "шлака" в виде тегов, стрелок и всего остального присущего XML - это глупость бессмысленная. Зачем хранить и передавать в 20 раз больше данных, чем чем это необходимо.
P.S. про десериализацию и JSON:
http://v8.1c.ru/o7/201501json/index.htm
Gang031; leonidol; dj_serega; Alex_E; JetBrain; JohnyDeath; +6 Ответить
6. kser87 1864 28.01.16 14:31 Сейчас в теме
(4) KurganPX, это только в 8.3.7 появилось=) И опять же справедливы ваши слова: при переносе данных, особенно между неидентичными конфигурациями или различными платформами является больше злом

У меня результирующий файл примерно такой же и получается. Только я преобразую значения в структуру и ее легко сериализую.
7. KurganPX 28.01.16 14:49 Сейчас в теме
(6)
'У меня результирующий файл примерно такой же и получается. Только я преобразую значения в структуру и ее легко сериализую."
Так я ни слова против..
8. kser87 1864 28.01.16 14:50 Сейчас в теме
(7) KurganPX, так и я не оправдываюсь) просто говорю, как сделал. Вообще представленное по ссылке можно и в 8.3.6 реализовать: сериализовать значение в xml и результат как строку передатать в JSON. Правда смысла особого нет
17. JetBrain 06.02.16 07:39 Сейчас в теме
(4) KurganPX, ...согласен, и JSON используется не только в переносе данных, но и провайдерами ЭДО и EDI, пример статьи с обработкой заявки http://infostart.ru/public/436405/
18. kser87 1864 06.02.16 14:30 Сейчас в теме
(17) st-ty@ngs.ru, только такая конструкция

ЗаписьJSON.ЗаписатьНачалоОбъекта();
          ЗаписьJSON.ЗаписатьИмяСвойства("code");                ЗаписьJSON.ЗаписатьЗначение(code);
          ЗаписьJSON.ЗаписатьИмяСвойства("name");                ЗаписьJSON.ЗаписатьЗначение(name);
....
ЗаписьJSON.ЗаписатьКонецОбъекта();


очень неудачная. Скорее всего, в 1С просто не доделали ЗаписьJSON и очень многие вещи невозможно сделать:
- Записать несколько объектов
- ЗаписьJSON.ЗаписатьЗначение(code); - в значение записать другую запись JSON или скажем структуру.

Лучше использовать ЗаписатьJSON()
19. JetBrain 06.02.16 16:14 Сейчас в теме
(18) Лучше использовать T-SQL Запрос - это самый быстрый метод))
9. BigB 178 01.02.16 21:45 Сейчас в теме
Вставил в свою конфигурацию. При проверке конфигурации на ошибки получил кучу ошибок.
Прикрепленные файлы:
10. kser87 1864 01.02.16 21:49 Сейчас в теме
(9) BigB, Интересно. Попробую повторить. Для каких целей вставляли в конфу? Можно использовать как внешнюю.

И вы для каких целей указали "Толстый клиент (управляемое приложение)" в проверке?
11. BigB 178 02.02.16 00:02 Сейчас в теме
(10) когда пишу код, то он у меня должен работать во всяких режимах. Поэтому всегда свои конфигурации проверяю с этими галками. А вставил себе, ну наверное, чтобы было. А вдруг пригодится.
12. kser87 1864 02.02.16 01:10 Сейчас в теме
(11) BigB, понятно. Я поставил инструкции предпроцессору умышленно. Можете скачать, я включил и такой режим.. Даже не думал, что кто-то им пользуется. Насколько мне известно, даже типовые в нем не работают.
Gang031; BigB; +2 Ответить
13. Kamikadze 46 03.02.16 11:01 Сейчас в теме
Фактически - это аналог универсальное загрузки/выгрузки между идентичными конфигурациями?
14. kser87 1864 03.02.16 11:11 Сейчас в теме
(13) Kamikadze, да, но с "плюшками": полная идентичность конфигураций необязательна. И есть адекватный отчет.
15. DonAlPatino 128 03.02.16 14:20 Сейчас в теме
А перегрузить варианты отчетов для СКД ей получится?
16. kser87 1864 03.02.16 14:52 Сейчас в теме
(15) DonAlPatino, думаю да. Вариант вроде хранится в реквизите с типом "ХранилищеЗначения". Такое я пробовал делать.

Ссылочные типы, которые моугт храниться в настройках, не выгружаются. Очень трудоемко написать программу, которая анализирует такое.
20. AKV77 238 03.05.16 11:46 Сейчас в теме
Добрый день. Конфигурация УТ 11.1 при попытке выгрузить документ Реализация товаров и услуг - ошибка:

{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(1771)}: Поле объекта не обнаружено (ИмяПредопределенныхДанных)
Структура.Вставить("ИмяПредопределенныхДанных", ЗначениеСсылки["ИмяПредопределенныхДанных"]);



21. kser87 1864 05.05.16 15:40 Сейчас в теме
(20) AKV77, здравствуйте!
Какую версию платформы используете?
22. xten 40 07.08.16 00:12 Сейчас в теме
Уважаемый автор! А есть ли такая чудесная вещь для 8 2 ? Спасибо!
23. kser87 1864 07.08.16 23:09 Сейчас в теме
(22) xten, платформа 8.2 не умеет работать с json. Есть такая же, но выгружает в xml
24. xten 40 11.08.16 21:12 Сейчас в теме
Уважаемый автор, при загрузке файла программа пишет, что указанный файл уже существует Перезаписать его или нет, немного, кажется, неправильно, как-будто она его перезаписать хочет, а не просто загрузить. Но так , вроде, все работает. ))
25. kser87 1864 16.08.16 22:19 Сейчас в теме
(24) xten, стандартная обработка=)
26. ulen 57 22.11.17 17:22 Сейчас в теме
УТ 11.2 при выгрузке стандартной обработкой через XML непонятно почему, но контактная информация партнеров не переносится.
В данной обработке пробовали?
27. Aule2 04.07.18 09:09 Сейчас в теме
Отбираю 400+ реализаций с движениями, получаю "Переполнение стека встроенного языка на сервере" УТ 11.1.1.13 платформа (8.3.6.2299)
28. kser87 1864 06.08.18 21:38 Сейчас в теме
(27) у вас случайно отладка не включена ? в каком режиме грузите? можно попробовать по частям
29. Stradivari 147 22.10.18 16:46 Сейчас в теме
30. jaroslav.h 148 13.03.19 06:25 Сейчас в теме
31. kser87 1864 13.03.19 10:04 Сейчас в теме
(30) в моей более продвинутый отбор.
jaroslav.h; +1 Ответить
32. kser87 1864 13.03.19 10:21 Сейчас в теме
(30) для использования моей обработки не нужно знать язык запросов и руками добавлять объекты. Достаточно настроить отбор
jaroslav.h; +1 Ответить
33. shulya83 21.07.19 02:07 Сейчас в теме
столкнулся с двумя ошибками, что если в конфигурации есть реквизит с названием "Выбрать" не важно какого типа?
что если в плане счетов нет субконто?
обработка выдаёт ошибки при выгрузке )
я у себя уже поправил
34. kser87 1864 21.07.19 10:24 Сейчас в теме
(33) спасибо. Если на трудно, то кинь свою версию
35. shulya83 23.07.19 22:03 Сейчас в теме
как и куда?
так же есть такой момент, если в базе источнике был реквизит предопределенный, а в базе приёмнике такого реквизита нет, то обработка упорно хочет создать предопределенный реквизит и конечно у неё это не получается сделать и вываливается с ошибкой. (пока руки не дошли исправить)
ещё заметил что со структурой связанных документов какая то не разбериха.
справа база приёмник унф 1.6, слева база источник унф 1.5.
Прикрепленные файлы:
36. shulya83 23.07.19 22:47 Сейчас в теме
для правильной структуры нужна правильная последовательность загрузки?
37. kser87 1864 24.07.19 00:21 Сейчас в теме
(36) по идее не обязательно
38. kser87 1864 26.07.19 20:05 Сейчас в теме
(36)
(35) предопределение поправил. Больше не должен создавать
39. shulya83 27.07.19 10:42 Сейчас в теме
(38) версия таже самая? просто перекачать?
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день