Импорт изображения/гиф в 1С

18.05.24

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

В данной публикации хочу поделиться методом импорта изображения в 1С.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Импорт изображения/гиф в 1с:
.zip 205,05Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Для начала создадим какой-нибудь справочник, например "Сотрудники", добавим реквизит с типом данных "Хранилище значения".

 

После этого нужно перейти в раздел "Формы" и создать форму элемента.

На форме создадим команду с именем "Загрузить" и нажмём на значок лупы для создания процедуры. Процедуру создаём на клиенте.

 

 

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

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

Пример: *.jpg;*.png;*.gif

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

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

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

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

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

Итак, мы выбрали изображение и поместили его на сервер, но куда же нам его вывести, для этого мы возвращаемся на форму и создаём реквизит.

 

 

После создания реквизита, перенесите его на форму и поменяйте его вид на "Поле картинки".

На данном этапе вы можете запустить программу и выбрать картинку, но если вы её запишете и откроете заново, там ничего не будет, для того, чтобы это исправить, надо создать две стандартные процедуры.
 

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

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

Если у вас некорректно отображается изображение, перейдите в раздел Оформление и поставьте Размер картинки "Пропорционально".

 

 

В итоге получился такой код.


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

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

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

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

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

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

 

1С:Предприятие 8.3 версия (8.3.22.1709).

См. также

Работа с интерфейсом Системный администратор Программист Платформа 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    20815    mrXoxot    44    

128

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

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

27.05.2024    10301    smielka    37    

105

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

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

27.12.2023    17739    1223    elcoan    53    

125
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Tarlich 116 19.05.24 07:02 Сейчас в теме
Написано все верно, и работать будет . не подумайте что придираюсь но для 2024 года надо использовать БСП Спр.ПрисоединенныеФайлы
Точно такую статью увидел первый раз 10 лет назад https://helpf.pro/faq83/view/1563.html?ysclid=lwd0g7kar3652705789
user2087985; Leko907; +2 Ответить
2. Leko907 4 19.05.24 10:44 Сейчас в теме
Соглашусь с вами, но статья рассчитана на новичков, которые только только зашли в 1с и понятия не имеют о бсп
3. пользователь 22.05.24 05:07
Сообщение было скрыто модератором.
...
4. пользователь 22.05.24 05:13
Сообщение было скрыто модератором.
...
5. VKuser161198823 15.07.24 22:47 Сейчас в теме
А можно как то еще добавить кнопку очищения фотографии и так же чтобы можно было загрузить несколько фото с последующим выбором основной в форме списка
Оставьте свое сообщение