Преобразование 1С->JSON->1С для обменов, Web-сервисов

Публикация № 308198

Разработка - Инструментарий разработчика

веб-сервис web XML JSON

Небольшая библиотека функций по преобразованию данных из 1С в строку JSON и обратно.
Удобна для обмена данными между двумя базами 1С.
Позволяет преобразовывать в строку и обратно любые типы данных, для которых доступна XML-сериализация + объекты 1С (справочники, документы, ПВХ, ПВР).
Ссылки и объекты при передаче преобразуются из адресного пространства одной базы в адресное пространство другой базы по UID.

За основу брались функции преобразования из JSON и UnJSON в 1С

Добавлена поддержка любых XML-сериализуемых типов (ссылочных типов 1С, дат, перечислений, двоичных данных, хранилище значений и др)  + объектов 1С (справочников, документов, ПВХ, ПВР). При передачи объектов полное соответствие структур баз отправителя и получателя не обязательно. Совпадающие реквизиты заполняются, не совпадающие игнорируются. Если объект в базе приемнике найден, то он перезаполняется, иначе создается новый.

Преобразование простым обходом коллекций и обратное преобразование разбором строки. Возможно, для 8.3.6 можно будет переписать разбор через встроенные функции по работе с JSON для более быстрой работы.

Работа аналогична исходной обработке. Есть 2 функции: преобразование из строки в JSON и обратное из JSON в строку.
1. В первой базе выполняем команду "СтрокаJSON = JSON(Значение)";
2. Строковое значение "СтрокаJSON" передаем в другую базу любым способом (через файл, веб-сервис, .COM);
3. Во второй базе выполняем обратное преобразование "Значение = UnJSON(СтрокаJSON)";

Для использования достаточно перенести функции из модуля обработки в общий модуль и дополнительно указать соответствие между типами ссылок в двух базах.

#Область ПрограммныйИнтерфейс

Функция JSON(Значение) Экспорт

	СоответствиеХМЛ = Новый Соответствие;	
//	СоответствиеХМЛ.Вставить(Тип("Тип этой 1С базы"),"Тип 1С базы получателя");
	СоответствиеХМЛ.Вставить(Тип("Дата"),"Дата");
	СоответствиеХМЛ.Вставить(Тип("ВидДвиженияНакопления"),"ВидДвиженияНакопления");
	СоответствиеХМЛ.Вставить(Тип("ДвоичныеДанные"),"ДвоичныеДанные");
	СоответствиеХМЛ.Вставить(Тип("ХранилищеЗначения"),"ХранилищеЗначения");
	СоответствиеХМЛ.Вставить(Тип("УникальныйИдентификатор"),"УникальныйИдентификатор");
	СоответствиеХМЛ.Вставить(Тип("ВидСчета"),"ВидСчета");
	СоответствиеХМЛ.Вставить(Тип("ДокументСсылка.Поступление"),"ДокументСсылка.ПоступлениеТоваровУслуг");

	СоответствиеОбъектов = Новый Соответствие;	
//  ДЛЯ УКАЗАННЫХ ТУТ ОБЪЕКТОВ ОБЯЗАТЕЛЬНО УКАЗАНИЕ СООТВЕТСТВИЯ ССЫЛОК В СТРУКТУРЕ СоответствиеХМЛ	
//	СоответствиеОбъектов.Вставить(Тип("Тип объекта этой 1С базы"),"Конструктор нового объекта базы получателя");
	СоответствиеОбъектов.Вставить(Тип("ДокументОбъект.Поступление"),"Документы.ПоступлениеТоваровУслуг.СоздатьДокумент()");

	СоответствиеТипов = Новый Структура("СоответствиеХМЛ,СоответствиеОбъектов",СоответствиеХМЛ,СоответствиеОбъектов);
	Возврат НеФорматированныйJSON(Значение,СоответствиеТипов);	
КонецФункции

Функция UnJSON(СтрJSON) Экспорт
	Перем Значение;
	
	Если ПолучитьЗначениеJSON(СтрJSON,Значение)=0 Тогда
		Возврат Значение
	КонецЕсли;
	Возврат Неопределено
КонецФункции

#КонецОбласти 


У обработки есть форма с несколькими примерами для проверки преобразования.


В приложении 2 варианта обработки. Первая преобразует только XML-сериализуемых типы, вторая также  объекты 1С (справочники, документы, ПВХ, ПВР).

UPD. Пример использования:
1. Выгрузка/загрузка данных в формате JSON для отличающихся конфигураций (Такси+ОФ) - универсальная обработка по переносу данных между любыми конфигурациями.

Скачать файлы

Наименование Файл Версия Размер
1С_JSON_1.1.epf

.epf 11,55Kb
20.10.14
77
.epf 11,55Kb 77 Скачать
1С_JSON_1.2.epf

.epf 12,57Kb
20.10.14
320
.epf 12,57Kb 320 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. vano-ekt 840 20.10.14 11:59 Сейчас в теме
2. ekaruk 5115 20.10.14 12:06 Сейчас в теме
(1) vano-ekt, В 8.3.6 будет всего лишь добавлена возможность потокового чтения,
преобразования простых типов (строка, булево и др). Никаких встроенных функций по преобразованию в JSON типов 1С новшество пока не предусматривает (хотя возможно еще добавят).
Теоретически новая платформа позволит работать с JSON на порядок быстрее,чем при работе со строкой.
Но с точки функционала он не даст ничего, что не было бы уже кем-то реализовано в обработках. Возможности полноценного преобразоваия типов 1С в ней не добавили.
Собственно, это видно в самом анонсе на примере подразделения организации.
Когда появится возможность, я, возможно, поменяю в этой же библиотеке работу со строкой на работу с типами JSON. Но сам интерфейс и принцип работы не изменится абсолютно.
izidakg; Rustig; +2 Ответить
6. Serginio 823 20.10.14 14:42 Сейчас в теме
(2) Можно это реализовать и на нет, предварительно описав классы
http://msdn.microsoft.com/ru-ru/library/bb412179(v=vs.110).aspx

и
http://infostart.ru/public/238584/
11. Rustig 1534 23.10.14 10:49 Сейчас в теме
(1) спасибо за ссылку, интересная информация.
не знаете, статьи "Заметки из Зазеркалья" дублируются в диски ИТС?
Хотелось бы видеть такого рода статьи в разделах ИТС-дисках.
3. vano-ekt 840 20.10.14 12:21 Сейчас в теме
Так я к тому что стоит ли торопиться?)
...
При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата.
...
Дальнейшее развитие
Мы думаем над тем, чтобы предоставить вам возможность сериализации в JSON прикладных типов 1С:Предприятия: ссылок, объектов, наборов записей и т.д. Поэтому есть вероятность появления ещё одного, третьего уровня средств работы с JSON. Этот уровень позволит вам преобразовывать в JSON любые типы 1С:Предприятия, для которых поддерживается XDTO-сериализация в XML.
4. ekaruk 5115 20.10.14 12:24 Сейчас в теме
(3) vano-ekt, Так никто и не торопится.
Я просто выложила то, что уже корректно работает на любой платформе.
Дальше посмотрим, что там еще придумают.
5. vano-ekt 840 20.10.14 13:15 Сейчас в теме
(4) ага, быстрее б родили :) при больших нагрузках алгоритм с ИС заметно ресурсы ест :)
8. kser87 2050 20.10.14 23:46 Сейчас в теме
c 8.3.6 Json будет поддерживаться на уровне платформы.
9. vabue 121 22.10.14 09:29 Сейчас в теме
Кто-нибудь тестировал что быстрее в мире 1С, разбор JSON или XML? А генерация?
10. ekaruk 5115 22.10.14 10:55 Сейчас в теме
(9) vabue, Не тестировала. Думаю, на текущий момент в мире 1С быстрее ХМЛ. Просто потому, что 1С работае.т с ним средствами платформы. С JSON работа выполняется как со строкой. Имеет смысл проверять разве что с 8.3.6.
Из плюсов JSON - он компактнее.
vabue; Rustig; +2 Ответить
12. ZLENKO 23.10.14 14:08 Сейчас в теме
(9) vabue, "Кто-нибудь тестировал что быстрее в мире 1С, разбор JSON или XML? А генерация?"

Голосую за XDTO :-) Сериализация мгновенная, десериализация очень быстрая!
Можно десериализацию делать используя неймспейс другой базы для обмена между разными конфигурациями.
14. Serginio 823 23.10.14 18:18 Сейчас в теме
(12) В Мире Net да и вообще сейчас модно использовать protobuf
http://www.forum.mista.ru/topic.php?id=722310#53
dour-dead; vabue; +2 Ответить
51. darkmessiahan 115 11.07.19 16:33 Сейчас в теме
52. Serginio 823 11.07.19 16:56 Сейчас в теме
(51) Старая уже. Сейчас в тренде Microsoft Bond
13. a.podobin 23.10.14 18:04 Сейчас в теме
15. vabue 121 27.10.14 22:17 Сейчас в теме
(13) a.podobin, Ну, тут две разных структуры данных. Да и интересовало разработчика именно загрузка на сайт, а не выгрузка из 1С.

(12) ZLENKO.PRO, Есть ли поддержка XDTO в гетерогенных системах? Например, в тех же ESB?

(10) Надо будет провести эксперимент :)
16. bendarik 03.11.14 15:31 Сейчас в теме
А почему не вышло нормально обрабатывать значения с типом "Дата"?
На сколько я понимаю, Вы добавляете тип "Дата" в "СоответствиеХМЛ" и после работаете с ним как с не примитивным типом.

При сериализации у Вас получается избыточная конструкция:

"Период":{
"Type":"Дата",
"UID":"2014-11-03T14:29:06"
}

когда должно быть:

"Период":"2014-11-03T14:29:06"
17. ekaruk 5115 03.11.14 16:30 Сейчас в теме
(16) bendarik, Она не избыточная.
Теоретически у нас может быть текстовое поле, в котором указано значение "2014-11-03T14:29:06".
При сериализации мы должны сохранить его текстом, а не преобразовать в дату.
Такое представление гарантирует идентичность исходных и полученных данных.
18. bendarik 03.11.14 17:16 Сейчас в теме
(17) согласен, что во имя идентичности исходных и полученных данных необходимо дополнительное описание свойств значений НО...

но, к примеру, я использую (де)сериализацию JSON для уменьшения размера передаваемых пакетов при обмене через web-сервисы и было бы ибеально даты обрабатывать как примитивные типы без дополнительного описания типа, т.к. это лишние байтики (мелочь, а приятно).

Например, дату можно было бы сериализовать как и сейчас в формате XML, но без кавычек:
"Период":2014-11-03T14:29:06

К слову, Ваша публикация подтолкнула начитаться и решиться переписать обмены с XML на JSON ;)
20. ekaruk 5115 03.11.14 17:28 Сейчас в теме
(18) bendarik,
"Период":2014-11-03T14:29:06

Именно в таком формате нельзя. Двоеточие это разделитель. Хотя, конечно, какой-то формат можно было подобрать.
Я пошла по простому пути. Думаю, не принципиально.
По переписыванию рекоммендую подождать 8.3.6. Гораздо быстрее будет работать на платформенных механизмах, чем на строковых функциях.
19. bendarik 03.11.14 17:24 Сейчас в теме
(17) Вы аналогично поступаете со значениями типа "булево", записывая их без кавычек как true или false. Вероятно, что дату так же можно считать.

Но лучше попробовать и написать, что вышло
21. Serginio 823 03.11.14 17:31 Сейчас в теме
http://snippets.artvolk.sumy.ua/view/167/daty-v-formate-iso-8601-pri-json-serializacii-v-aspnet-mvc

Сериализатор JSON, используемый в ASP.NET MVC по умолчанию сериализует даты в строки подобного вида:

"\/Date(1299741864000)\/"
Причины подробно объясняются авторами: в спецификации JSON не определён тип данных для даты и времени, а выбранный для ASP.NET MVC формат удобен для JavaScript-клиентов.
bendarik; +1 Ответить
22. Serginio 823 03.11.14 17:41 Сейчас в теме
http://msdn.microsoft.com/ru-ru/library/bb412170(v=vs.110).aspx
Формат DateTime при передаче по линиям связи
Значения типа DateTime представляются строками JSON вида "/Date(700000+0500)/", где первое число (в данном случае 700000) — это число миллисекунд в часовом поясе GMT по обычному (не летнему) времени, прошедшее с 1 января 1970 г. Это число может быть отрицательным для представления более раннего времени. Часть строки "+0500" является необязательной и показывает, что это время в формате Local, т. е. при десериализации оно должно быть преобразовано в местный часовой пояс. Если эта часть строки отсутствует, время десериализуется как Utc. Собственно число (в данном случае "0500") и его знак (+ или -) игнорируются.
При сериализации времен формата DateTime, Local и Unspecified времена записываются со смещением, а время формата Utc записывается без смещения.
JavaScript-код клиента ASP.NET AJAX автоматически преобразует такие строки в экземпляры DateTime JavaScript. При наличии других строк аналогичного вида, не принадлежащих к типу DateTime в .NET, они также преобразуются.
Преобразование происходит только при условии, что символы "/" предваряются escape-знаками (т. е. JSON-фрагмент выглядит так: "\/Date(700000+0500)\/"); по этой причине JSON-кодировщик WCF (реализуемый привязкой WebHttpBinding) всегда предваряет символ "/" escape-знаком.
23. phsin 183 20.11.14 10:56 Сейчас в теме
А для 7.7 есть что-нибудь похожее?
24. Elisy 930 28.11.14 08:00 Сейчас в теме
По скорости, если кому-то интересно. Сериализация Json работает очень медленно по сравнению с XML-сериализацией.
Оптимизация делалась для веб-сайта http://www.oboi.kg
На данных из примерно 5 тысяч записей таблицы значений перевод в XML уменьшил время обработки со 120 секунд (2 минуты) до 4 секунд.
26. ekaruk 5115 28.11.14 11:19 Сейчас в теме
(24) Elisy, (25) Serginio, XML и JSON это всего лишь форматы текстового представления данных.
Скорость работы зависит не от формата, а от используемой для преобразования библиотеки.
Можно найти примеры разницы скорости на ПОРЯДКИ при использовании одних и тех же форматов.
То, что написанная Васей библиотека на PHP для работы с XML в 100 раз быстрее, чем написанная Петей на Python библиотека для работы с JSON, абсолютно ничего не говорит о скорости форматов.
Имеет смысл обсуждать скорости работы библиотек, но не имеет смысла обсуждать скорости форматов.
Фреймворк 1С-Предприятие на текущий момент имеет встроенные библиотеки для работы с XML, поэтому стандартная сериализация в XML через XDTO-типы в любом случае будет быстрее любой JSON-сериализации через строку.
С выходом 8.3.6 можно будет говорить о сравнении скорости стандартных библиотек XML и JSON.
Сейчас обсуждени скорости, на мой взгляд, смысла особого не имеет.
27. Serginio 823 28.11.14 11:40 Сейчас в теме
(26) Не совсем так. Я еще упоминал Protobuf и вот появляются новые форматы например MsgPack http://en.wikipedia.org/wiki/MessagePack
При этом это не всегда текстовая сериализация. Бинарная она и компактнее и быстрее доступ. Например в XML сериализации проблема с циклическими ссылками http://www.forum.mista.ru/topic.php?id=687222#15

поэтому ищутся компактные и более продвинутые форматы.
А в 1С куча чего нет, так что например наполную приходится использовать например Net
28. ekaruk 5115 28.11.14 12:39 Сейчас в теме
(27) Serginio, Разумеется, бинарное представление компактнее текстового.
Но у текстового есть огромное преимущество, которое перекрывает этот недостаток - его можно открыть любым текстовым редактором и просмотреть.
На самом деле для большинства решаемых в 1С задач быстродействие +/- несколько секунд и даже пару минут не критично абосолютно. С учетом постоянных изменений, скорость разработки и простота модификации и поиска ошибок часто важнее, чем быстродействие.
Трата времени на ускорение в несколько секунд путем усложнения кода просто нерентабельна.
29. Serginio 823 28.11.14 12:59 Сейчас в теме
(28) Угу. Помню пришлось переписать универсальный обмен на обмен через сериализацию ОбъектовXDTO . Бывают разные объемы где потери секунд превращаются в часы. Все зависит от задачи. По твоей логике XML сериализация лучше всех, однако приходится писать Json сериализацию, так как нужно общаться с сайтами которые используют именно такой вариант обмена. А затем и для ProtoBuf. Ты можешь считать как угодно, а программисты для высоконагруженных серверов выбирают более быстрые и компактные алгоритмы сериализации. Вот ты уже столкнулась с тем, что при каждом вызове Вэб сервиса 1С происходит инициализация сессии и тебя это напрягает. А представь, что нужно обрабатывать десятки или сотни тысяч обращений в секунду.
30. ekaruk 5115 28.11.14 18:01 Сейчас в теме
(29) Serginio, Есть разные задачи.
Бывает, что критичны и милисекунды. Такие задачи я тоже решала.
Но реально в 95% случаев трата времени разработчика на ускорение просто нерентабельна.
Лучше сделать проще и понятнее, все равно скорее всего через месяц алгоритм менять и все переписывать..
31. Serginio 823 28.11.14 21:32 Сейчас в теме
Я не про то, что лучше для тебя, а то что тебе нужно подстраиваться под других которые и выбирают форматы.
Раньше был XML, затем JSON, сейчас ProtoBuf. Ты же написала парсер не для обмена между своими программами, а для обмена между сайтами сторонних производителей, а вот для них уже свои параметры, что хорошо, а что плохо. А вот, то что через месяц менять алгоритм, это хорошо только на период отладки. А вот например на Net я напишу обмен с 1С для любого алгоритма без всяких затрат времени, так что проблема не во времени, а в квалификации.
32. bendarik 04.12.14 12:55 Сейчас в теме
Сравнил XML и JSON.
JSON молодец, но сжатый XML ни чем не уступает сжатому JSON...

Вот цитата из лекции о сжатии данных:
"В основе алгоритма сжатия (алгоритмы группы KWE) по ключевым словам положен принцип кодирования лексических единиц группами байт фиксированной длины. Примером лексической единицы может быть обычное слово. На практике, на роль лексических единиц выбираются повторяющиеся последовательности символов, которые кодируются цепочкой символов (кодом) меньшей длины. Результат кодирования помещается в таблице, образовывая так называемый словарь."

Я по web-сервису меняюсь двоичными данными и архивирую каждый файл обмена. Такие дела...
33. pitnn 10.12.14 12:17 Сейчас в теме
Добрый день.
Что-то я не разобрался как из JSON-строки получить структуру данных ключ/значение для дальнейшего использования в 1С. Подскажите, пожалуйста
34. ekaruk 5115 10.12.14 12:32 Сейчас в теме
(33) pitnn, Просто пишете UnJSON(<ВашаСтрока>). На выходе будет объект в типах 1С (соответствие или массив, с которыми можно стандартно работать). Сама функция в модуле объекта обработки.
Если объекты 1С (ссылки, документы) не используете, то СоответствиеХМЛ заполнять не нужно вообще. Пусть остается пустым.
35. pitnn 10.12.14 14:51 Сейчас в теме
(34) спасибо за ответ, но в том-то и дело, что не так все просто как описано вами ))). При разборе JSON-строки вылетает ошибка:
"Не удалось преобразовать строку в значение!{ВнешняяОбработка.JSON_1C.МодульОбъекта(213)}: Ошибка при вызове метода контекста (Вставить)
ОбъектСтруктура.Вставить(Ключ,Значение);
по причине:
Задано неправильное имя атрибута структуры".

А связано это вот с чем. При обработке конструкции вида:
[
{
...
"deliveryAddress": {
"": null
},
...
}
]
ключ оказался пустым, что и привело к вызову исключения при добавлении в структуру.
36. ekaruk 5115 10.12.14 15:09 Сейчас в теме
(35) pitnn, Ну, логично. Ключ не может быть пустым. Иначе как 1С его должна в структуру вставить? Вроде стандарты JSON такого не предусматривают. Добавьте свою обработку (ключ по умолчанию или такие значения игнорировать), если у Вас такие данные встречаются.
37. pitnn 10.12.14 15:10 Сейчас в теме
Аналогично с конструкцией вида:
"deliveryAddress": {
"177353": "г. Москва"
},

Тут ключ имеет числовое значение и не может использоваться в структуре
39. ekaruk 5115 10.12.14 15:18 Сейчас в теме
(37) pitnn, А где Вы такие данные нашли?
У меня были похожие проблемы выгрузке в JSON контактной информации для организаций. Там какой-то сложный формат XML хранится.
Не помню точно, как обходила.
В этой обработке http://infostart.ru/public/308563/ я добавляла дополнительные ветки в стандартный разбор. Если у вас передача данные между базами 1С, можете попробовать из неё код взять или просто проверить на своих данных.
40. pitnn 10.12.14 15:23 Сейчас в теме
(39) Сторонний сайт такие данные предоставляет. Я не могу на это влиять, поэтому приходится обрабатывать то, что дают ))
38. pitnn 10.12.14 15:11 Сейчас в теме
А в целом спасибо за обработку
41. uri1978 128 06.02.15 17:47 Сейчас в теме
Спасибо, сильно помогли.
42. Serjeo 106 20.11.15 17:41 Сейчас в теме
В 8.3.7 полностью реализована возможность JSON-сериализации объектов XDTO.
43. AlBelkin 04.03.16 18:34 Сейчас в теме
Здравствуйте! Очень интересная штука. Подскажите, какой версии 1С будет достаточно, чтобы "пощупать" эту библиотеку? Есть демка 1С для обучения http://1c-uroki.ru/articles/download_1C_8.2 , она подойдёт?
44. ekaruk 5115 06.03.16 12:53 Сейчас в теме
(43) AlBelkin, Подходит для любой платформы, начиная с 8.2.
Демка вполне подойдет.
45. dsdred 1445 11.03.16 14:21 Сейчас в теме
Не совсем понял зачем такие сложности?
Для обмена использую сериализацию.
ДанныеВходные - могут быть ТЗ, Структура, просто значение и т.д.

//Серилизатор/Десирелизатор JSON
Функция СериализаторJSON(ДанныеВходные) Экспорт
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON,ДанныеВходные,НазначениеТипаXML.Явное);
СтрокаJSON = ЗаписьJSON.Закрыть();
Возврат СтрокаJSON;
КонецФункции
Функция ДесерилизаторJSON(ДанныеВходные) Экспорт
ЧтениеJSON = Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(ДанныеВходные);
ДанныеВозврат = СериализаторXDTO.ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
Возврат ДанныеВозврат;
КонецФункции
46. ekaruk 5115 11.03.16 15:25 Сейчас в теме
(45) dsdred,
1. Ну вообще-то преобразование структуры это немного не то, что преобразование документа. Эта библиотека преобразует объект 1С (документ/справочник) в другой объект 1С.
2. Ваш код не будет работать на платформах ниже 8.3.6.
47. dsdred 1445 11.03.16 15:48 Сейчас в теме
(46) ekaruk
1 Ясно. Обычно сопоставление (документ/справочник) на стороне веб сервиса обрабатываю после десерилизации.
2 Это да, есть еще те кто сидят на старых Платформах... Это при том, что на днях 8.3.8 выйдет и уже есть версия для тестирования 8.4.1.445
48. zels 171 24.02.17 20:47 Сейчас в теме
Хорошая штука, но пришлось немного допилить:
1. Сделал загрузку файлов и JSON->объекты в обычном приложении, т.к. если запускать в тонком клиенте, то при записи объектов могут возникать ошибки (если используются процедуры обычного клиента).
2. Сделал возможность транзакции и вывода через 100 объектов, т.к. при загрузке десятков тысяч объектов вывод каждого тормозит.
49. pavel_pss 266 21.03.18 10:26 Сейчас в теме
Хорошая обработка, но она выгружает только один объект. То есть в обработке выбирается документ и в файл попадет вся информация о нем, а поля например контрагент будут выгружены в только виде ГУИДа, а самого описания контрагента нет, это же не правильно! Нужно было тогда дописывать чтобы и ссылочные реквизиты выгружались. А так обработка получается не полноценной. Кому нужно будет полную версию, обращайтесь. Позже выложу в свою учетку.
53. LomayaZakat 14.10.19 11:45 Сейчас в теме
54. Skotarev 12 24.03.20 01:40 Сейчас в теме
Обработка в архиве была довольно давно, в целях изучения.
Сейчас пригодилась на практике в экстренной ситуации.
Спасибо, очень помогла.
55. SoftIce 42 21.04.20 01:07 Сейчас в теме
При записи в файл ( ЗаписьJSON.ЗаписатьЗначение(JSON(МассивЗначений)); )
все переносы строк, включая структурные, т.е. переносы строк которые образуют структуру json документа превращаются в символ "\n".
Так в файле образуется одна длинная строка.
"[\n{\n\"OBJECT\":true,\n\"NEW\":\"Справочники.ВидыНоменклатуры.СоздатьЭлемент()\", и.т.д.
Что приводит к проблемам обратного преобразования из json в значение 1С.
Например Ключ структуры OBJECT превращается в
"
OBJECT"
и выдает ошибку при создании структуры.
56. SoftIce 42 21.04.20 14:21 Сейчас в теме
Перечисления тоже некорректно обрабатываются. В файл попадает синоним значения.
При десериализации по синониму не может найти корректное значение. Хотя, почему то не находит даже если Синоним значения перечисления совпадает с его Именем.
Оставьте свое сообщение

См. также

Установка предопределенных элементов: просмотр, исправление и поиск ошибок (задвоенных и отсутствующих) Промо

Инструментарий разработчика Универсальные обработки v8 1cv8.cf Абонемент ($m)

Простая обработка для просмотра и установки значений предопределенных элементов. Позволяет заменить значение предопределенного элемента с одного элемента справочника на другой, удалить предопределенный элемент (снять пометку предопределенности), установить пометку переопределенного элемента. Проверяет предопределенные данные на наличие задвоений и отсутствующих. Работает со справочниками, планами счетов, планами видов характеристик, планами видов расчетов.

2 стартмани

06.10.2014    147371    1973    ekaruk    164    

Работа с релизами 1С и договорами ИТС

WEB БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Работа с релизами 1С и партнерским кабинетом.

2 стартмани

15.08.2019    12967    39    RocKeR_13    13    

Вам нравятся запросы в 1С?

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    18749    4    m-rv    86    

Модель объекта

Инструментарий разработчика v8 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    11606    0    vadim1980    5    

Навигатор по конфигурации базы 1С 8.3 Промо

Инструментарий разработчика Универсальные обработки v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.65 от 05.08.2020

3 стартмани

28.10.2018    31638    283    ROL32    67    

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8 v8::Mobile БУ УУ Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    42016    247    informa1555    230    

Проверка VAT номеров

WEB v8 1cv8.cf Абонемент ($m)

Обработка для вызова сервиса проверка VAT номера.

1 стартмани

26.11.2018    11370    1    wtlz    1    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    20310    13    RocKeR_13    16    

Внешняя компонента для работы по Web-socket протоколу Промо

Разработка внешних компонент WEB v8 Абонемент ($m)

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

5 стартмани

30.03.2018    24425    34    Ditron    68    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    26349    26    informa1555    26    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.

1 стартмани

17.07.2018    42649    17    kalyaka    16    

Пример использования REST API Яндекс Диска

WEB v8 1cv8.cf Абонемент ($m)

Пример использования REST API Яндекс Диска: чтение диска, добавление каталога, загрузка файла, скачивание файлов или каталогов, удаление файлов или каталогов.

1 стартмани

26.06.2018    22952    36    MKFreeUser    14    

[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо

Универсальные функции Инструментарий разработчика Учет ТМЦ Учет ТМЦ v8 1cv8.cf Россия БУ Абонемент ($m)

Расширение позволяет без изменений конфигурации проверять остатки по регистру бухгалтерии при проведении каждого документа и запрещает проведение при появлении отрицательных остатков после проведения.

1 стартмани

17.08.2015    45850    155    ekaruk    32    

Обмен файловыми базами данных через Yandex диск

WEB v8 Россия Абонемент ($m)

Выполнение операций обмена с Yandex диском для файловых БД, по протоколу WebDav, в автоматическом или ручном режимах.

1 стартмани

11.06.2018    16181    5    slimper    1    

Конфигурация для просмотра публичных телеграм каналов

WEB v8 Абонемент ($m)

Просмотр и каталогизация в более удобном виде публичных телеграм каналов, групп и чатов.

1 стартмани

02.06.2018    16741    10    DO_WHILE_LOOP    7    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар")

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    28986    86    m-rv    57    

Faster - многофункциональный ускоритель работы программиста 1С Промо

Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Программа Faster 8.7 позволяет ускорить процесс работы программиста 1С (и не только 1C). Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex) Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Полностью переделан механизм перехвата клавиш, теперь не зависает при обработке скриптов.

1 стартмани

24.05.2012    76439    207    moolex    145    

Регистры правил [Расширение]

Инструментарий разработчика Информационная безопасность v8 v8::Права УТ11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    16787    9    33lab    1    

Построение маршрута доставки с расчётом расстояния для любой базы УФ

Универсальные обработки WEB Оптовая торговля Оптовая торговля v8 v8::УФ 1cv8.cf Абонемент ($m)

Графическое изображение маршрутного листа по картам гугл. Работает на любой конфигурации с управляемыми формами. Использует новую версию api google-карт от 13.02.2018 года под IE11.

10 стартмани

24.02.2018    33887    42    KorotkovRV    16    

Заполняем по шаблону (по умолчанию)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

Простой в подключении, универсальный и достаточно удобный механизм заполнения реквизитов произвольных документов/справочников значениями по умолчанию. Реализован в расширении, но может быть и непосредственно включен практически в любую конфигурацию на управляемых формах простым копированием одной формы и двух команд. Весь код в статье.

1 стартмани

08.02.2018    26740    19    mvxyz    17    

Консоль запросов + ТЗ как параметры Промо

Консоль запросов v8 1cv8.cf Украина Абонемент ($m)

Стандартная консоль запросов, с добавленной возможностью использования описания/заполнения/использования таблиц значений как параметров. Совместима с настройками базовой консоли. Упрощает отладку запросов, использующих временные таблицы.

2 стартмани

12.11.2010    33710    60    Kashemir    24    

Сервер push сообщений “Push0k“ 18.05

WEB v8 1cv8.cf Абонемент ($m)

Аналог других “мессенджеров“. Позволяет практически все то же самое, что и другие решения. За исключением смайлов, эмодзи, голосовой и видео связи. Основное отличие от других решений, открыта и доступна для изменения серверная и клиентская часть месенджера. Общедоступной серверной части нет, за серверную часть отвечаете вы сами.

1 стартмани

19.12.2017    16854    12    PloAl    20    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    25612    49    kwazi    6    

Программное формирование форматированной строки в стиле html+inline CSS

Работа с интерфейсом Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Если вам приходилось работать с форматированными строками программно, то вы знаете, какая это боль. Данное решение облегчает программное формирование таких строк.

1 стартмани

18.11.2017    29619    32    bonv    10    

[x1c.ru] 1CDBin: Работа с файлами *.1CD на низком уровне средствами языка 1С с возможностью чтения таблиц (поддерживается формат 8.3.8.0) Промо

Тестирование и исправление Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Обработка позволяет просматривать файловые базы 1CD на низком уровне средствами встроенного языка. Реализована часть функциональности Tool_1CD, но на языке 1С Предприятия. Показываются таблицы, параметры таблиц, поля таблиц, записи таблиц, значения полей BLOB, есть 16-ричный просмотр страниц базы и консоль кода. Можно использовать для изучения структуры файлов 1CD, просмотра баз 1CD для выявления повреждений, создания своих обработок для выгрузки данных без открытия исследуемой базы в 1С:Предприятии.

1 стартмани

07.10.2014    50957    207    GusevNA    75    

Подсистема Вики - интеграция 1С и сайта под управлением MediaWiki

WEB v8 Абонемент ($m)

Редактирование статей сайта Mediawiki из 1С. Формирование функционального описания конфигурации на сайте Вики.

1 стартмани

19.09.2017    27270    35    shmalevoz    20    

Работа с картой. Кадастровый учет (Росреестр). Тематические карты

WEB Рабочее место v8 v8::УФ 1cv8.cf Абонемент ($m)

Внешняя обработка для работы с картами в 1С. Получения изображения с публичной кадастровой карты России, построения тематических карт

5 стартмани

31.08.2017    16658    11    vipchep    0    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

В этой статье я на примерах разберу некоторые механизмы расширений конфигураций 1С. А именно «перехваты» методов модуля объекта и «перехваты» событий формы и элементов формы. Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки.

1 стартмани

30.05.2017    121074    13    signum2009    46    

Набор подсистем "Умные таблицы"

Инструментарий разработчика v8 Беларусь Россия Казахстан Абонемент ($m)

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    31812    94    Silenser    34    

Настройка рекламной кампании Яндекс.Директ на 30000 ключевых фраз за 60 минут - теперь это реально!

WEB v8 Реклама, PR и маркетинг Россия Абонемент ($m)

Конфигурация для настройки Яндекс.Директа.

10 стартмани

20.10.2016    28317    51    avalakh    10    

Конструктор-тестер http запросов в 1С

WEB Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Данная обработка позволяет в несколько кликов конструировать http запросы на языке 1С и просматривать результаты их выполнения.

3 стартмани

19.08.2016    40910    295    hlopik    17    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    46436    36    Demanoidos    60    

Легкий интернет-магазин из УТ 11.2

WEB Управление взаимоотношениями с клиентами (СRM) Оптовая торговля Розничная торговля Управление взаимоотношениями с клиентами (СRM) Оптовая торговля Розничная торговля v8 УТ10 УУ Абонемент ($m)

Обработка создания интернет-магазина из УТ 11. Создается единственный файл html, который содержит все выгруженные товары. Клиент составляет и отправляет заказ вам на e-mail прямо из браузера, не прибегая к использованию стороннего ПО.

11.08.2016    30215    23    hlopik    36    

Подсистема обмена данными с порталом ИМНС по электронным счетам-фактурам (автоматический обмен)

Внешние источники данных WEB Инструментарий разработчика v8 1cv8.cf Беларусь БУ НДС Абонемент ($m)

Подсистема включает документы и обработки для автоматического обмена данными с порталом ИМНС через web-сервис. Присутствует возможность заполнения данными типовых операций за период, учёта входящих документов, учёта произвольных исходящих документов. Приложены обработки для запуска задания планировщика на автоматический обмен данными.

1 стартмани

28.07.2016    32447    19    c1nil    4    

Навигатор по структуре и данным баз 1С 8

Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Просмотр структуры и данных информационных баз 1С:Предприятие 8.2, 8.3. Состав, типы объектов, табличных частей, движений. Размер, структура хранения объекта. Для администраторов и разработчиков. Версия 1 - на обычных формах, версия 2 - на управляемых.

1 стартмани

11.07.2016    27851    127    o.nikolaev    17    

Хранение файлов в томах на диске (для УПП 1.3)

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    54660    7    wowik    32    

Остатки на каждый день в запросе

Практика программирования Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    54233    19    arakelyan    18    

Консоль запросов "Запросник" для управляемых форм с подсветкой синтаксиса

Консоль запросов v8 1cv8.cf Абонемент ($m)

Вот уже много лет я использую замечательный инструмент для работы с запросами - Запросник. Однако, с переходом на управляемые формы для его использования пришлось запускать базы в устаревшем толстом клиенте, да еще и разрешать в свойствах конфигурации использование обычных форм. В 2014 году появился запросник на управляемых формах, который, к сожалению, оказался несовершенен из за ограничений платформы. Самое неприятное из них - отсутствие подсветки синтаксиса. Мне кажется, что я нашел решение этой проблемы.

1 стартмани

19.04.2016    36269    256    1С_Мастер    42    

Просмотр данных системы Платон на картах Google

Универсальные обработки WEB v8 1cv8.cf Автомобили, автосервисы Транспорт, автопарки, такси Абонемент ($m)

Обработка для просмотра предполагаемых треков движения транспортного средства на карте Google согласно данным, предоставляемым системой Платон в формате CSV. Работает под 8.2 и 8.3, обычное и управляемое приложение, может подключаться к типовым конфигурациям в качестве внешней обработки.

1 стартмани

15.04.2016    31516    18    anig99    8    

Трекинг номеров РПО в Почте России

WEB Оптовая торговля Оптовая торговля v8 Оптовая торговля, дистрибуция, логистика Абонемент ($m)

Относительно недавно Почта России стандартизировала и описала сервисы получения информации о регистрируемом почтовом отправлении (РПО). Представляю вашему вниманию конфигурацию-обертку над сервисами Почты России. Она позволяет просто (http-запросы) и без изменений конфигурации подключить сервисы отслеживания к своим информационным системам.

2 стартмани

28.03.2016    25580    10    Smaylukk    3    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    76829    152    igo1    53    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

Практика программирования v8 Абонемент ($m)

При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать "Небольшой" запрос.

1 стартмани

03.03.2016    17094    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

Предлагаемая в работе обработка включает обычную и управляемую формы, которые максимально точно реализуют функциональность системного диалога выбора типа в толстом клиенте обычное приложение (включая оформление диалога). Эти формы имеют дополнительные интерфейсные удобства и могут быть использованы в качестве альтернативных диалогов выбора типа.

1 стартмани

17.02.2016    47726    50    yuraos    17    

Яндекс.Деньги "Благотворительность"

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Яндекс.Деньги теперь в 1С. Форма для приема благотворительных взносов. Форму легко сделать и вставить на любую страницу сайта или блога. Платежи будут приходить на ваш кошелек. На форме есть три способа платежа: из кошелька, с банковской карты, с баланса мобильного.

1 стартмани

16.02.2016    22110    8    Tatitutu    5    

Модуль для работы 1С (платформа 8.2 и выше) с внешними SOAP Web-сервисами

Внешние источники данных WEB Интеграция v8 1cv8.cf Абонемент ($m)

Модуль для работы 1С (платформа 8.2 и выше) с внешними Web-сервисами, реализованными по протоколу SOAP.

2 стартмани

15.02.2016    38812    84    lunjio    15