1с поле html документа не отображается картинка
Доброго времен суток. Подскажите плз имеется обычный макет с картинкой просто вставленной на нем, не из базы, а просто вставленная картинка. Так вот как сделать чтобы эта картинка отобразилась на поле HTML документа. все выводится нормально, а картинка пустая с крестиком.
Нужно путь правильный к картинке прописать, так как 1с сохраняет HTML в файл и рядышком ложит каталог с картинками, а в коде странички прописывает относительные пути. То есть нужно сделать что-то вроде :Код не проверял, написал приблизительно - что бы понятнее была идея.
(2) 6есик, что то не получается, ругается что значение не является значением объектного типа СтрЗаменить (4) antz, получается он полностью изменяет путь файла и отображается вообще пустая страница. Как я понял нужно заменить путь картинки на новый, только вот как его отловить? Кладешь все файлы в каталог временных файлов и дальше (4) (2) 6есик, просто получается что в тексте html файл картинки находиться по адресу img src = "какойтоуникальныйидентификатор\image001.jpg".В каталоге, куда сохраняешь html, создай папку с названием, например images, туда положи картинку. В html тег картинки будет такой
(7) antz, а без создания папок нельзя? я создаю html файл в каталоге временных файлов. (10) antz, спс посмотрел вариант, но у тебя макет html документ где ты прописал вручную, а у меня макет (табличный документ) который заполняется в зависимости от разных факторов. (12) antz, вроде да одно и тоже оно нарисовано на самом макете, и 1с ему имя дает image001.jpgВ тексте HTML, который получаешь в конце концов, в атрибуте src тега img что написано.
Вот эти строки зачем:
когда можно просто
(15) antz, вот что в img source
<IMG SRC = "90777ee2-cd85-4102-8ad2-26919a37ee3b_files\image000.jpg" ALT = "" WIDTH = 554 HEIGHT = 228 STYLE = "margin-left:19pt;margin-top:2pt;">
а мне надо именно проставить путь к той картинке, так как она находится в середине макета.
Ну вот, наконец я начинаю понимать)А что там в функции ПолучитьДниРожденияКлиентов?
Развитие темы.
Можно в обработке создать Макет
В Макете вставить картинку (Через меню Конфигуратор - Таблица - Рисунки - Картинка)
Далее в форме создаем ПолеHTMLДокумента с кнопкой "Создать".
Работающий код (тестировал на версии 1с 8.3.11.2924):
Как делаю: Получаю картинку, она лежит в переменной Картинка. Проверял, выводил на форму - там она, лежит. Затем
ТекстКомментарий = ЭлементыФормы.НовыйКомментарий.ПолучитьТекст();
СсылкаНаКартинку = ПоместитьВоВременноеХранилище(Картинка, ЭтаФорма.КлючУникальности);
ТекстКомментария = СтрЗаменить(ТекстКомментария, "src=""" + Вложение.Ключ + """", "src=""" + СсылкаНаКартинку + """");
Получаю следующее (это сторока HTML в которой про картинку после замены):
<p> <br><img height="23" src="e1cib/tempstorage/186615f7-e3bc-4654-b63f-4dcd6542c75b?seanceId=698424ef-61ea-428c-9f9b-77cff42c2d03" style="border:none;" width="99"/> <br><img height="23" src="e1cib/tempstorage/3c1994ff-3d2f-4380-b8bc-47908b59bc3a?seanceId=698424ef-61ea-428c-9f9b-77cff42c2d03" style="border:none;" width="99"/></p>
ЭлементыФормы.НовыйКомментарий.УстановитьТекст(ТекстКомментария);
В поле форме НовыйКомментарий вместо картинки квадратик черный с крестиком.
ЧЯДНТ? (Что я делаю не так?)
(1) Сначала было без него. Чт ос ним, что без него - эффект один и тот жеПервый способ работает, но мне не нравится, скриншоты по определению ожидаются немаленькие, значит будет генерится много букав, ссылка на файл - ну это совсем не удобно.
Потому хочу способ через адрес хранилища, оно вроде как правильнее.
Зачем подробно пишу? Потому что такой вопрос возник - смотрел конфу ITIL prof Там у них картинки вставляются вовсе некоим 4-м способом (правда там все на УФ). Там у них делается для HTML строка следующего вида: <img height="41" src="img_c9bca569_2d00_40eb_b579_59b2d8377f7f" style="border:none;" width="40"/>
Прочитай внимательно СП, пожалуйста.
(4) Там все не по русски. И в HTML я не умею, не нужно было никогда раньше. Скажи простыми словам?
(5) Второй параметр - что с ним не так? EBL формы я сгенерил раенее если что.
Просто вставляй картинку в хтмл как строку двоичных данных Base64 и всё. Самый простой и всегда работающий вариант.
Что-то типа такого:
(9) Это у меня получается, это я умею уже дня 3 как :) Но хочется понять почему не работает другой способ!(10) потому что хранилище значений 1С не является "родным" источником данных для хтмл, и поэтому не нужно мучать этих животных, пытаясь их скрестить )
(11) Это конечно верная мысль, но в интернете полно примеров именно с таким способом, т.е. оно работает. Но только не у меня. Вот и хочется понять почему!
(12) Есть подозрение, что оно работало на старом движке (эксплорер). А на новом (вебкит) уже не работает
(13) Да, возможно все дело в этом. Короче всю ночь не спал, ворочался, думал и решил ну его нафик, буду вставлять двоичными данными. И в таком виде и буду возвращать в ИТИЛ. Все равно картинку в отдельном виде нигде не надо, важно ее в тексте видеть. Попробуем так.
Но все равно непонятно как они в ИТИЛе картинки в HTML поле отображают.
В форму отчета вставил элемент управления типа ПолеHTMLДокумента.
Создал макет с типом HTML-документ.
В макет вставил рисунок.
В обработчике кнопки написал код:
Макет = ПолучитьМакет("Макет2");
ИсходникHTML = Макет.ПолучитьТекст();
Document = Макет.Получить();
ЭлементыФормы.ПолеHTMLДокумента1.УстановитьТекст(Текст9);
В режиме предприятия рисунок не показывает. Вместо риснука пустая рамка с красным "Х"
По HTML я ни-ни.<META http-equiv=Content-Type content="text/html; charset=utf-8"><LINK href="__STYLE__" type=text/css rel=stylesheet>
<P><IMG height=91 src="https://forum.mista.ru/mdpicture/idb5f1f5ff-f7c7-47d3-a1b9-90be48373f59/00000000-0000-0000-0000-000000000000" width=217> <v:stroke joinstyle="miter"></v:stroke><v:path gradientshapeok="t" o:connecttype="rect"></v:path></P></BODY></HTML>
Вот здесь и должен быть указан файл с картинкой
Не поможешь, как это путь указать?
(3) это и есть "файл с картинкой", точнее это ссылка на картинку в конфе, только она какая-то странная
<IMG height=91 src="https://forum.mista.ru/mdpicture/idb5f1f5ff-f7c7-47d3-a1b9-90be48373f59/00000000-0000-0000-0000-000000000000" width=217>
Я так понимаю что "../../mdpicture/idb5f1f5ff-f7c7-47d3-a1b9-90be48373f59/00000000-0000-0000-0000-000000000000" это локальный путь, а в браузере закрыт доступ к локальной файловой системе. По этому и не выводит.
Можно так:
Base64 при загрузки картинки
сохранять картинку в сети как в (9) из v8: Можно ли загрузить локальную HTML страницу?
Но кашернее всего так:
ТекстПоляHTML = ТекстПоляHTML + <img height=91 width=217 src=""" + СсылкаНаКартинку + """/>;
Кстати надо в БЗ поместить, если там еще такого нету :)
(9) "ПоместитьВоВременноеХранилище" - такого метода у меня нету
Тогда так попробуй:
ТекстПоляHTML = ТекстПоляHTML + <img height=91 width=217 jpg/png/gif;base64,"" + Base64Строка(БиблиотекаКартинок.АктивныеПользователи.ПолучитьДвоичныеДанные()) + """/>;
(12) У меня ХР.Сможешь в 8.1 сделать внешний отчет и общую картинку "Важно" сделат?
Если у тебя получится, скинешь мне этот отчет?
Наверно у тебя 5 минут уйдет а это.
Заинтриговали, а где в букваре описано как делать ссылки на картинки в поле HTML, я делал как в типовой торговле: выкладывал во временный файл
(16) Я не находил. (6) Сам изобретал.
(14) 8.1 не держу, но для обычного приложения счас попробую.
Я в коде прописал :
Получилось!
Показываю путь прямо к файлу:
Вот такой подход является универсальным для тонкого клиента, для толстого, для Web и для обычного приложения:
Keyword1109 --> Keyword1109В отладчике на строке ИзображениеНоменклатуры = Новый Картинка(ПозицияНоменклатуры.coverImage);
что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?
Расширение картинок одинаковое?
Как-то сталкивался с тем что сначала нужно было конвертить программно получаемую картинку с помощью сторонних средств перед тем как обрабатывать в 1С, по другому отказывалось работать.
И еще, опять же в отладчике, но после строки
Чему будет равен Картинка.Формат()?
Правильно поставленный вопрос содержит до 90% ответа. Keyword1109 --> Keyword1109что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?
А попробуйте теперь расширение с учетом регистра:
Keyword1109 --> Keyword1109Не в формате изображения ошибка. Я с помощью Картинка.Преобразовать(<ФорматКартинки>) и в png преобразовал и сохранял как png, но ничего не срабатывает.
Может есть какой-нибудь еще способ отобразить изображение из двоичных данных в поле html-документа?
<img src="data:image/png;base64,iVBOR. Не предлагать.
У меня к сожалению нет тех двоичных данных что у Вас, но провел следующий эксперимент:
т.е.
1. Сохранил на диск картинку из спр. номенклатуры
2. Преобразовал её в двоичные данные
3. Сохранил эти двоичные данные как картинку с другим именем
В результате в каталоге временных файлов находятся обе картинки.
Поэтому возможно актуально:
а конвертил с помощью компоненты GFLAx, ею же и приводил к стандартному размеру, т.к. картинки бывают разными
Keyword1109 --> Keyword1109В отладчике на строке ИзображениеНоменклатуры = Новый Картинка(ПозицияНоменклатуры.coverImage);
что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?
Расширение картинок одинаковое?
Как-то сталкивался с тем что сначала нужно было конвертить программно получаемую картинку с помощью сторонних средств перед тем как обрабатывать в 1С, по другому отказывалось работать.
И еще, опять же в отладчике, но после строки
Чему будет равен Картинка.Формат()?
Правильно поставленный вопрос содержит до 90% ответа. Keyword1109 --> Keyword1109что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?
А попробуйте теперь расширение с учетом регистра:
Keyword1109 --> Keyword1109Не в формате изображения ошибка. Я с помощью Картинка.Преобразовать(<ФорматКартинки>) и в png преобразовал и сохранял как png, но ничего не срабатывает.
Может есть какой-нибудь еще способ отобразить изображение из двоичных данных в поле html-документа?
<img src="data:image/png;base64,iVBOR. Не предлагать.
У меня к сожалению нет тех двоичных данных что у Вас, но провел следующий эксперимент:
т.е.
1. Сохранил на диск картинку из спр. номенклатуры
2. Преобразовал её в двоичные данные
3. Сохранил эти двоичные данные как картинку с другим именем
В результате в каталоге временных файлов находятся обе картинки.
Поэтому возможно актуально:
а конвертил с помощью компоненты GFLAx, ею же и приводил к стандартному размеру, т.к. картинки бывают разными
Keyword1109 --> Keyword1109Читайте также: