Доброго дня! Если Вы читаете это, полагаю, оповещение об ошибке передачи данных между клиентом и сервером, представленное выше, уже должно быть Вам знакомо. В статье я расскажу о том, когда в системе 1С может возникать данная ошибка, по каким причинам это происходит и как исправить ошибку. Надеюсь, описанное далее поможет решить Вашу проблему.
В ходе разработки столкнулся с ошибкой передачи данных между клиентом и сервером. Она возникла при получения данных от маркетплейсов по API, а точнее значения кода маркировки Честного знака. Код маркировки передается в формате «Строка». При передачи значения с сервера на клиент возникает данная ошибка. Визуально строка не содержит ничего критичного, что могло бы вызывать ошибку, но при проверки каждого символа нашел непечатный символ (кода символа = 29), передача которого вызывала ошибку. Этот символ есть по спецификации в Честном знаке. В последовательность символов кода маркировки включены несколько групп (блоков) данных. Это: GTIN, серийный номер, ключ проверки. Согласно спецификации для разделения этих блоков данных друг от друга используется разделитель (GS), который указывает на то, что блок данных закончился (и, соответственно, следом начинается другой).
Ошибка передачи данных между клиентом и сервером может возникнуть, если Вы пытаетесь передать строку с сервера на клиент либо наоборот, содержащую непечатные символы.
Для проверки всех символов, вызывающих ошибку передачи, написал обработку, в которой реквизиту с типом «Строка» присваивается непечатный символ на сервере и на клиенте. Путем перебора символов выяснилось, что символы, коды которых 0 – 8, 11, 12, 14 – 31 вызывают ошибку передачи данных между клиентом и сервером. Символы, код которых 9, 10, 13, 32 ошибок не вызывают.
Ошибку передачи данных между клиентом и сервером можно решить следующим способом: написать функцию, которая будет в цикле перебирать каждый символ строки и сравнивать код символа строки с кодом непечатных символов. При наличии – удалять.
В итоге мы получим строку, которую можно будет передать и на клиент и на сервер без ошибок. Плюс избавимся от всех непечатных символов, которые могут в дальнейшем породить другие неочевидные ошибки.
Было протестировано: на платформе 1С:Предприятие 8.3 (8.3.17.1549) в конфигурации Управление небольшой фирмой, редакция 1.6 (1.6.6.54), 1С:Предприятие 8.3, учебная версия (8.3.23.1688) в конфигурации Управление торговлей, редакция 11 (11.5.11.56). Ошибка возникала и на платформе свежей версии, и на платформе прошлых версий.