Как прочитать двоичное содержимое файла в строку (аналог file_get_contents() в php)?
Может быть ЗначениеВСтрокуВнутр() ?
Vofka @ Сегодня, 13:39 ,
Не подойдет. Надо для использования в HTTP-запросе. Ключевое требование: не кодировать в base64.
А двоичные данные в том виде, как они есть в 1С пробовали передавать?
Может натолкнет на мысль. Вот описание: http://pro1c.org.ua/redirect.php?https://support.unisender.com/index.php?/Knowledgebase/Article/View/62/0/createemailmessage---sozdt-e-mail-dlja-mssovojj-rssylki. Файл необходимо передавать строкой прямо в url-е:
Аргумент attachments
А если отак:
ТД = Новый ТекстовыйДокумент();
ТД.Прочитать(ИмяФайла, КодировкаТекста.UTF8, Символы.ПС); // ИмяФайла - не обязательно текстовый файл
ФайлВВидеСтроки = ТД.ПолучитьТекст();
Vofka @ Вчера, 16:08 ,
ТекстовыйДокумент читает только первые читабельные символы (может проблема с платформой, а может используется какое-то преобразование). Пробовал на jpeg-файле.
ЧтениеТекста - уже лучше, но надо поиграться с символами переноса строк.
Не думал, что вроде простая вещь вызовет столько проблем...
Потестил, вроде все норм с ПолучитьТекст() :
Процедура КнопкаВыполнитьНажатие(Кнопка)
МассивБайт = ПолучитьМассивБайтИзФайла(<ПутьКФайлу>);
ВывестиМассивВВидеТаблицы(МассивБайт,16);
КонецПроцедуры
Процедура ВывестиМассивВВидеТаблицы(м, квоВСтроке,HEX = Истина)
//: м = Новый Массив;
СтрокаШаблон = " ";
КоличествоЭлементов = м.Количество();
КвоСтрок = Цел(КоличествоЭлементов/ квоВСтроке);
Остаток = КоличествоЭлементов - КвоСтрок * квоВСтроке;
//Выводим полноценные строки
Для инд_строка = 0 По КвоСтрок - 1 Цикл
СтрокаСообщения = "";
Для инд_колонка = 0 По квоВСтроке - 1 Цикл
ИндМассива = инд_строка * квоВСтроке + инд_колонка;
Если HEX Тогда
СтрокаСообщения = СтрокаСообщения + Прав(СтрокаШаблон + DecToHex(м[ИндМассива]),4);
Иначе
СтрокаСообщения = СтрокаСообщения + Прав(СтрокаШаблон + м[ИндМассива],4);
КонецЕсли;
КонецЦикла;
Сообщить(СтрокаСообщения);
КонецЦикла;
//Выводи остаток
СтрокаСообщения = "";
Для инд_колонка = 0 По Остаток - 1 Цикл
ИндМассива = КвоСтрок * квоВСтроке + инд_колонка;
СтрокаСообщения = СтрокаСообщения + Прав(СтрокаШаблон + DecToHex(м[ИндМассива]),4);
КонецЦикла;
Если HEX Тогда
СтрокаСообщения = СтрокаСообщения + Прав(СтрокаШаблон + DecToHex(м[ИндМассива]),4);
Иначе
СтрокаСообщения = СтрокаСообщения + Прав(СтрокаШаблон + м[ИндМассива],4);
КонецЕсли;
КонецПроцедуры
Функция ПолучитьМассивБайтИзФайла(ПутьКФайлу)
ТекстовыйДокумент = Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать(ПутьКФайлу, "ISO-8859-1", "");
ТекстФайла = ТекстовыйДокумент.ПолучитьТекст();
МассивБайт = Новый Массив;
ДлинаТекста = СтрДлина(ТекстФайла);
Для Сч = 1 По ДлинаТекста Цикл
ТекСимвол = Сред(ТекстФайла, Сч, 1);
МассивБайт.Добавить(КодСимвола(ТекСимвол));
КонецЦикла;
Возврат МассивБайт;
КонецФункции
png и тестил на zip
Надо проверить. Еще и на разных релизах попробую...
Я использовал релиз 8.2.19.121
У меня - 8.3.7
Я на 8.2.19.130 смотрел.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua