Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2024, 07:19

Веб-клиен

Автор Andrey_123, 19 авг 2015, 15:33

0 Пользователей и 1 гость просматривают эту тему.

Andrey_123

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

MuI_I_Ika

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

В веб клиенте нужно использовать временное хранилище.

Andrey_123

Временное хранилище есть.

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

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

//Выбираем из СправочникаФизическиеЛица объект и записываем в него ссылку на справочник ХранилищеДополнительнойИнформации   
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.Ссылка
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
|ГДЕ
| ФизическиеЛица.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", ЭтаФорма.Параметры.Данные.ФизЛицо);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбъектОснИз = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ОбъектОснИз.ОсновноеИзображение = НовыйФайлКартинки.Ссылка;
ОбъектОснИз.Записать();
КонецЦикла;

ЭтаФорма.Модифицированность=Истина;
КонецПроцедуры

MuI_I_Ika

У вас действительно помещается файл во временное хранилище с адресом ПутьФайла

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

Andrey_123

В какой момент вызывать чтение из временного хранилища. Если можно кодом.

MuI_I_Ika

Вот есть пример работы в временным хранилищем: https://forum-baza.ru/index.php?topic=48199.0

Дмитрий@

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

Andrey_123

Всем спасибо, я разобрался. Сделалл через временное хранилище.

Теги:

Похожие темы (2)

Рейтинг@Mail.ru

Поиск