Программирование 1С 8.х для начинающих
- Вы здесь:




- ЕРП. Ошибка "Непредвиденный символ при чтении JSON" при сохранении контрагента
Конфигурация
ЕРП. Ошибка "Непредвиденный символ при чтении JSON" при сохранении контрагента
- Печать
Для устранения ошибки «Непредвиденный символ при чтении JSON»

Необходимо обновить следующие колонки в Табличной части «Контактная информация»:
Значение и ЗначенияПолей, для этого нужно перебрать ошибочные строки и применить для колонок следующий код
1С 8.3 : Обмен данными с сайтом используя формат JSON в 1С
Формат JSON в 1С до версии 8.3.6 не реализован, но нижет я приведу примеры функций которые можно использовать для полноценной работы JSON в 1С предыдущий версий.
JSON (JavaScript Object Notation) это текстовый формат обмена данными, широко используемый в веб-приложениях. По сравнению с XML он является более лаконичным и занимает меньше места. Кроме этого все браузеры имеют встроенные средства для работы с JSON.
Необходимость работы с этим форматом на уровне платформы обусловлена не только тем, что это «модный современный» формат, который прикладные решения 1С:Предприятия сами по себе могут использовать для интеграции со сторонними приложениями. Другая причина заключается ещё и в том, что JSON активно используется в HTTP интерфейсах. А в 1С:Предприятии как раз есть такие механизмы, в которых хочется использовать этот формат. Это REST интерфейс приложения, автоматически генерируемый платформой, и HTTP-сервисы, которые вы можете создавать самостоятельно.
В платформе с версии 8.3.6:
Потоковое чтение и запись JSON:
Объекты потоковой работы — это общие объекты ЧтениеJSON и ЗаписьJSON. Они последовательно читают JSON из файла или строки, или последовательно записывают JSON в файл или строку. Таким образом, чтение и запись JSON происходят без формирования всего документа в памяти.
В качестве иллюстрации потокового чтения JSON можно привести следующий пример:
Результат такой записи:
Сериализация примитивных типов и коллекций в JSON
Вторая группа средств работы с JSON хороша тем, что избавляет вас от рутинной работы по чтению/записи каждого отдельного значения или свойства. При чтении документы JSON отображаются в фиксированный набор типов платформы: Строка, Число, Булево, Неопределено, Массив, ФиксированныйМассив, Структура, ФиксированнаяСтруктура, Соответствие, Дата. Соответственно, в обратную сторону, композиция объектов этих типов позволяет сформировать в памяти и быстро записать в файл структуру JSON. Таким образом, чтение и запись небольшого объема JSON заранее известной структуры можно производить немногими строчками кода.
Основное назначение этих средств мы видим в обмене информацией с внешними системами, чтении конфигурационных файлов в формате JSON.
Сериализацию вы можете выполнять с помощью методов глобального контекста ПрочитатьJSON() и ЗаписатьJSON(). Они работают в связке с объектами ЧтениеJSON и ЗаписьJSON.
В качестве примера десериализации JSON можно рассмотреть чтение массива из двух объектов:
Подробнее вы можете посмотреть здесь
В платформе с версии 8.3.7:
Полностью автоматизировали работу с JSON и реализовали в платформе третью группу средств. Они позволяют сериализовать в JSON прикладные типы 1С:Предприятия: ссылки, объекты, наборы записей и вообще любые типы, для которых поддерживается XDTO сериализация. Конечно же, мы обеспечили и обратную операцию — десериализацию. Зачем это нужно!?
Прежде всего, и в основном, XDTO сериализацию в JSON мы рекомендуем использовать при обмене данными между двумя прикладными решениями 1С:Предприятия. По сравнению с XML формат JSON более компактный, сериализация/десериализация в/из JSON выполняется быстрее. Кроме этого мы предприняли дополнительные меры для того, чтобы сократить объём передаваемых данных.
Кроме обмена между приложениями 1С:Предприятия этот механизм можно использовать и для обмена с внешними системами, готовыми принимать типы данных 1С:Предприятия. Например, XDTO сериализацию в JSON можно использовать для организации собственного HTTP интерфейса прикладного решения. Сервис на платформе 1С:Предприятия будет формировать ответ в памяти в виде строки JSON. А затем передавать её при помощи объекта HTTPСервисОтвет. Реализованный нами механизм сериализации полностью соответствует стандарту JSON. Поэтому внешняя система не должна испытывать каких-либо трудностей с десериализацией.
Использование XDTO сериализации в JSON для других задач видится нам маловероятным. Потому что если внешняя система не готова работать с прикладными типами 1С:Предприятия, то зачем их ей передавать? А если предполагается обмениваться только примитивными типами и коллекциями, то для этой задачи хорошо подходят методы ПрочитатьJSON() и ЗаписатьJSON(). Подробнее здесь
ДО платформы версии 8.3.6, т.е. 8.3.5 и ниже:
На HelpF уже есть статья где описан пример: Работа с форматом JSON в 1С но не приведены функции, вот они:
Ошибка при запуске парсера по списку
При запуске парсера "загрузить по списку" появляется такая ошибка.
Загрузка по ссылке работает.
| Цитата |
|---|
| Артем А написал: УТ 11.4.8.84 |
| Цитата |
|---|
| Артем А написал: так же товар спарсил по ссылке, но поиск соответствия не работает. пробовал ставить разные настройки соответствия (от 0 до 100) |
у вас скорее всего какой очень старый релиз платформы в котором нет некоторых функций.
отправлено обновление
у вас скорее всего какой очень старый релиз платформы в котором нет некоторых функций.
отправлено обновление
Ошибка ушла, но сначала думал что просто товар не находит.
Товар на маркете есть под москвой
1С:Предприятие 8.3 (8.3.13.1690)
вот что в логе пишется
Начало загрузки: 13.10.2020 14:24:06
ОТЛАДКА — API_ЗагрузитьДанные_ЗагрузитьИдентификаторыТоваров
Загрузка данных: 13.10.2020 14:24:06
—————————————————————————
Строка: 1
PARSERDATA_ИнформацияОМодели_Разобрать — <ВнешняяОбработка.APPLIX_RU_ПарсерЯндексМаркет_ЗМ.МодульОбъекта(60287)>: Значение не является значением объектного типа (name)
Ошибка API_СписокХарактеристикМодели — 01: <(1)>: Ошибка при вызове метода контекста (ПрочитатьJSON): Непредвиденный символ при чтении JSON
ТекстСтраницы —
<!doctype html>
<html lang="en">
<head>
<title>Not Found</title>
</head>
<body>
<h1>Not Found</h1><p>The requested resource was not found on this server.</p>
</body>
</html>
—————————————————————————
Строка: 2
PARSERDATA_ИнформацияОМодели_Разобрать — <ВнешняяОбработка.APPLIX_RU_ПарсерЯндексМаркет_ЗМ.МодульОбъекта(60287)>: Значение не является значением объектного типа (name)
Ошибка API_СписокХарактеристикМодели — 01: <(1)>: Ошибка при вызове метода контекста (ПрочитатьJSON): Непредвиденный символ при чтении JSON
ТекстСтраницы —
<!doctype html>
<html lang="en">
<head>
<title>Not Found</title>
</head>
<body>
<h1>Not Found</h1><p>The requested resource was not found on this server.</p>
</body>
</html>
—————————————————————————
Строка: 3
PARSERDATA_ИнформацияОМодели_Разобрать — <ВнешняяОбработка.APPLIX_RU_ПарсерЯндексМаркет_ЗМ.МодульОбъекта(60287)>: Значение не является значением объектного типа (name)
Ошибка API_СписокХарактеристикМодели — 01: <(1)>: Ошибка при вызове метода контекста (ПрочитатьJSON): Непредвиденный символ при чтении JSON
ТекстСтраницы —
<!doctype html>
<html lang="en">
<head>
<title>Not Found</title>
</head>
<body>
<h1>Not Found</h1><p>The requested resource was not found on this server.</p>
</body>
</html>
—————————————————————————
Строка: 4
PARSERDATA_ИнформацияОМодели_Разобрать — <ВнешняяОбработка.APPLIX_RU_ПарсерЯндексМаркет_ЗМ.МодульОбъекта(60287)>: Значение не является значением объектного типа (name)
Ошибка API_СписокХарактеристикМодели — 01: <(1)>: Ошибка при вызове метода контекста (ПрочитатьJSON): Непредвиденный символ при чтении JSON
ТекстСтраницы —
<!doctype html>
<html lang="en">
<head>
<title>Not Found</title>
</head>
<body>
<h1>Not Found</h1><p>The requested resource was not found on this server.</p>
</body>
</html>
Конец загрузки: 13.10.2020 14:24:09
Вот еще логи, другой товар грузил по списку
Начало загрузки: 13.10.2020 15:52:53
ОТЛАДКА — API_ЗагрузитьДанные_ЗагрузитьИдентификаторыТоваров
ОШИБКА ПАРСЕР_ЗаписатьJSON 01 — <ВнешняяОбработка.APPLIX_RU_ПарсерЯндексМаркет_ЗМ.МодульОбъекта(15541)>: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: <(1,1)>: Обращение к процедуре как к функции (ЗаписатьJSON)
ОШИБКА PARSERDATA_ОтправитьДанныеНаСервер — <ВнешняяОбработка.APPLIX_RU_ПарсерЯндексМаркет_ЗМ.МодульОбъекта(5804)>: Поле объекта не обнаружено (task_id)
Загрузка данных: 13.10.2020 15:52:53