Обработку можно рассматривать как альтернативу одному из наиболее популярных сейчас в 1С формату обмена данными xml. XML универсален и подходит для решения большинства задач. Но у него есть один большой недостаток: наличие тэгов и , как следствие, большой объем "лишней" информации. В JSON тэги не используются, и это позволило добиться существенного сокращения объема передаваемой информации. Например, один и тот же регистр "АдресныйКлассификатор" из демонстрационной базы УТ 11 при выгрузке в xml занимает 91 169 кб, а при выгрузке в формате JSON всего 20 352 КБ.
Представленная обработка работает со всеми конфигурациями на платформе не ниже 8.3.6.
Возможности обработки:
1) Выгрузка/загрузка констант, справочников, документов, ПВХ, регистров сведений и накопления
2) Формирование отчета о выгрузке/загрузке по кнопке "Определить данные, выгружаемые по ссылке". Отчет включает все подчиненные объекты и источники. Все значения кликабельны: при двойном щелчке по ссылке открывается соответствующая форма. Часто при загрузке данных бывает непонятно, откуда взялись какие-то элементы справочников или ПВХ. Отчет позволяет решить эту проблему.
3) Установка отбора по любым реквизитам выгружаемых объектов с использованием технологии СКД:
4) Опционально загрузка данные в режиме обмена: отлючается проверка заполнения данных, объекты не регистрируются в планах обмена
5) Опционально загрузка данных происходит в режиме Транзакции: грузится все или ничего при возникновении ошибки
6) Есть возможность не прерывать загрузку при ошибке. Эту возможность можно использовать при обмене данными между различающимися конфигурациями. Если у объекта-приемника нет какого-то реквизита источника, то он все равно будет загружен при установленной галке.
Порядок работы при выгрузке:
- Открыть обработку
- Отметить галочками нужные объекты
- Установить отборы при необходимости
- Нажать "Выгрузить", указать файл-приемник. Запись файла происходит на клиенте.
Порядок работы при загрузке:
- Открыть обработку и перейти на вкладку "Загрузка"
- При необходимости установить настройки: Выполнять в режиме обмена данными, выполнять в транзакции, не прерывать при ошибке, показывать отчет о загрузке
- Нажать "Загрузить", выбрать файл-источник данных.
Все в мире относительно, как по мне, так XML лучше.
На вкус и цвет все фломастеры разные.
(1) Brawler, у xml при использовании в 1С есть один очень большой плюс по сравнению с JSON: почти все типы (де)сериализуются на уровне платформы. JSON же умеет работать только с примитивными типами, массивами, структурами и соответсвиями. При этом соответствие десериализуется в структуру (WTF?!) и в качестве ключа можно использовать только строку.
— сам еще не проверял, но если это так, то я согласен, лучше было бы наоборот, так как соответствие допускает любое значение ключа, и при десериализации в структуру, можно получить ошибку.
Каждому свое.
http://v8.1c.ru/o7/201501json/index.htm
Десериализация при переносе данных, особенно между неидентичными конфигурациями или различными платформами является больше злом, чем добром.
JSON придумывался не для бэкапов или обмена в виде файлов, он нужен для обмена в интернетах и в этом плане — незаменим.
Извините, но передавать бессмысленный объем «шлака» в виде тегов, стрелок и всего остального присущего XML — это глупость бессмысленная. Зачем хранить и передавать в 20 раз больше данных, чем чем это необходимо.
P.S. про десериализацию и JSON:
(3) vasiliy_b, поэтому сейчас при попытке сериалации в JSON соответствия с нестроковым ключом 1С-ка падает с ошибкой
(4) KurganPX, это только в 8.3.7 появилось=) И опять же справедливы ваши слова: при переносе данных, особенно между неидентичными конфигурациями или различными платформами является больше злом
У меня результирующий файл примерно такой же и получается. Только я преобразую значения в структуру и ее легко сериализую.
(6)
‘У меня результирующий файл примерно такой же и получается. Только я преобразую значения в структуру и ее легко сериализую.»
Так я ни слова против..
(7) KurganPX, так и я не оправдываюсь) просто говорю, как сделал. Вообще представленное по ссылке можно и в 8.3.6 реализовать: сериализовать значение в xml и результат как строку передатать в JSON. Правда смысла особого нет
Вставил в свою конфигурацию. При проверке конфигурации на ошибки получил кучу ошибок.
(9) BigB, Интересно. Попробую повторить. Для каких целей вставляли в конфу? Можно использовать как внешнюю.
И вы для каких целей указали «Толстый клиент (управляемое приложение)» в проверке?
(10) когда пишу код, то он у меня должен работать во всяких режимах. Поэтому всегда свои конфигурации проверяю с этими галками. А вставил себе, ну наверное, чтобы было. А вдруг пригодится.
(11) BigB, понятно. Я поставил инструкции предпроцессору умышленно. Можете скачать, я включил и такой режим.. Даже не думал, что кто-то им пользуется. Насколько мне известно, даже типовые в нем не работают.
Фактически — это аналог универсальное загрузки/выгрузки между идентичными конфигурациями?
(13) Kamikadze, да, но с «плюшками»: полная идентичность конфигураций необязательна. И есть адекватный отчет.
А перегрузить варианты отчетов для СКД ей получится?
(15) DonAlPatino, думаю да. Вариант вроде хранится в реквизите с типом «ХранилищеЗначения». Такое я пробовал делать.
Ссылочные типы, которые моугт храниться в настройках, не выгружаются. Очень трудоемко написать программу, которая анализирует такое.
(4) KurganPX, …согласен, и JSON используется не только в переносе данных, но и провайдерами ЭДО и EDI, пример статьи с обработкой заявкиhttp://infostart.ru/public/436405/
(17) st-ty@ngs.ru, только такая конструкция
очень неудачная. Скорее всего, в 1С просто не доделали ЗаписьJSON и очень многие вещи невозможно сделать:
— Записать несколько объектов
— ЗаписьJSON.ЗаписатьЗначение(code); — в значение записать другую запись JSON или скажем структуру.
Лучше использовать ЗаписатьJSON()
(18) Лучше использовать T-SQL Запрос — это самый быстрый метод))
Добрый день. Конфигурация УТ 11.1 при попытке выгрузить документ Реализация товаров и услуг — ошибка:
{ВнешняяОбработка.УниверсальныйОбменДаннымиВФорматеJSON.МодульОбъекта(1771)}: Поле объекта не обнаружено (ИмяПредопределенныхДанных)
Структура.Вставить(«ИмяПредопределенныхДанных», ЗначениеСсылки[«ИмяПредопределенныхДанных»]);
(20) AKV77, здравствуйте!
Какую версию платформы используете?
Уважаемый автор! А есть ли такая чудесная вещь для 8 2 ? Спасибо!
(22) xten, платформа 8.2 не умеет работать с json. Есть такая же, но выгружает в xml
Уважаемый автор, при загрузке файла программа пишет, что указанный файл уже существует Перезаписать его или нет, немного, кажется, неправильно, как-будто она его перезаписать хочет, а не просто загрузить. Но так , вроде, все работает. ))
(24) xten, стандартная обработка=)
УТ 11.2 при выгрузке стандартной обработкой через XML непонятно почему, но контактная информация партнеров не переносится.
В данной обработке пробовали?
Отбираю 400+ реализаций с движениями, получаю «Переполнение стека встроенного языка на сервере» УТ 11.1.1.13 платформа (8.3.6.2299)
(27) у вас случайно отладка не включена ? в каком режиме грузите? можно попробовать по частям
Спасибо! Помогла.
А в чем разница этой иhttps://infostart.ru/public/308563/ ?
(30) в моей более продвинутый отбор.
(30) для использования моей обработки не нужно знать язык запросов и руками добавлять объекты. Достаточно настроить отбор
столкнулся с двумя ошибками, что если в конфигурации есть реквизит с названием «Выбрать» не важно какого типа?
что если в плане счетов нет субконто?
обработка выдаёт ошибки при выгрузке )
я у себя уже поправил
(33) спасибо. Если на трудно, то кинь свою версию
как и куда?
так же есть такой момент, если в базе источнике был реквизит предопределенный, а в базе приёмнике такого реквизита нет, то обработка упорно хочет создать предопределенный реквизит и конечно у неё это не получается сделать и вываливается с ошибкой. (пока руки не дошли исправить)
ещё заметил что со структурой связанных документов какая то не разбериха.
справа база приёмник унф 1.6, слева база источник унф 1.5.
для правильной структуры нужна правильная последовательность загрузки?
(36) по идее не обязательно
(36)
(35) предопределение поправил. Больше не должен создавать
(38) версия таже самая? просто перекачать?