0. kser87 1866 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 1866 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 1866 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 1866 28.01.16 14:31 Сейчас в теме
(4) KurganPX, это только в 8.3.7 появилось=) И опять же справедливы ваши слова: при переносе данных, особенно между неидентичными конфигурациями или различными платформами является больше злом

У меня результирующий файл примерно такой же и получается. Только я преобразую значения в структуру и ее легко сериализую.
7. KurganPX 28.01.16 14:49 Сейчас в теме
(6)
'У меня результирующий файл примерно такой же и получается. Только я преобразую значения в структуру и ее легко сериализую."
Так я ни слова против..
8. kser87 1866 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 1866 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 1866 01.02.16 21:49 Сейчас в теме
(9) BigB, Интересно. Попробую повторить. Для каких целей вставляли в конфу? Можно использовать как внешнюю.

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

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

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



21. kser87 1866 05.05.16 15:40 Сейчас в теме
(20) AKV77, здравствуйте!
Какую версию платформы используете?
22. xten 40 07.08.16 00:12 Сейчас в теме
Уважаемый автор! А есть ли такая чудесная вещь для 8 2 ? Спасибо!
23. kser87 1866 07.08.16 23:09 Сейчас в теме
(22) xten, платформа 8.2 не умеет работать с json. Есть такая же, но выгружает в xml
24. xten 40 11.08.16 21:12 Сейчас в теме
Уважаемый автор, при загрузке файла программа пишет, что указанный файл уже существует Перезаписать его или нет, немного, кажется, неправильно, как-будто она его перезаписать хочет, а не просто загрузить. Но так , вроде, все работает. ))
25. kser87 1866 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 1866 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 1866 13.03.19 10:04 Сейчас в теме
(30) в моей более продвинутый отбор.
jaroslav.h; +1 Ответить
32. kser87 1866 13.03.19 10:21 Сейчас в теме
(30) для использования моей обработки не нужно знать язык запросов и руками добавлять объекты. Достаточно настроить отбор
jaroslav.h; +1 Ответить
33. shulya83 21.07.19 02:07 Сейчас в теме
столкнулся с двумя ошибками, что если в конфигурации есть реквизит с названием "Выбрать" не важно какого типа?
что если в плане счетов нет субконто?
обработка выдаёт ошибки при выгрузке )
я у себя уже поправил
34. kser87 1866 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 1866 24.07.19 00:21 Сейчас в теме
(36) по идее не обязательно
38. kser87 1866 26.07.19 20:05 Сейчас в теме
(36)
(35) предопределение поправил. Больше не должен создавать
39. shulya83 27.07.19 10:42 Сейчас в теме
(38) версия таже самая? просто перекачать?
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

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

Ведущий программист 1С
Омск
зарплата от 70 000 руб. до 110 000 руб.
Полный день

Консультант-аналитик 1С ЗУП 3.1
Белгород
зарплата от 40 000 руб. до 50 000 руб.
Полный день

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