Импорт картинки в 1С

14.03.23

Разработка - Работа с интерфейсом

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

1. Добавляем реквизит "Картинка" к справочнику Тренеры тип "ХранилищеЗначения"

 

 

2. Создаем форму элемента в справочнике Тренеры.

 

 

На этой форме добавляем реквизит "СсылкаНаКартинку". И перетаскиваем на форму. Нажимаем на этот объект на форме и ставим свойства: Вид - поле картинки и устанавливаем свойство гиперссылка для возможности добавления картинки по нажатию 

 

 

3. Создаем процедуру нажатия на поле картинки. Выбираем "Создать на клиенте"

 

 

В данный обработчик вставляем следующий код, который будет вызывать диалог открытия файла с расширением jpg, png, jpeg

СтандартнаяОбработка = ложь;
    ДиалогОткрытия = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогОткрытия.ПолноеИмяФайла = "";
    ДиалогОткрытия.Фильтр = "Файл JPG, PNG, JPEG |*.jpg; *.png; *.jpeg";
    ДиалогОткрытия.МножественныйВыбор = ложь;
    ДиалогОткрытия.Заголовок = "Выбор изображения";
    ОписаниеОповещения = Новый ОписаниеОповещения("ПослеЗагрузкиФайла", ЭтаФорма); 
    ДиалогОткрытия.Показать(ОписаниеОповещения);

 

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

&НаКлиенте
Процедура ПослеЗагрузкиФайла(ВыбранныйФайл, ДопПараметр)экспорт 
    Если ВыбранныйФайл = Неопределено тогда  
        Возврат;
    Иначе
        ОписаниеОповещения = Новый ОписаниеОповещения("ПослеПеремещенияФайлаНаСервер", ЭтаФорма); 
        НачатьПомещениеФайлаНаСервер(ОписаниеОповещения, , , , ВыбранныйФайл[0], УникальныйИдентификатор);
    КонецЕсли
 КонецПроцедуры

 

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

&НаКлиенте
Процедура ПослеПеремещенияФайлаНаСервер(Результат, Адрес)экспорт
    Если Результат = ложь Тогда
        Возврат;
    Иначе
        СсылкаНаКартинку = Результат.Адрес;
        Модифицированность = истина;
    КонецЕсли;    
КонецПроцедуры 

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

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

6. Через события формы создаем процедуру "ПередЗаписьюНаСервере". Соответственно выбираем "Создание на сервере" 

 

 

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

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

Последнее, что нам осталось сделать, это появление нашей картинки при открытии формы, если картинку мы уже добавили в базу


7.  Через события формы создаем процедуру "ПриСозданииНаСервере". "Создать на сервере"

СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Картинка");

 

Теперь при открытии формы появится поле для добавления картинки в заданных форматах через диалоговое окно. 

 

Для редактирования масштаба отображаемой картинки необходимо в свойствах поля "Ссылка на картинку" указать подходящий масштаб. Например 30 

импорт

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    55303    17    23    

43

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63697    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    19548    27    6    

42

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

1500 руб.

06.10.2020    10768    7    7    

11

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    20823    mrXoxot    44    

128

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    10308    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    17740    1223    elcoan    53    

125
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. glek 120 14.03.23 16:19 Сейчас в теме
БСП не позволяет религия использовать? Обязательно изобретать велосипет?
bayselonarrend; SergeRSA; bilex; +3 1 Ответить
3. krisstya2000 14 14.03.23 17:15 Сейчас в теме
(1) примите к сведению, что на этом форуме ищут помощь не только опытные программисты, но и студенты, от которых требуют вначале именно этого "велосипеда")
4. glek 120 15.03.23 07:43 Сейчас в теме
(3) Вот и не надо обучать с велосипедов. Надо обучать правильно. А то потом приходят на работу и вместо БСП пишут "гибкие решения"
SergeRSA; bilex; +2 Ответить
5. romasna 325 19.03.23 10:59 Сейчас в теме
Вот ведь заели автора статьи.... :) Она права, не все начинают программировать с изучения БСП. Помню, как я рылся в интернете, выискивая информацию именно по добавлению картинок в БД через УФ, для меня это было актуально применительно к небольшой самописной конфигурации.
ЗЫ:Если бы товарищ Габец А.П. со своей книгой "1С-Предприятие8.1. Простые примеры разработки" держал равнение на опытных программистов, то и книги не было бы.
2. awk 745 14.03.23 16:36 Сейчас в теме
(0) Вы бы хотя бы код оформили согласно стандарту, что ли...
6. SergeRSA 22.03.23 09:02 Сейчас в теме
Такое решение подходит только, как элемент изучения 1С, но не как рабочий вариант.
7. user700522_lerner584 25.03.23 13:17 Сейчас в теме
К вопросу что это для начинающих. Хорошая «школа» сразу приучать людей двоичные данные в основном объекте хранить…
8. user1909675 27.03.23 15:35 Сейчас в теме
Процедура ДобавитьКартинку(Команда)
	
	ИмяФайла = "";
	
	Если ПоместитьФайл(ПутьКФайлу,,ИмяФайла,Истина) = Истина Тогда
		
		Картинка = ПутьКФайлу;
		УстановитьКартинку();   
		
	КонецЕсли;
	
КонецПроцедуры    

Процедура УстановитьКартинку() 
	
	
	НовыйФайлКартинки = Справочники.Файлы.СоздатьЭлемент();
	НовыйФайлКартинки.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Картинка));
	Картинка = ПоместитьВоВременноеХранилище(НовыйФайлКартинки.Файл.Получить());
	
	НовыйФайлКартинки.Записать();
	Объект.Картинка = НовыйФайлКартинки.Ссылка;
	
	
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Картинка = ПолучитьНавигационнуюСсылку(Объект.Картинка, "Файл");
	Элементы.Картинка.РазмерКартинки = РазмерКартинки.АвтоРазмер;
КонецПроцедуры
Показать
9. пользователь 18.05.23 07:41
Сообщение было скрыто модератором.
...
10. пользователь 21.05.23 18:19
Сообщение было скрыто модератором.
...
11. пользователь 24.05.23 05:28
Сообщение было скрыто модератором.
...
12. пользователь 17.06.23 19:31
Сообщение было скрыто модератором.
...
13. пользователь 18.06.23 18:25
Сообщение было скрыто модератором.
...
14. пользователь 18.06.23 21:49
Сообщение было скрыто модератором.
...
15. пользователь 19.06.23 17:17
Сообщение было скрыто модератором.
...
16. пользователь 20.06.23 12:00
Сообщение было скрыто модератором.
...
17. Deylon 13.03.24 15:19 Сейчас в теме
у меня вот такой код получился в модуле формы объекта
&НаКлиенте
Процедура ДобавитьФото(Команда)
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.ПолноеИмяФайла = "";
	Диалог.МножественныйВыбор = Ложь;
	Диалог.Фильтр = "Выберите файл .gif|*.gif";
	Диалог.Заголовок = "Выберите фотографию";
	
	Оповещение = Новый ОписаниеОповещения("ЗавершениеВыбораФайла", ЭтаФорма);
	Диалог.Показать(Оповещение);
КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеВыбораФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	Если ВыбранныеФайлы <> Неопределено Тогда
		Если ТипЗнч(ВыбранныеФайлы) = Тип("Массив")Тогда
			Если ВыбранныеФайлы.Количество() > 0 Тогда
				ИмяФайла = ВыбранныеФайлы[0];
				
				ЗавершениеЗагрузки = Новый ОписаниеОповещения("ЗавершениеЗагрузкиФайлаНаСервер", ЭтаФорма);
				НачатьПомещениеФайлаНаСервер(ЗавершениеЗагрузки, , , , ИмяФайла,УникальныйИдентификатор);
	КонецЕсли;
        КонецЕсли;
	            КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеЗагрузкиФайлаНаСервер(ОписаниеПомещенногоФайла,ДополнительныеПараметры) Экспорт
	Если ОписаниеПомещенногоФайла <> Неопределено Тогда
		АдресВоВремХранилище = ОписаниеПомещенногоФайла.Адрес;
		ОбработкаФайлаНаСервере(АдресВоВремХранилище);
    КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ОбработкаФайлаНаСервере(АдресФайла)
	Если ЭтоАдресВременногоХранилища(АдресФайла)Тогда
		ХранениеФотографии = АдресФайла;
	КонецЕсли;	

КонецПроцедуры

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ХранениеФотографии = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Фото");
КонецПроцедуры
Показать
18. YourAlinochka 13.03.24 15:58 Сейчас в теме
ДанныеКартинки имеет тип ХранилищеЗначения

&НаКлиенте
Процедура ВыборКартиинки(Команда)
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Диалог.ПолноеИмяФайла = "";
	Диалог.Фильтр = "Выберите фотографию|*.jpg";
	Диалог.МножественныйВыбор = Ложь;
	Диалог.Заголовок = "Выберите Фото";
	
	Оповещение = Новый ОписаниеОповещения("ЗавершениеВыбораФайла",ЭтаФорма);
	Диалог.Показать(Оповещение);	
КонецПроцедуры  

&НаКлиенте
Процедура ЗавершениеВыбораФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
	Если ВыбранныеФайлы <> Неопределено Тогда
		Если ТипЗнч(ВыбранныеФайлы) = Тип("Массив")Тогда
			Если ВыбранныеФайлы.Количество() > 0 Тогда
				ИмяФайла = ВыбранныеФайлы[0];
				
				ЗавершениеЗагрузки = Новый ОписаниеОповещения("ЗавершениеЗагрузкиФайлаНаСервер",ЭтаФорма);
				НачатьПомещениеФайлаНаСервер(ЗавершениеЗагрузки, , , ,ИмяФайла,УникальныйИдентификатор);
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеЗагрузкиФайлаНаСервер(ОписаниеПомещенногоФайла,ДополнительныеПараметры) Экспорт
	Если ОписаниеПомещенногоФайла <> Неопределено Тогда 
		АдресВоВремХранилище = ОписаниеПомещенногоФайла.Адрес;
		ОбработкаФайлаНаСервере(АдресВоВремХранилище);
		Модифицированность = Истина;
	КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ОбработкаФайлаНаСервере(АдресФайла)
	Если ЭтоАдресВременногоХранилища(АдресФайла)Тогда
		СсылкаНаКартинку = АдресФайла; //СсылкаНаКартинку Это реквизит формы
	КонецЕсли;   
КонецПроцедуры


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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	СсылкаНаКартинку = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеКартинки"); //СсылкаНаКартинку Это реквизит формы, ДанныеКартинки это реквизит Справочника
КонецПроцедуры

Показать
19. mothyllek 20.11.24 17:19 Сейчас в теме
Оставляю сообщение для сохранения страницы
Оставьте свое сообщение