Добрый день! Получаю с веб-сервиса изображение в виде двоичных данных, сохраняю в файл и вывожу в поле HTML документа. Вот, собственно, код:
НомерКартинки = 0;
Если ТипЗнч(ПозицияНоменклатуры.coverImage) <> Тип("Неопределено") Тогда
ИзображениеНоменклатуры = Новый Картинка(ПозицияНоменклатуры.coverImage);
ПутьКФайлу = "C:\Temp\NomImWS"+НомерКартинки+".jpg";
Попытка
ИзображениеНоменклатуры.Записать(ПутьКФайлу);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
ТекстHTML.ДобавитьСтроку("<img src='"+ПутьКФайлу+"' width='139' />");
КонецЕсли;
Проблема в том, что изображение почему-то не записывается, да и ошибка записи не выскакивает. Двоичные данные передаются нормально. Вообще код отрабатывается без ошибок, но вот изображения NomImWS0.jpg в каталоге C:\Temp не наблюдается. Подскажите, пожалуйста, в чем может быть проблема?
Живет на форуме
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0
В отладчике на строке ИзображениеНоменклатуры = Новый Картинка(ПозицияНоменклатуры.coverImage); что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?
Расширение картинок одинаковое? Как-то сталкивался с тем что сначала нужно было конвертить программно получаемую картинку с помощью сторонних средств перед тем как обрабатывать в 1С, по другому отказывалось работать.
Сообщение отредактировал Batchir - 27.09.12, 10:29
В отладчике на строке ИзображениеНоменклатуры = Новый Картинка(ПозицияНоменклатуры.coverImage); что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?
Не в формате изображения ошибка. Я с помощью Картинка.Преобразовать(<ФорматКартинки>) и в png преобразовал и сохранял как png, но ничего не срабатывает.
Может есть какой-нибудь еще способ отобразить изображение из двоичных данных в поле html-документа? <img src="data:image/png;base64,iVBOR...... Не предлагать....
Живет на форуме
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0
У меня к сожалению нет тех двоичных данных что у Вас, но провел следующий эксперимент:
НомерКартинки=0;
ИзображениеНоменклатуры = Номенклатура.ОсновноеИзображение.Хранилище.Получить();
ПутьКФайлу = ""+ КаталогВременныхФайлов() + "NomImWS"+НомерКартинки+"."+Строка(ИзображениеНоменклатуры.Формат());
ИзображениеНоменклатуры.Записать(ПутьКФайлу);
Файл = Новый Файл(ПутьКФайлу);
Если Файл.Существует() Тогда
Сообщить("ОК", СтатусСообщения.Обычное);
ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу);
НомерКартинки=1;
ИзображениеНоменклатуры = Новый Картинка(ДвоичныеДанные);
ПутьКФайлу = ""+ КаталогВременныхФайлов() + "NomImWS"+НомерКартинки+"."+Строка(ИзображениеНоменклатуры.Формат());
Попытка
ИзображениеНоменклатуры.Записать(ПутьКФайлу);
Сообщить(ПутьКФайлу, СтатусСообщения.Обычное);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Иначе
Сообщить("Не ОК", СтатусСообщения.Обычное);
КонецЕсли;
т.е. 1. Сохранил на диск картинку из спр. номенклатуры 2. Преобразовал её в двоичные данные 3. Сохранил эти двоичные данные как картинку с другим именем
В результате в каталоге временных файлов находятся обе картинки. Поэтому возможно актуально:
Цитата(Batchir @ 27.09.12, 11:24)
Как-то сталкивался с тем что сначала нужно было конвертить программно получаемую картинку с помощью сторонних средств перед тем как обрабатывать в 1С, по другому отказывалось работать.
а конвертил с помощью компоненты GFLAx, ею же и приводил к стандартному размеру, т.к. картинки бывают разными
Сообщение отредактировал Batchir - 27.09.12, 11:20
Снова возвращаюсь к данному вопросу... Мой код с первого поста рабочий для локальной версии.... Подскажите, подалуйста, как быть если используется серверная версия? Т.е., КаталогВременныхФайлов() 1С-ка нормально понимает, а вот Поле HTML документа не очень... Если прописать
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!