Ваш вариант потокового чтения не правильно читает 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 таблицей справочника "Физические лица"
Спасибо! Полезный материал для понимания JSON! Надеюсь, Вы находите время в том числе и на преподавание в учебных заведениях!
Спасибо за душевный отзыв! Да, преподаю в одной из известных онлайн-школ, а также провожу индивидуальные занятия в онлайне.😇
Отличный уроки, и на сайте полезная информация. Спасибо!
Очень приятный и позитивный отзыв! Вдохновляет.👍🏻 Идей для видео ещё очень много, главное найти на всё это время 🤭
Спасибо за видео. Приятно слушать и смотреть. А главное полезно.
Благодарю за обратную связь и высокую оценку! Да уж, до 30% "неприятного и бесполезного" безжалостно вырезаю на этапе монтажа😄😉
Очень круто. Спасибо огромное!
Стараемся:) Рад, если видео оказалось полезным.
Отличное видео!
🤝
Огромное спасибо! А можно подобное видео про работу с XDTO? Был бы Очень признателен.
Благодарю за идею! Как раз думал, будет ли интересно, если записать про SOAP сервисы и XDTO. Раз интерес есть, конечно запишу!
Да, было бы неплохо
Ваш вариант потокового чтения не правильно читает 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С, без построчного анализа.
Спасибо тебе большое!
Спасибо за подписку! ;)
Отличный курс, все предельно понятно и хорошо объяснено)
Подскажите, что за настройка подсветки повторяющихся слов в коде (Вы два раза щелкаете по словосочетанию и подсвечиваются голубым цветом все места, где это словосочетание встречается)
Благодарю! Приятно знать, что мои старания кому-то пригодились :)
По поводу подсветки - это можно сделать в меню Сервис / Параметры, вкладка Модули, там вкладка Редактирование. Нужно найти пункт Выбранный идентификатор, и выбрать цвет какой захотите. Также можно указать цвет для пункта Текущий идентификатор.
Спасибо.Можно вопрос:Если не управляемые формы на экран показать СтрокаJson.Да и управляемые формы, ни видно ,как ставили в форму реквизит СтрокаJson
Не совсем понял в чем вопрос :)
Элементы на форму мы добавляем как обычно, хоть в управляемых формах, хоть в обычных.
Подскажите, конструкция
МассивИменВосстановления = Новый Массив;
МассивИменВосстановления.Добавить("name");
МассивФизЛиц = ПрочитатьJSON(ЧтениеJSON,Истина,"birthday",ФорматДатыJSON.ISO,"ФункцияВосстановленияЧтениеФизЛица",ЭтотОбъект,,МассивИменВосстановления);
&НаКлиенте
Функция ФункцияВосстановленияЧтениеФизЛица(Свойство,Значение,ДополнительныеПараметры) Экспорт
Если Свойство = "name" Тогда
Возврат ПолучитьФизЛицо(Значение);
КонецЕсли;
КонецФункции
&НаСервере
Функция ПолучитьФизЛицо(Значение)
ФизЛицо = Справочники.ФизическиеЛица.НайтиПоНаименованию(Значение,Истина);
Возврат ?(ЗначениеЗаполнено(ФизЛицо),ФизЛицо,Значение);
КонецФункции
если читается несколько JSON-объектов не является с точки зрения обращения к СУБД запросом в цикле? Есть информация, как метод ПрочитатьJSON "внутри" работает?
Да, тут несомненно будет запрос в цикле. Можно предусмотреть несколько оптимизаций - например, организовать кэш уже найденных физлиц через структуру, и чтение запросом, а не найти по наименованию. Но однозначно, это будет не очень производительно. Вместо функции восстановления можно прочитать JSON как обычный текст в структуру или соответствие, и уже потом собрать запрос с наименованиями физлиц и провести замену. А как работает ПрочитатьJSON внутри, вам могут рассказать только разработчики платформы :)
@alexcode_1c Я надеялся, что ПрочитатьJSON вначале все прочитает в некую коллекцию , а потом ко ВСЕЙ этой коллекции однократно применит функцию восстановления (версий как именно применит нет))). У меня мысль ПрочитатьJSON (без восстановления) в ТЗ, загрузить ТЗ во временную таблицу запроса и связать по Наименованию (name) c таблицей справочника "Физические лица"
@@div1966 Да, это рабочий подход, сам чаще всего примерно так и делаю