JSON без BOM-кодировки
Веб-разработчик клиента пожаловался, что json-файл, который я передаю ему на FTP Bitrix-сайта, приходит в кодировке UTF с BOM.
Я проверил, действительно Notepad++ определяет его в такой кодировке:

Это легко проверить если открыть файл в двоичном виде (в Total Commander):

Как видно, в начале файла содержится 3 байта EF BB BF. Это и есть BOM-кодировка.
Нашел решение на инфостарте поиском.

В решении используется функция ЗаписьТекста:

Заменил ТекстовыйДокумент на ЗаписьТекста:
Лок_ИмяФайла = КаталогВременныхФайлов() + Строка(Новый УникальныйИдентификатор);
ТекстСопутствующих = Обработки.дор_РассчетСопутствующихДляСайта.РассчитатьВФайл();
УдалитьФайлы(Лок_ИмяФайла); //Не обязательно, у файла уникальное имя, но для общности
ЗаписьТекста = Новый ЗаписьТекста(Лок_ИмяФайла,КодировкаТекста.UTF8,,Ложь,Символы.ПС);
//Т = Новый ТекстовыйДокумент();
ЗаписьТекста.Записать(ТекстСопутствующих);
//Т.УстановитьТекст(ТекстСопутствующих);
//Т.Записать(Лок_ИмяФайла);
ЗаписьТекста.Закрыть();
Посмотрел в отладчике, в какой файл сохраняется временный файл: C:\Users\User\AppData\Local\Temp\50cfa3b5-8cf8-481d-aaa6-d0b2498d974d
Поиском нашел этот файл в каталоге:

Но увы, независимо от значения параметра Дописывать, 1С настойчиво добавляло BOM-кодировку:

Бюджет решения не позволялся углубляться в поиски, поэтому я сделал решение через ADODB.Stream, которое было написано в той же статье:
Лок_ИмяФайла = КаталогВременныхФайлов() + Строка(Новый УникальныйИдентификатор);
Лок_ИмяФайлаНач = Лок_ИмяФайла + «_Нач»;
ТекстСопутствующих = Обработки.дор_РассчетСопутствующихДляСайта.РассчитатьВФайл();
Т = Новый ТекстовыйДокумент();
Т.УстановитьТекст(ТекстСопутствующих);
Т.Записать(Лок_ИмяФайлаНач);
УбитьВОМ(Лок_ИмяФайлаНач, Лок_ИмяФайла);
…
Процедура УбитьВОМ(ИсходныйФайл,РезультирующийФайл)
Попытка
файл = Новый ComObject(«ADODB.Stream»);
файл.Mode = 3; // r/w
файл.Type = 1; //1-Binary, 2-Text
файл.Open();
файл.LoadFromFile(ИсходныйФайл);
файл.Position = 3;
текстБезБОМ = Новый ComObject(«ADODB.Stream»);
текстБезБОМ.Mode = 3; // r/w
текстБезБОМ.Type = 1; //1-Binary, 2-Text
текстБезБОМ.Open();
файл.CopyTo(текстБезБОМ);
файл.Close();
текстБезБОМ.SaveToFile(РезультирующийФайл,2);
текстБезБОМ.Close();
УдалитьФайлы(ИсходныйФайл);
Исключение
Сообщить(ОписаниеОшибки(),СтатусСообщения.Важное);
КонецПопытки;
КонецПроцедуры
Наконец у меня получился чистый UTF, без BOM:

Потом почитал, что метод через ЗаписьТекста работает не на всех режимах совместимости.
У меня была УТ11, релиз платформы 8.3.16.1502, режим совместимости 8.3.14.
Время факт: 0.5 час.