Как получить двоичные данные файла 1с
Есть двоичные данные, в них хранится картинка — файл .jpg или .png
Я хочу иметь возможность выгружать эту картинку из базы — с соответствующим разрешением, а не тупо все .jpg например.
Не соображу как вытащить расширение из двоичных данных.
Меж тем платформа умеет это делать — если я отображаю картинку на форме (с помощью ПолучитьНавигационнуюСсылку), нажимаю на ней правой кнопкой и выбираю «Сохранить как» — открывается диалог сохранения с установленным правильным видом файла — .jpg или .png
см. Картинка.Формат
(0) Первые 3-4 байта байта файла это, обычно, его сигнатура. Посмотри какая она в png и какая в jpg.
В смысле программно создать из двоичных данных картинку и получить ее формат? Вариант, спасибо.
А непосредственно из двоичных данных выходит что никак.
(2) да, тоже вариант, хотя и не совсем универсальный.
Всем спасибо, я удовлетворен)
Работа с двоичными данными
Встроенный язык содержит ряд низкоуровневых инструментов для работы с двоичными данными. Они позволяют решать такие задачи как:
- Взаимодействие со специализированными устройствами по двоичному протоколу;
- Разбор файлов и манипуляция файлами различных форматов;
- Конвертация текстовых данных напрямую в двоичные данные, например, для отправки отчетов;
- Работа с двоичными данными в памяти.
Потоки
Основу для работы с двоичными данными составляет группа типов, которую можно обозначить словом «потоки»: Поток, ФайловыйПоток и ПотокВПамяти. Потоки предназначены для последовательного чтения/записи больших объемов двоичных данных. Их преимущество заключается в том, что они позволяют работать с потоками данных произвольного объёма. Но вместе с этим они предоставляют лишь базовые возможности работы, такие как чтение из потока, запись в поток и изменение текущей позиции. Потоки можно сконструировать по имени файла или из объекта ДвоичныеДанные.
Чтение и запись данных
Из потоков можно сконструировать объект ЧтениеДанных. Он, в отличие от потоков, позволяет уже читать отдельные байты, символы, числа. С его помощью можно прочитать строку с учётом кодировки, или прочитать данные до некоторого известного заранее маркера. Этот объект имеет своего «антипода», ЗаписьДанных, который конструируется аналогичным образом, но занимается не чтением, а записью данных. Поскольку эти объекты читают/пишут данные из/в потоки, то они также делают это последовательно, что позволяет работать с потоками произвольного объёма.
Буфер двоичных данных
Любую часть прочитанных данных можно получить в виде объекта БуферДвоичныхДанных. Главное отличие этого объекта заключается в том, что он предоставляет не последовательный, а произвольный доступ к данным, и позволяет изменять их по месту. Все данные этого объекта полностью находятся в оперативной памяти. Поэтому, с одной стороны, он предназначен для анализа и редактирования не очень больших объёмов двоичных данных. Но с другой стороны даёт удобные возможности для произвольного чтения и записи байтов, представленных числами, для разделения буфера на несколько частей и объединения нескольких буферов в один, а также для получения части буфера указанного размера.
Побитовые операции
При работе с буфером двоичных данных поддерживаются побитовые логические операции И, ИЛИ, исключительное ИЛИ, ИНЕ и инвертирование. Эти операции удобны, например, для декодирования формата обмена с торговым оборудованием.
Для более простых и распространенных случаев поддерживаются побитовые операции с целыми числами: И, ИЛИ, НЕ, ИНЕ, исключительное ИЛИ, а также побитовые сдвиги влево и вправо.
Авторы: Е.Ю. Хрусталева
Как получить двоичные данные файла 1с
Здравствуйте! помогите, пожалуйста.
есть внешняя обработка, в ней имеется макет типа двоичные данные
могу ли я из режима 1с:предприятие выполнить загрузку в него из файла?
заранее благодарна.
спасибо, очень любезно с вашей стороны)))
и всё-таки я конечно хотела бы узнать, как сие провернуть.
ДвоичныеДанные (BinaryData)
ДвоичныеДанные (BinaryData)
Методы:
Записать (Write)
Размер (Size)
На основании файла
Значение содержит двоичные данные, которые считываются из файла. Значение может быть сохранено в ХранилищеЗначения.
Хранимые данные могут быть записаны в файл.
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен . Имя типа XDTO: может быть любым из перечисленных: base64Binary, hexBinary
Пример:
МояКартинка = Новый ДвоичныеДанные(«C:\Мои документы\Картинка1.bmp»);
ХранилищеКартинки = Новый ХранилищеЗначения(МояКартинка);
// сохранение значения типа ХранилищеЗначения в базе данных
НовНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
НовНоменклатура.Наименование = «Диван «»Маргарита»»»;
// реквизит Изображение имеет тип ХранилищеЗначения
НовНоменклатура.Изображение = ХранилищеКартинки;
НовНоменклатура.Записать();
.
// выгрузка значения типа ДвоичныеДанные из хранилища значений в файл
ИмяФайла = «C:\Мои документы\Картинка2.bmp»;
НовНоменклатура.Изображение.Получить().Записать(ИмяФайла);
ПочтовоеВложение, свойство Данные
ПочтовыеВложения, метод Добавить
ИнтернетПочтовыеВложения, метод Добавить
Картинка, метод ПолучитьДвоичныеДанные
Глобальный контекст, метод Base64Значение
Глобальный контекст, метод Base64Строка
Картинка, конструктор Формирование из двоичных данных
ИнтернетТекстПочтовогоСообщения, свойство Данные
ЧтениеFastInfoset, метод УстановитьДвоичныеДанные
1С 8.3 Получить двоичные данные — Программист 1С Минск. Автоматизация бизнеса.

ПРИМЕРЫ КОДА 1С
Перейти в раздел примеры кода 1С 8.3:

Получить двоичные данные двумя способами в 1С 8.3:
// Получение двоичных данных через временный файл (и помещение их во временное хранилище)
ВременныйФайл = ПолучитьИмяВременногоФайла ( «SCAN» );
ТабличныйДокумент . Записать ( ВременныйФайл , ТипФайлаТабличногоДокумента . PDF );
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище ( Новый ДвоичныеДанные ( ВременныйФайл ));
// Получение двоичных данных через временный файл (и помещение их во временное хранилище)
Поток = Новый ПотокВПамяти ;
ТабличныйДокумент . Записать ( Поток , ТипФайлаТабличногоДокумента . PDF );
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище ( Поток . ЗакрытьИПолучитьДвоичныеДанные ());