Не могу корректно поместить строку в COMSafeArray.
Известно, что в 1С:Предприятие 8 все строки это Unicode

Пробовал поместить строку этой функцией

```1c
    Функция СтрокаВДвоичныйВид(ВходнаяСтрока) Экспорт

    Поток = Новый COMОбъект("ADODB.Stream");
    Поток.Open();
    Поток.Type = 2;
    Поток.Charset = "utf-8";
    Поток.WriteText(ВходнаяСтрока);

    Поток.Position = 0;
    Поток.Type = 1;

    ДвоичныеДанные = Поток.Read(-1);

    Поток.Close();
    Поток = Неопределено;

    Возврат ДвоичныеДанные;

    КонецФункции
```

В COMSafeArray попадает BOM (Byte order mark)
Есть идеи?
---
Вот так:

```1c
    Функция СтрокаВДвоичныйВид(ВходнаяСтрока) Экспорт

    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(".txt");

    Текст = Новый ТекстовыйДокумент;
    Текст.УстановитьТекст(ВходнаяСтрока);
    Текст.Записать(ИмяВременногоФайла, "CESU-8");

    // Перечисления из библиотеки ADO
    StreamTypeEnum = Новый Структура("adTypeBinary, adTypeText", 1, 2);
    ConnectModeEnum = Новый Структура(
    "adModeRead, adModeReadWrite, adModeRecursive, adModeShareDenyNone,
    |adModeShareDenyRead, adModeShareDenyWrite, adModeShareExclusive,
    |adModeUnknown, adModeWrite", 1, 3, 4194304, 16, 4, 8, 12, 0, 2);
    SaveOptionsEnum = Новый Структура("adSaveCreateNotExist, adSaveCreateOverWrite", 1, 2);

    StreamIn = Новый COMОбъект("ADODB.Stream"); //Для создания этого объекта требуется MDAC 2.5 и выше
    StreamIn.Type = StreamTypeEnum.adTypeBinary;

    StreamIn.Open(); //По умолчанию открывается на чтение
    StreamIn.LoadFromFile(ИмяВременногоФайла); //Очевидно, что для больших файлов так поступать нехорошо.
    Data = StreamIn.Read(); //у переменной Data тип COMSafeArray, это массив байтов
    StreamIn.Close(); //Больше нам этот поток не нужен - закрываем.

    Возврат Data;

    КонецФункции
```
---
Кажется решил следующим способом:
1. Создаем временный файл-текст, туда сохраняем ТекстовыйДокумент с кодировкой CESU-8 (тот же UTF-8, но без BOM)
2. Читаем данные из временного файла с помощью ADODB.Stream
3. Выгружаем поток в COMSafeArray
4. ...
5. PROFIT!
---
Вот так:

```1c
    Функция СтрокаВДвоичныйВид(ВходнаяСтрока) Экспорт

    ИмяВременногоФайла = ПолучитьИмяВременногоФайла(".txt");

    Текст = Новый ТекстовыйДокумент;
    Текст.УстановитьТекст(ВходнаяСтрока);
    Текст.Записать(ИмяВременногоФайла, "CESU-8");

    // Перечисления из библиотеки ADO
    StreamTypeEnum = Новый Структура("adTypeBinary, adTypeText", 1, 2);
    ConnectModeEnum = Новый Структура(
    "adModeRead, adModeReadWrite, adModeRecursive, adModeShareDenyNone,
    |adModeShareDenyRead, adModeShareDenyWrite, adModeShareExclusive,
    |adModeUnknown, adModeWrite", 1, 3, 4194304, 16, 4, 8, 12, 0, 2);
    SaveOptionsEnum = Новый Структура("adSaveCreateNotExist, adSaveCreateOverWrite", 1, 2);

    StreamIn = Новый COMОбъект("ADODB.Stream"); //Для создания этого объекта требуется MDAC 2.5 и выше
    StreamIn.Type = StreamTypeEnum.adTypeBinary;

    StreamIn.Open(); //По умолчанию открывается на чтение
    StreamIn.LoadFromFile(ИмяВременногоФайла); //Очевидно, что для больших файлов так поступать нехорошо.
    Data = StreamIn.Read(); //у переменной Data тип COMSafeArray, это массив байтов
    StreamIn.Close(); //Больше нам этот поток не нужен - закрываем.

    Возврат Data;

    КонецФункции
```