Бывают ситуации, когда пользователь программы 1С сталкивается с появлением ошибки – «Ошибка десериализации контактной информации не указан ожидаемый тип». Возникает она в основном при переходе на новую редакцию программы или обновлении конфигурации и связана с некорректной конвертацией справочника «Виды контактной информации», а появляется при попытке занести данные.
Данные «Контактная информация» задействованы в справочниках «Организация», «Подразделения организации», «Контрагенты», «Контактные лица». Их можно просмотреть, открыв раздел «Справочники», используя пункт меню «Все функций». Если этот раздел не доступен, включить его можно в разделе «Сервис» — «Параметры».
Пример заполнения «Контактной информации» в справочнике «Контрагенты».
Если мы откроем и посмотрим настройку элемента справочника «Контактная информация», например, «Юридический адрес», то мы увидим, что в поле «Тип» установлено значение «Адрес». Это верное значение, для данного вида информации.
Но, возможно, здесь некорректное отображение по каким-либо причинам, например, в процессе переноса данных из старой версии в новую могли быть перенесены лишние элементы. Их можно удалить. Также надо проверить остальные виды контактной информации, чтобы там не было пустых и неправильно заполненных полей. В случае обнаружения недочета, его также необходимо устранить.
Открыв любой вид контактной информации, мы видим, что в поле нет кнопки выбора, чтобы сменить (или установить в случае отсутствия) тип, но можно выйти из ситуации, используя копирование элемента и установку пометки на удаления неправильного элемента. В этом случае кнопка выбора типа информации активна.
После корректировки типа представления информации ошибка десериализации появляться не будет.
Еще одним способом устранения проблемы (более простым) является использование обработки по установке типа контактной информации «УстановкаТиповИВидовКИ». Ее можно найти в интернете, она написана сторонними разработчиками и для обычных форм, и для управляемых. С ее помощью можно изменить тип любого элемента справочника «Контактная информация».
Выбираем элемент, который необходимо исправить, задаем правильный тип и нажимаем кнопку «Установить тип».
С изменением типа представления контактной информации ошибка появляться не будет. При этом необходимо обратить внимание, на какой элемент программа «ругается» – это может быть не только адрес, но и, например, телефон, адрес электронной почты. Тогда действие производится с указанным элементом.
MakcPletnev 41 / 37 / 9 Регистрация: 01.02.2014 Сообщений: 825 |
||||||||
1 |
||||||||
Ошибка десериализации объекта05.04.2016, 00:24. Показов 6399. Ответов 9 Метки нет (Все метки)
Ошибка десериализации объекта типа RespGroup1. Символы с шестнадцатеричными значениями 0xFFFE и 0xFFFF являются недопустимыми В общем, не может дисериализировать такой вот JSON (Именно этот пример, плейлист большинства дисериализирует без проблем, 1 раз такая проблема):
Код:
Помогите пожалуйста, добрые люди) Добавлено через 13 секунд Добавлено через 9 минут
0 |
Jason 525 / 487 / 98 Регистрация: 25.12.2011 Сообщений: 1,176 |
||||
05.04.2016, 00:37 |
2 |
|||
Просили — помогаю . Да вроде ничего сложного, Items — будет массив классов:
P.S. Только я удалил — {«response»:[ в начале и ]} в конце (для удобства).
0 |
41 / 37 / 9 Регистрация: 01.02.2014 Сообщений: 825 |
|
05.04.2016, 00:44 [ТС] |
3 |
Jason, попробуй это: https://yadi.sk/d/YG60-YYiqjhe9 Добавлено через 4 минуты
0 |
525 / 487 / 98 Регистрация: 25.12.2011 Сообщений: 1,176 |
|
05.04.2016, 00:45 |
4 |
Это уже издевательство, был пример выше, я его разобрал, а тут на 6 метров не пойми чего, я это нормально даже прочитать не могу.
0 |
41 / 37 / 9 Регистрация: 01.02.2014 Сообщений: 825 |
|
05.04.2016, 00:46 [ТС] |
5 |
Jason, это тот же самый json , с описанием из шапки. Фишка в том, что выдает ошибку
0 |
Jason 525 / 487 / 98 Регистрация: 25.12.2011 Сообщений: 1,176 |
||||||||||||
05.04.2016, 01:59 |
6 |
|||||||||||
Вот так нужно было урезать структуру:
Так, а теперь код:
P.S.
Символы с шестнадцатеричными значениями 0xFFFE и 0xFFFF являются недопустимыми», надо решить вопрос именно с ней… А на счет этого, не нужно файлы сохранять в формате Юникод и т.п. Сохраните файл в ANSI и проверяем… Либо пробовать что-то вроде этого:
0 |
41 / 37 / 9 Регистрация: 01.02.2014 Сообщений: 825 |
|
06.04.2016, 21:04 [ТС] |
7 |
Jason, из-за этого не поддерживается кириллица, я пробовал уже Добавлено через 1 минуту
0 |
976 / 871 / 350 Регистрация: 26.04.2012 Сообщений: 2,647 |
|
07.04.2016, 02:36 |
8 |
Я большой JSON обычно не десериализую, а использую при при помощи библиотеки Newtonsoft.Json и тамошнего класса JToken.
0 |
41 / 37 / 9 Регистрация: 01.02.2014 Сообщений: 825 |
|
26.07.2016, 11:06 [ТС] |
9 |
EvilFromHell, может расскажете как?
0 |
Master of Orion 6095 / 4951 / 905 Регистрация: 10.07.2011 Сообщений: 14,522 Записей в блоге: 5 |
|
27.07.2016, 00:06 |
10 |
EvilFromHell, забавно, что я в DataContractSerializer при сериализации в XML ловил точно такую же ошибку. Решалось просто вырезанием всего, что не проходит проверку XmlConvert.IsXmlChar. Вполне возможно, что JSON реально не ест эти символы (это именно некорректные символы, а не кириллица, например если суррогатная пара применена с символом, с которой её использование недопустимо). Не уверен, что JSON.Net поможет, хотя я в любом случае его использую во всех случаях работы с JSON. Слишком удобно чтобы отказываться.
1 |
Ошибка таким названием в случае записи контрагента сейчас достаточно часто может быть вызвана переходом на новую версию «1С Бухгалтерии 3.0» на основе платформы «1С 8.3». Связана последняя с неправильной конвертацией справочника под названием «Виды контактной информации» из старой версии программного продукта.
Скрин 1
Также кроме бухгалтерии ошибка может быть и в других конфигурациях: «УНФ», «1С Управление торговлей 11», «ERP», а также других решениях на основе «БСП 2».
Справочник с именем «Виды контактной информации» имеет в себе определенный перечень допустимых типов данных. Также он содержит состав определенных элементов (например, «Фактический телефон», «Юридический адрес», телефон и т.д.). Кроме этого у него существует возможность добавлять и другие новые виды данных, которые будут отражаться на формах.
Как устранить эту ошибку?
Чтобы устранить данную ошибку, есть два пути. Первый из них — «пометить на удаление». Здесь все ясно: в случае отметки на удаление это поле на форме справочников уже не будет отражаться.
А второй путь состоит в необходимости «установить правильный тип». Такой выход из данной ситуации более интересный и правильный. Однако выбрать нужный тип просто программный продукт вам не даст:
Скрин 2
Чтобы сравнительно быстро и просто вы могли установить правильный тип, мы, например, написали крохотную обработку. Скачать ее можно здесь:
Для этого я написал крошечную обработку, которой пользоваться очень просто. Подобно можете поступить и вы.
Скрин 3
После этого ошибка десериализации проявляться больше не будет.
Ошибка при десериализации файла
Последние изменения: 2022-02-10
Ошибка:
При подключении ТСД к клиенту появляется следующая ошибка:
"Внутренняя ошибка открытия документа. Подробности смотрите в errors.log"
В логе присутствует следующая ошибка:
Ошибка при открытии документа
MESSAGE: Ошибка при десериализации файла 'ApplicationMobileSMARTSConfigurationCleverence.Warehouse.Environment.xml', смещение: 1865
Решение:
Данная ошибка означает, что на ТСД находится битый файл конфигурации. Скопируйте из папки «стандартная конфигурация» в папку «текущая конфигурация» согласно таблице (Папки и их содержимое) и перевыгрузите номенклатуру.
In your XML file your root element is the namespace http://kmd.dk/fie/external_invoiceDistribution
with prefix ns1
.
The element <CONTROL_FIELDS>
isn’t because it isn’t prefixed. Your serialization class doesn’t take this into account though. That means that it expects that <CONTROL_FIELDS>
and the other elements are ALSO in the ns1
namespace.
To get the serializer parse the elements correctly add the Namespace
to the elements, setting it to an empty string:
[XmlRoot(Namespace = "http://kmd.dk/fie/external_invoiceDistribution", IsNullable = false)]
public class InvoiceChangeRequest
{
[XmlElement("CONTROL_FIELDS", Namespace = "")]
public ControlFields Styrefelter { get; set; }
[XmlElement("HEADER_IN", Namespace = "")]
public HeaderIn HeaderfelterInd { get; set; }
[XmlElement("ITEMS", Namespace = "")]
public Items Linjer { get; set; }
}
This will de-serialize the given XML as intended.
In case of de-serialization issues I often create the classes in memory and then serialize that so I can inspect the resulting XML. That often gives clues on what is missing or being added compared to the input document:
var ms = new MemoryStream();
serializer.Serialize(ms, new InvoiceChangeRequest {
Styrefelter = new ControlFields { Opera="test"}
});
var s = Encoding.UTF8.GetString(ms.ToArray());
And then inspect s
for differences.