1с не отображается картинка на форме

Не отображается загруженное изображение на форме справочника

Создаю элемент справочника. При открытии формы, жму на кнопку загрузить логотип. Выбираю файл, он появляется на форме.
Жму записать, закрыть. Но при открытии, на форме нет изображения. Хотя было. Я не понимаю в чем не точность и в чем не дочет. Подскажите пожалуйста.

//
&НаКлиенте
Процедура ЗагрузитьЛоготип(Команда)
ИмяФайла = «»;
ПутьФайла = «»;
ВыбранноеИмяФайла = «»;
Если ПоместитьФайл(ПутьФайла, ИмяФайла, ВыбранноеИмяФайла) = Истина Тогда
//
Ф = Новый Файл(ВыбранноеИмяФайла);
НаименованиеФайлаЛоготипа = Ф.ИмяБезРасширения;
Логотип = ПутьФайла;
УстановитьКартинку();
КонецЕсли;
КонецПроцедуры
//
&НаСервере
Процедура УстановитьКартинку()
Объект.Наименование = НаименованиеФайлаЛоготипа;
Записать();
ОбъектСправочникФайлы = Объект.Ссылка.ПолучитьОбъект();
ОбъектСправочникФайлы.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Логотип));
Логотип = ПоместитьВоВременноеХранилище(ОбъектСправочникФайлы.Файл.Получить());
КонецПроцедуры
//
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Логотип = ПолучитьНавигационнуюСсылку(Объект.Ссылка, «Файл»);
Элементы.Логотип.РазмерКартинки = РазмерКартинки.АвтоРазмер;
КонецЕсли;
КонецПроцедуры
//

вот например, что при открытии идет на форму, когда отображается изображение

вот то что уже не отображается при открытии, все в порядке, но почему то у новых элементов, ничего не выводится на форме при открытии, что может быть?

Источник

Решение задач по управляемым формам – тема № 14:
Как реализовать отображение картинок на форме и хранение их в базе

Работа с графическими изображениями повышает наглядность и удобство работы с программой. Поэтому в платформе «1С:Предприятие» реализована работа с изображениями.

Для удобства пользователей в базе можно хранить изображения различных объектов. Это могут быть фотографии товаров, сканы документов, копии документов физических лиц и так далее. Также сохраненные изображения можно отображать на формах документов, справочников и других объектов.

Кроме того, в современных типовых конфигурациях фирмы «1С» есть возможность выбора места хранения прикрепленных изображений – в самой информационной базе или в отдельном каталоге на жестком диске. Это связано с тем, что графические изображения могут занимать достаточно много места, следовательно, размер информационной базы может сильно увеличиться.

Однако приемы работы с изображениями не меняются в зависимости от способа хранения этих изображений. Далее рассмотрим пример задачи, который может встретиться на экзамене:

Необходимо обеспечить возможность прикреплять изображение к элементу справочника Номенклатура. Изображения следует хранить в информационной базе. Прикрепленное изображение номенклатуры должно отображаться на форме элемента.

На форме элемента справочника «Номенклатура» разместить кнопку «Загрузить картинку». При нажатии на эту кнопку пользователь выбирает файл на диске, который будет прикреплен к карточке номенклатуры:

dev att forms 14 01 min

Рисунок 1 – Отображение картинки на форме номенклатуры

Как организовать хранение изображений в базе

Для хранения произвольных данных в платформе «1С:Предприятие» предназначен специальный тип ХранилищеЗначений. Этот тип позволяет хранить в информационной базе любые двоичные данные – изображения, электронные таблицы, PDF-файлы и так далее.

Важно, что поля такого типа хранятся непосредственно в информационной базе. Значит, они будут сохранены в файле с расширением dt при создании выгрузки базы, а также в резервной копии, созданной средствами СУБД. Дополнительное резервное копирование файлов с изображениями не потребуется.

Для решения поставленной задачи организуем хранение прикрепленных изображений непосредственно в справочнике Номенклатура. Для этого создадим в справочнике реквизит Изображение (тип – ХранилищеЗначения):

dev att forms 14 02 min

Рисунок 2 – Реквизит справочника «Номенклатура» для хранение картинки

Как отобразить изображение на форме

Реквизит с типом ХранилищеЗначения нельзя отобразить на управляемой форме, поэтому воспользуемся временным хранилищем для размещения двоичных данных картинки:

dev att forms 14 03 min

Рисунок 3 – Использование временного хранилища для отображения картинки на форме

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

Последовательно произведем описанные выше действия.

Как настроить форму для отображения на ней картинки

Создадим на форме элемента справочника Номенклатура реквизит АдресКартинки с типом Строка:

dev att forms 14 04 min

Рисунок 4 – Создание реквизита формы «Адрес картинки»

Перенесем созданный реквизит на форму:

dev att forms 14 05 min

Рисунок 5 – Создание элемента формы «Адрес картинки»

Для поля АдресКартинки установим свойство Вид в значение «Поле картинки»:

dev att forms 14 06 min

Рисунок 6 – Установка значения свойства Вид для поля «АдресКартинки»

Создадим команду формы ЗагрузитьКартинку:

dev att forms 14 07 min

Рисунок 7 – Команда формы «Загрузить картинку»

Перенесем команду на форму:

dev att forms 14 08 min

Рисунок 8 – Размещение команды «Загрузить картинку» на форме

Реализуем обработчик команды. При нажатии на кнопку «Загрузить картинку» отобразим диалог выбора файла с картинкой. Выбранное пользователем изображение поместим во временное хранилище.

В свойствах конфигурации режим модальности не используется:

dev att forms 14 09 min

Рисунок 9 – Свойство конфигурации «Режим использования модальности»

Поэтому для помещения файла во временное хранилище используется метод глобального контекста НачатьПомещениеФайла. Процедура ЗагрузитьКартинку будет иметь следующий код:

После того, как выбранный пользователем файл будет помещен во временное хранилище, система вызывает процедуру ЗагрузитьКартинкуЗавершение, указанную в описании оповещения. В ней реквизиту формы АдресКартинки присваивается адрес временного хранилища, куда была помещена картинка.

Поскольку при выполнении рассмотренного программного кода не изменяются значения реквизитов объекта, при закрытии формы система не спросит, следует ли сохранить выполненные изменения. Чтобы не потерять отображающуюся на форме, но еще не записанную в базу картинку, признак модифицированности формы установим в значение Истина.

Важно, что при вызове процедуры НачатьПомещениеФайла обязательно требуется указать уникальный идентификатор управляемой формы. Таким образом временное хранилище будет связано с формой, то есть будет существовать до тех пор, пока существует сама форма.

Если не указать идентификатор формы, временное хранилище будет уничтожено при следующем серверном вызове. Такой вариант не подходит, поскольку по условию задачи далее нужно будет записать данные картинки в реквизит справочника.

В пользовательском режиме откроем форму элемента справочника «Номенклатура». Нажмем кнопку Загрузить картинку, выберем файл с изображением с диска, после чего картинка отобразится на форме:

dev att forms 14 10 min

Рисунок 10 – Загрузка изображения с диска

Модифицированность формы отображается при помощи символа (*) в заголовке формы.

Обратите внимание – сейчас картинка отображается на форме, но в информационной базе она еще не сохранена. Дело в том, что в базе изображение хранится в реквизите справочника «Номенклатура». Поскольку элемент справочника еще не записан, в базе данных этого изображения еще нет. Оно располагается только во временном хранилище. При записи элемента справочника необходимо данные из временного хранилища сохранить в реквизит справочника.

Как сохранить изображение в базу

Ранее была реализована загрузка изображения из файла во временное хранилище, а также отображение картинки на форме. Теперь обеспечим хранение изображения в информационной базе. Для этого необходимо данные из временного хранилища перенести в реквизит Изображение справочника «Номенклатура».

Поскольку работа с временным хранилищем доступна только на Сервере, создадим в модуле формы элемента справочника Номенклатура обработчик события ПередЗаписьюНаСервере:

Если в реквизите формы АдресКартинки содержится адрес временного хранилища, записываем в реквизит Изображение данные картинки, находящиеся во временном хранилище.

При открытии формы нужно отображать сохраненную в базе картинку на форме. Для этого в модуле формы элемента справочника Номенклатура реализуем обработчик события ПриСозданииНаСервере. Код обработчика будет выглядеть следующим образом:

При помощи метода глобального контекста ПолучитьНавигационнуюСсылку получаем навигационную ссылку на реквизит Изображение текущей позиции номенклатуры. Полученную ссылку присваиваем реквизиту формы АдресКартинки. Это позволит платформе отобразить на форме в поле картинки изображение номенклатуры.

Таким образом, поставленная задача решена. Реализовано хранение изображения в информационной базе, а также его отображение на форме.

Источник

v8: Не отображается картинка.

Lavr 20.05.2012 22:22
Прочитано: 8888
00
Lavr 20.05.2012 22:22
Прочитано: 8888
00
Здравствуйте.
Вот код:
Код 1C v 8.х
подскажите пожалуйста, как правильно сделать так чтобы сохраненная картинка отображалась при открытии формы элемента справочника? Я нажимаю кнопку Обзор нахожу картинку, она отображается на форме, сохраняется элемент справочника, но при повторном открытии картинка не отображается.
Благодарю.

П. С., я очень начинающий, учусь по учебникам и для закрепления материала экспериментирую. Изменено 21.05.12 11:37:34

Yandex
Возможно, вас также заинтересует
rekl150103

Процедура ПриОткрытии()
ЗначениеКартинки = Картинка.Получить();
Если ЗначениеКартинки <> Неопределено Тогда
ЭлементыФормы.ПолеКартинки.Картинка = ЗначениеКартинки;
Иначе
ЭлементыФормы.ПолеКартинки.Картинка = Новый Картинка(Неопределено);
КонецЕсли;
КонецПроцедуры

Процедура ОтобразитьКартинку()
ЗначениеКартинки = Картинка.Получить();
Если ЗначениеКартинки <> Неопределено Тогда
ЭлементыФормы.ПолеКартинки.Картинка = ЗначениеКартинки;
Иначе
ЭлементыФормы.ПолеКартинки.Картинка = Новый Картинка(Неопределено);
КонецЕсли;
КонецПроцедуры

Источник

Не обновляется картинка на форме в веб клиенте

На форме обработки есть поле картинки которое связано с реквизитом объекта (Строка неограниченной длины). В реквизит объекта помещаю навигационную ссылку на реквизит регистра сведений (Хранилище значения) в котором хранится картинка.
Если картинка в регистре меняется то на форме в тонком клиенте изображение тоже меняется, а в веб клиенте остаётся висеть старая.

Не помогло:
-ОбновитьОтображениеДанных(Элементы.Картинка),
-ЭтаФорма.ОбновитьОтображениеДанных(),
-Элементы.Картинка.Обновить();
-Программная замена навигационной ссылки на другую (сделал второй реквизит дублирующий изображение)

Помогло но не подходит:
-С помощью обработчика ожидания каждые 0,5 сек включать выключать видимость поля картинки (при включении видимости изображение обновляется на новое)
-Интерактивная замена навигационной ссылки, тоесть кнопка по нажатию на которую происходит замена навигационной ссылки на другую (сделал второй реквизит дублирующий изображение)

Какие есть ещё варианты?
(Платформа 8.3.12, веб сервер апач)

(1) Получается, вы форму даже не закрываете, а хотите, чтобы в реальном времени она изменялась, так?

А почему обработчик ожидания не устраивает?

Я вам про это и говорил, что с точки зрения браузера разницы нет как будет сгенерирован для него код

(15)
обработчиком ожидания каждые 0,5 сек вызывал:
&НаСервере
Процедура СерверныйВызов()

ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»);
ОбработкаОбъект.ПустаяПроцедура();
ЗначениеВРеквизитФормы(ОбработкаОбъект, «Объект»);

На сервере нельзя, ошибка
«Метод поля картинки недоступен на сервере»,

данные картинки с сервера вроде приходят, не обновляется поле картинки которое должно их отображать.
1. Сделал 2 поля картинки привязанных к одному и тому же реквизиту объекта с навигационной ссылкой.
2. Обработчиком ожидания каждые 0,5 сек для первого поля выполнял :
ОбновитьОтображениеДанных(Элементы.Картинка),
Элементы.Картинка.Обновить();
а для второго тоже самое + переключал видимость (видимо/невидимо)

(19)
Поле картинки связано с реквизитом Объект.НавигационнаяСсылкаКартинки
Регистр непереодический с 1 измерением

(1) Итак, экспериментально было определено, что веб клиент обновляет картинку при программном изменении навигационной ссылки в поле объекта связанным с картинкой если:
1.навигационная ссылка не повторяется в течении 10 сек.
2.после изменения поле объекта не меняется в течении 4 сек.

В качестве решения было сделано 3 реквизитов с хранилищем двоичных данных картинки, навигационные ссылки на которые которые последовательно с интервалом в 4 сек вставляются в поле объекта связанное с картинкой.

Помимо некошерности данного варианта, 1С начинает дико жрать память и когда она заканчивается в поле картинки отображается крестик, через некоторое время 1с падает с ошибкой из-за нехватки памяти.

Судя по всему память съедается кэшем в который помещается «Новое» изображение, как его можно принудительно очищать?

П.С.
Пробовал создавать временное хранилище помещать в него картинку и привязывать его адрес к полю объекта, а при обновлении удалять старые данные временного хранилища, память всёравно съедалась (сразу после выполнения «УдалитьИзВременногоХранилища» память освобождалась, но на меньший объём чем занималась при следующей итерации с картинкой)

(3) Обработчиком ожидания каждые 0,5 сек выполняю
Элементы.Картинка.Обновить();
ЭтаФорма.ОбновитьОтображениеДанных();
не помогает

# Заголовок Cache-Control

Header append Cache-Control «no-store, no-cache, must-revalidate»

# Заголовок Expires

ExpiresActive On ExpiresDefault «now»

Важно заметить, что полный запрет кэширования, повышает нагрузку на сервер. Поэтому, играйтесь с этим осторожно! А лучше, установите определенное время, на которое можно кэшировать документы. Например, установим кэширование на 1 час:

# Заголовок Cache-Control

Header append Cache-Control «public»

# Заголовок Expires

ExpiresActive On ExpiresDefault «access plus 1 hours»

Источник

Вывод картинок в строках таблиц формы в управляемом приложении

Начинающие программисты на платформе 8.2 иногда сталкиваются с проблемой вывода картинок в различных таблицах формы. На платформе 8.1 зачастую это делалось программно в обработке события ПриПолученииДанных либо ПриВыводеСтроки. В 8.2 же ничего программировать не надо, а лишь достаточно правильно заполнить значения свойств интерфейсных объектов. Ключевым моментом является то, что в итоговой таблице у нас должна быть отдельная колонка, содержащая индекс выводимой картинки. Попробуем вывести картинку. Есть у нас, например, справочник пользователей, в котором есть реквизит «ЕстьВИнформационнойБазе» типа булево, и нам бы хотелось выводить картинку пользователя в цвете, если пользователь есть, и серую, если его нет в информационной базе 1.

Вставим в нашу форму динамический список, поставим флажок произвольного запроса и зададим запрос в следующем виде:

2

Поставим реквизиту «ИндексКартинки» флажок «Использовать всегда», т.к. на форму мы выводить его не будем. Теперь добавим наш динамический список на форму и зададим свойства «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок»

3

В результате у нас выведется список в следующем виде:

4

Т.е. в данном случае, картинка будет выводится в первой, по порядку, колонке списка. Но иногда возникает необходимость вывести картинку в определенной колонке или, в общем случае, различные картинки в нескольких колонках. Давайте выведем нашу картинку не в колонке «Наименование», а в колонке «Код» (заодно вернем стандартную картинку списка справочника). Для возврата стандартной картинки в вышеупомянутых свойствах «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок» возвращаем первоначальные значения.

5

Теперь создаем новую группу колонок в таблице вывода динамического списка и перемещаем туда колонки «Код» и «ИндексКартинки». Для группы колонок задаем группировку «В ячейке».

6

Для колонки «ИндексКартинки» задаем вид «Поле картинки» и в появившееся свойство «КартинкаЗначений» указываем нашу картинку. Ну и уберем заголовок, чтоб не отсвечивал :)

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с не открывается форма на весь экран
  • 1с не обновляется макет печатной формы