1с поле html документа не отображается картинка

Обновлено: 06.07.2024

Доброго времен суток. Подскажите плз имеется обычный макет с картинкой просто вставленной на нем, не из базы, а просто вставленная картинка. Так вот как сделать чтобы эта картинка отобразилась на поле 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"/>

(2) > Чт ос ним, что без него
Прочитай внимательно СП, пожалуйста.

(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>&nbsp;<v:stroke joinstyle="miter"></v:stroke><v:path gradientshapeok="t" o:connecttype="rect"></v:path></P></BODY></HTML>

Вот здесь и должен быть указан файл с картинкой

(3) у меня файл рисунка хранится в конфе, в общих картинках, называется "Картинка1".
Не поможешь, как это путь указать?
(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=""" + СсылкаНаКартинку + """/>;

Кстати надо в БЗ поместить, если там еще такого нету :)

(7) + А кстати, автор, проверь может в обычном тоже взлетит?
(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



Просмотр профиля Batchir --> Batchir



Просмотр профиля

В отладчике на строке ИзображениеНоменклатуры = Новый Картинка(ПозицияНоменклатуры.coverImage);
что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?

Расширение картинок одинаковое?
Как-то сталкивался с тем что сначала нужно было конвертить программно получаемую картинку с помощью сторонних средств перед тем как обрабатывать в 1С, по другому отказывалось работать.

pablo --> pablo



Просмотр профиля

И еще, опять же в отладчике, но после строки

Чему будет равен Картинка.Формат()?

Правильно поставленный вопрос содержит до 90% ответа. Keyword1109 --> Keyword1109



Просмотр профиля В отладчике на строке ИзображениеНоменклатуры = Новый Картинка(ПозицияНоменклатуры.coverImage);
что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?







Batchir --> Batchir



Просмотр профиля

А попробуйте теперь расширение с учетом регистра:

Keyword1109 --> Keyword1109



Просмотр профиля pablo --> pablo



Просмотр профиля Правильно поставленный вопрос содержит до 90% ответа. Batchir --> Batchir



Просмотр профиля Keyword1109 --> Keyword1109



Просмотр профиля

Не в формате изображения ошибка. Я с помощью Картинка.Преобразовать(<ФорматКартинки>) и в png преобразовал и сохранял как png, но ничего не срабатывает.

Может есть какой-нибудь еще способ отобразить изображение из двоичных данных в поле html-документа?
<img src="data:image/png;base64,iVBOR. Не предлагать.

Batchir --> Batchir



Просмотр профиля

У меня к сожалению нет тех двоичных данных что у Вас, но провел следующий эксперимент:

т.е.
1. Сохранил на диск картинку из спр. номенклатуры
2. Преобразовал её в двоичные данные
3. Сохранил эти двоичные данные как картинку с другим именем

В результате в каталоге временных файлов находятся обе картинки.
Поэтому возможно актуально:

Как-то сталкивался с тем что сначала нужно было конвертить программно получаемую картинку с помощью сторонних средств перед тем как обрабатывать в 1С, по другому отказывалось работать.

а конвертил с помощью компоненты GFLAx, ею же и приводил к стандартному размеру, т.к. картинки бывают разными

Keyword1109 --> Keyword1109



Просмотр профиля Keyword1109 --> Keyword1109



Просмотр профиля Batchir --> Batchir



Просмотр профиля

В отладчике на строке ИзображениеНоменклатуры = Новый Картинка(ПозицияНоменклатуры.coverImage);
что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?

Расширение картинок одинаковое?
Как-то сталкивался с тем что сначала нужно было конвертить программно получаемую картинку с помощью сторонних средств перед тем как обрабатывать в 1С, по другому отказывалось работать.

pablo --> pablo



Просмотр профиля

И еще, опять же в отладчике, но после строки

Чему будет равен Картинка.Формат()?

Правильно поставленный вопрос содержит до 90% ответа. Keyword1109 --> Keyword1109



Просмотр профиля В отладчике на строке ИзображениеНоменклатуры = Новый Картинка(ПозицияНоменклатуры.coverImage);
что показывает команда ТипЗнч(ПозицияНоменклатуры.coverImage)?







Batchir --> Batchir



Просмотр профиля

А попробуйте теперь расширение с учетом регистра:

Keyword1109 --> Keyword1109



Просмотр профиля pablo --> pablo



Просмотр профиля Правильно поставленный вопрос содержит до 90% ответа. Batchir --> Batchir



Просмотр профиля Keyword1109 --> Keyword1109



Просмотр профиля

Не в формате изображения ошибка. Я с помощью Картинка.Преобразовать(<ФорматКартинки>) и в png преобразовал и сохранял как png, но ничего не срабатывает.

Может есть какой-нибудь еще способ отобразить изображение из двоичных данных в поле html-документа?
<img src="data:image/png;base64,iVBOR. Не предлагать.

Batchir --> Batchir



Просмотр профиля

У меня к сожалению нет тех двоичных данных что у Вас, но провел следующий эксперимент:

т.е.
1. Сохранил на диск картинку из спр. номенклатуры
2. Преобразовал её в двоичные данные
3. Сохранил эти двоичные данные как картинку с другим именем

В результате в каталоге временных файлов находятся обе картинки.
Поэтому возможно актуально:

Как-то сталкивался с тем что сначала нужно было конвертить программно получаемую картинку с помощью сторонних средств перед тем как обрабатывать в 1С, по другому отказывалось работать.

а конвертил с помощью компоненты GFLAx, ею же и приводил к стандартному размеру, т.к. картинки бывают разными

Keyword1109 --> Keyword1109



Просмотр профиля

Читайте также: