Работа с JSON в 1С 8 3
Вставка
- Опубліковано 5 бер 2022
- Как можно меня отблагодарить: pay.cloudtips.ru/p/0c670bd3
В видео рассмотрены основы работы с JSON средствами языка 1С. Приводятся три основных подхода к формированию и чтению JSON - объектный подход, построчная запись, и сериализация прикладных объектов.
Также приводится пример использования функции восстановления при чтении JSON.
Формат JSON находит широкое применение в платформе 1С 8, и используется в http-сервисах, web-сервисах, обмене с другими базами данных 1С, формировании различных файлов настроек и конфигурационных файлов.
Для удобства пользуйтесь таймкодами:
00:31 - немного о формате JSON
02:02 - запись и чтение объектов языка - массивов, структур, соответствий.
04:30 - объектное чтение JSON
06:32 - чтение JSON с повторяющимися ключами
07:33 - функции восстановления и работа с датами в JSON
11:30 - потоковый подход к работе с JSON в языке 1С.
12:10 - потоковая (построчная) запись JSON средствами языка 1С
14:43 - потоковое чтение из JSON
19:20 - сериализация прикладных объектов 1С в JSON
Добавляйте в закладки мой сайт 1c.alexcode.ru/first-steps/ с полезными материалами по настройке и программированию 1С
Курс «Разработчик 1С с нуля»
1c.alexcode.ru/
Индивидуальное обучение 1С
1c.alexcode.ru/online-consult...
Видео также размещено на моем Дзен-канале «1С с Леоновым»: dzen.ru/video/watch/63772387b...
Отличное видео!
🤝
Спасибо! Полезный материал для понимания JSON! Надеюсь, Вы находите время в том числе и на преподавание в учебных заведениях!
Спасибо за душевный отзыв! Да, преподаю в одной из известных онлайн-школ, а также провожу индивидуальные занятия в онлайне.😇
Отличный уроки, и на сайте полезная информация. Спасибо!
Очень приятный и позитивный отзыв! Вдохновляет.👍🏻 Идей для видео ещё очень много, главное найти на всё это время 🤭
Спасибо за видео. Приятно слушать и смотреть. А главное полезно.
Благодарю за обратную связь и высокую оценку! Да уж, до 30% "неприятного и бесполезного" безжалостно вырезаю на этапе монтажа😄😉
Очень круто. Спасибо огромное!
Стараемся:) Рад, если видео оказалось полезным.
Спасибо тебе большое!
Спасибо за подписку! ;)
Огромное спасибо! А можно подобное видео про работу с XDTO? Был бы Очень признателен.
Благодарю за идею! Как раз думал, будет ли интересно, если записать про SOAP сервисы и XDTO. Раз интерес есть, конечно запишу!
Да, было бы неплохо
Отличный курс, все предельно понятно и хорошо объяснено)
Подскажите, что за настройка подсветки повторяющихся слов в коде (Вы два раза щелкаете по словосочетанию и подсвечиваются голубым цветом все места, где это словосочетание встречается)
Благодарю! Приятно знать, что мои старания кому-то пригодились :)
По поводу подсветки - это можно сделать в меню Сервис / Параметры, вкладка Модули, там вкладка Редактирование. Нужно найти пункт Выбранный идентификатор, и выбрать цвет какой захотите. Также можно указать цвет для пункта Текущий идентификатор.
Спасибо.Можно вопрос:Если не управляемые формы на экран показать СтрокаJson.Да и управляемые формы, ни видно ,как ставили в форму реквизит СтрокаJson
Не совсем понял в чем вопрос :)
Элементы на форму мы добавляем как обычно, хоть в управляемых формах, хоть в обычных.
Ваш вариант потокового чтения не правильно читает JSON с валютой.:
{
"base": "USD",
"date": "2022-02-27T00:00:00",
"rate": 100
}
Поле "rate" не попадает в ПрочитанноеСоответствие
Код для разбора конкретного формата JSON в потоковом чтении и не должен читать любой произвольный JSON :)
Как правило, оно пишется под конкретную заранее известную структуру, в видео я делаю на этом акцент (15:15). И пример потокового чтения основан на тексте JSON из примера с потоковой записью
В примере с валютой алгоритм не учитывает что есть строка с пустым значением, и неверно определяет соответствие ключей и строк
Попробуйте например без переноса строки перед последней скобкой
{
"base": "USD",
"date": "2022-02-27T00:00:00",
"rate": 100}
Чтобы это учесть, нужно по-другому написать потоковый разбор текста JSON ;)
А для универсального подхода есть объектное чтение через ПрочитатьJSON, и в принципе 90% задач применяется именно объектный подход - т.е. сразу JSON читается в объект 1С, без построчного анализа.
Подскажите, конструкция
МассивИменВосстановления = Новый Массив;
МассивИменВосстановления.Добавить("name");
МассивФизЛиц = ПрочитатьJSON(ЧтениеJSON,Истина,"birthday",ФорматДатыJSON.ISO,"ФункцияВосстановленияЧтениеФизЛица",ЭтотОбъект,,МассивИменВосстановления);
&НаКлиенте
Функция ФункцияВосстановленияЧтениеФизЛица(Свойство,Значение,ДополнительныеПараметры) Экспорт
Если Свойство = "name" Тогда
Возврат ПолучитьФизЛицо(Значение);
КонецЕсли;
КонецФункции
&НаСервере
Функция ПолучитьФизЛицо(Значение)
ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(Значение,Истина);
Возврат ?(ЗначениеЗаполнено(ФизЛицо),ФизЛицо,Значение);
КонецФункции
если читается несколько JSON-объектов не является с точки зрения обращения к СУБД запросом в цикле? Есть информация, как метод ПрочитатьJSON "внутри" работает?
Да, тут несомненно будет запрос в цикле. Можно предусмотреть несколько оптимизаций - например, организовать кэш уже найденных физлиц через структуру, и чтение запросом, а не найти по наименованию. Но однозначно, это будет не очень производительно. Вместо функции восстановления можно прочитать JSON как обычный текст в структуру или соответствие, и уже потом собрать запрос с наименованиями физлиц и провести замену. А как работает ПрочитатьJSON внутри, вам могут рассказать только разработчики платформы :)
@alexcode_1c Я надеялся, что ПрочитатьJSON вначале все прочитает в некую коллекцию , а потом ко ВСЕЙ этой коллекции однократно применит функцию восстановления (версий как именно применит нет))). У меня мысль ПрочитатьJSON (без восстановления) в ТЗ, загрузить ТЗ во временную таблицу запроса и связать по Наименованию (name) c таблицей справочника "Физические лица"
@@div1966 Да, это рабочий подход, сам чаще всего примерно так и делаю