Капитально об программе 1С 8.0-8.3-8.4, 7.7

Ошибка запроса из-за кодировки UTF-8 с BOM (ByteOrderMark)

Возникает в момент выполнения запроса.

Поведение системы:

Прерывается выполнение модуля, система продолжает работать.

Ситуация и поиск проблемы

Используется HTTP-сервис, одним из методов которого является возврат текста запроса (для унификации текста запроса в различных базах).

После установке текста в объект «Запрос», в момент выполнения запроса выходит ошибка «Синтаксическая ошибка «ВЫБРАТЬ»«.

Похожая ошибка описана вот здесь, но ситуация другая.

При этом визуально проблема с кодировкой не наблюдается: сообщение непонятно, так как любой запрос должен начинаться с «ВЫБРАТЬ», в отладчике так же текст виден нормально, при копировании отрабатывает корректно.

Изначально был вызов Ответ.УстановитьТелоИзСтроки(ТекстЗапроса);

заменен на Ответ.УстановитьТелоИзСтроки(ТекстЗапроса,КодировкаТекста.UTF8);

далее Ответ.УстановитьТелоИзСтроки(ТекстЗапроса,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.Использовать);

окончательный работоспособный вариант:

Ответ.УстановитьТелоИзСтроки(ТекстЗапроса,КодировкаТекста.UTF8,ИспользованиеByteOrderMark.НеИспользовать);

В примере, Ответ = Новый HTTPСервисОтвет;