helpf.pro
Регистрация
 +6 
Распечатать

1С 8.3 : Загрузка картинок в базу 1С (сохранение в хранилище значений)

В теме форма: v8: Получение данных из ХралищаЗначений

Bell в управляемом интерфейсе пробует сохранить выбранные картинки в базу 1С, но возникли сложности с сохранением в хранилище значений. как пример Bell приложил CF файл с мини конфигурацией, за что ему большое спасибо, т.к. большая часть материалов этой статьи написана им, я лишь поправил небольшие участки кода связанные с передачей файлов и сохранение в хранилище значений.


Так как везде уже Такси, то CF я перевел в этот режим и в нем демонстрирую.

Имеется справочник Хранилище данных:

Основная Форма Элемента:

Ее код:

Код 1C v 8.3
 // ПРОЦЕДУРЫ ФОРМЫ
//======================================================================================================
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если Объект.Ссылка.Пустая() Тогда
Объект.Наименование = ".";
КонецЕсли;

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

КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)

Если Объект.Ссылка.Пустая() Тогда
КонецЕсли;


КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

Если ЭтоАдресВременногоХранилища(ДанныеАдрес) Тогда

РежимСжатия              = Новый СжатиеДанных(9);
ДанныеСохранения         = ПолучитьИзВременногоХранилища(ДанныеАдрес);
ТекущийОбъект.ДанныеХЗ   = Новый ХранилищеЗначения(ДанныеСохранения, РежимСжатия);

КонецЕсли;

КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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


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


// ПРОЦЕДУРЫ ЭЛЕМЕНТОВ ФОРМЫ
//======================================================================================================


&НаКлиенте
Процедура ВыбратьДанные(Команда)

ДанныеВыбрать();


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


&НаКлиенте
Процедура СохранитьДанные(Команда)
 
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
Предупреждение(НСтр("ru = 'Элемент не записан !!!'"));
Возврат;
КонецЕсли;

ДанныеСохранения = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеХЗ");
ИмяСохранения    = Объект.Наименование; 
//ИмяСохранения    = Объект.Наименование + Объект.ДанныеРасширение; 
    ПолучитьФайл(ДанныеСохранения, ИмяСохранения, Истина);

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


// ПРОЦЕДУРЫ ПРОЧИЕ
//======================================================================================================


&НаКлиенте
Процедура ДанныеВыбрать()

ПолученныеДанныеАдрес = "";
Если ПоместитьФайл(ПолученныеДанныеАдрес, , Объект.ДанныеПуть, Истина, УникальныйИдентификатор)Тогда

ДанныеАдрес = ПолученныеДанныеАдрес;

ВыбранныйФайл = Новый Файл(Объект.ДанныеПуть);
Объект.Наименование          =  ВыбранныйФайл.Имя;
Объект.ДанныеТекущаяДата     =  ТекущаяДата();

Модифицированность = Истина;
КонецЕсли;
 
КонецПроцедуры

так же имеется общая форма ФормаЗагрузкиФайлов

При помощи ее выбираются файлы изображений и загружаются в справочник - одновременно можно загружать несколько файлов

код формы:

Код 1C v 8.3
 // ПРОЦЕДУРЫ ЭЛЕМЕНТОВ ФОРМЫ
//======================================================================================================
&НаКлиенте
Процедура СписокФайловПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)

Отказ = Истина;

ДобавитьФайлы();


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

// ПРОЦЕДУРЫ ПРОЧИЕ
//======================================================================================================
&НаКлиенте
Процедура ДобавитьФайлы()

ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.МножественныйВыбор = Истина;
ВыборФайла.Заголовок = НСтр("ru = 'Выбор файла'", "ru");
ВыборФайла.Фильтр = НСтр("ru = 'Все файлы'", "ru") + " (*.*)|*.*";
ВыборФайла.ПредварительныйПросмотр = Истина;
Если ВыборФайла.Выбрать() Тогда

Для каждого СтрокаФайл Из ВыборФайла.ВыбранныеФайлы Цикл

ОписаниеФайла = Новый Файл(СтрокаФайл);

НВС = СписокФайлов.Добавить();
НВС.ПолноеИмяФайла   = СтрокаФайл; 
НВС.РазмерФайла      = ОписаниеФайла.Размер();

КонецЦикла;

КонецЕсли;

КонецПроцедуры
&НаКлиенте
Процедура Загрузить()

Если НЕ ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;

ОчиститьСообщения();
Если СписокФайлов.Количество() = 0 Тогда
Сообщить("Файлы не выбраны !!!'");
Возврат;
КонецЕсли;

ПомещаемыеФайлы = Новый Массив;
Для каждого СтрокаФайл Из СписокФайлов Цикл
Описание = Новый ОписаниеПередаваемогоФайла(СтрокаФайл.ПолноеИмяФайла, "");
ПомещаемыеФайлы.Добавить(Описание);
КонецЦикла;

// -------------------------------------------------------------------------------
ПомещенныеФайлы         = Новый Массив;
СписокЗагруженныхФайлов = Новый СписокЗначений;

Если ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, УникальныйИдентификатор) Тогда

Закрыть(Истина);

Иначе

Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр("ru = 'Файлы не загружены'", "ru");
Сообщение.Сообщить();

КонецЕсли;


ОповеститьОВыборе(ПомещенныеФайлы);


КонецПроцедуры
&НаСервере
Функция ПоместитьВыбранныеФайлыВХранилище(ПомещаемыеФайлы)

АдресХЗ = ПоместитьВоВременноеХранилище(ПомещаемыеФайлы, УникальныйИдентификатор);
Возврат АдресХЗ;
КонецФункции


в коде вызывается ОповеститьОВыборе(ПомещенныеФайлы) и срабатывает обработчик в ФормаСпискаДополнительно

Код 1C v 8.3
 &НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

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

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

и следующим кодом идет создание элементов справочника и загрузка изображений из временного хранилища

Код 1C v 8.3
 &НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)

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

Элементы.Список.Обновить();

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

Скачать DT - Платформа 8.3.4

Разместил:   Версии: | 8.2 УП | 8.3 |  Дата:   Прочитано: 53165
 +6 
Распечатать
Возможно, вас также заинтересует
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 50
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э
Google maps : вывод точек на карту и режим панорамы 9
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 4
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 0
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же
Посмотреть все результаты поиска похожих
Комментарии
FristyTA
26.06.2019 09:15Комментарий: 4
FristyTA

Очень проблема доработка 1С, данная не работает на веб-клиенте, что очень обидноЗаказал у других специалистов(Франчайз 1С) остался доволен и главное всё работает, а в бизнесе ведь как? Автоматизировал процессы и наслаждаешься результатом

Загрузка изображений в 1С (УТ 11, Розница 2.x, УПП)

all4cf
11.10.2017 17:43Комментарий: 3
all4cf

Должно работать, в чем проблема?

deutsch2016
10.10.2017 12:17Комментарий: 2
deutsch2016

Не работает на веб клиенте! ((((( 

deutsch2016
07.10.2017 21:38Комментарий: 1
deutsch2016

Приветствую! Скажите, пожалуйста, будет работать на веб клиенте? 

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.