|
Добавить фильтр при выборе картинки | ☑ | ||
|---|---|---|---|---|
|
0
deskut
16.02.26
✎
17:50
|
Понадобилось добавить картинку в документ. В документе создал реквизит Картинка (хранилище значения), на форме документа создал реквизит АдресКартинки. Создал кнопку прикрепления картинки, повесил на нее процедуру.
&НаКлиенте Процедура ПрикрепитьКартинку(Команда) НачатьПомещениеФайла(Новый ОписаниеОповещения("ВыбратьКартинку", ЭтотОбъект),,, Истина, УникальныйИдентификатор); КонецПроцедуры &НаКлиенте Процедура ВыбратьКартинку(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт Если НЕ Результат Тогда Возврат; КонецЕсли; АдресКартинки = Адрес; КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если ЭтоАдресВременногоХранилища(АдресКартинки) Тогда ТекущийОбъект.Картинка = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресКартинки)); КонецПроцедуры Это основная часть кода, есть еще парочка проверок, кнопка удаления картинки и тд. Всё работает идеально. Но мне нужно, чтобы когда открывается проводник с выбором файла, там стоял фильтр (только изображения), а не вся куча файлов. Помогите, пожалуйста. |
|||
|
1
ass1c
16.02.26
✎
17:56
|
Как пример:
ОписаниеОповещенияОЗавершении = Новый ОписаниеОповещения("ОбработатьВыбранныеФайлы", ЭтаФорма);
Фильтр = "Excel файлы(*.xml;*.xmlx)|*.xml;*.xmlx";
ДиалогПомещенияФайлов = новый ПараметрыДиалогаПомещенияФайлов("Выберите картинку", Ложь, Фильтр);
НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, , ,ДиалогПомещенияФайлов , ЭтаФорма.УникальныйИдентификатор);
|
|||
|
2
shuhard
16.02.26
✎
17:59
|
(0) &НаКлиенте
Процедура ФайлДанныхНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; д = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); д.Заголовок = "Выберите файл"; д.МножественныйВыбор = Ложь; д.ПроверятьСуществованиеФайла = Истина; д.Фильтр = "Файлы Excel (*.xlsx, *.xls)|*.xlsx;*.xls"; д.ПредварительныйПросмотр = Ложь; д.Показать(Новый ОписаниеОповещения("ОбработкаВыбораПользователя", ЭтаФорма, "ФайлДанныхНачалоВыбора")); КонецПроцедуры |
|||
|
3
deskut
16.02.26
✎
18:14
|
Сейчас немного обнаглею, но... не могли бы показать на примере моего кода? Оба варианта не понял... :(
|
|||
|
4
ass1c
16.02.26
✎
18:21
|
(3) ну есть такое. какая версия платформы? Юзай:
Глобальный контекст (Global context) НачатьПомещениеФайла (BeginPutFile) Не рекомендуется использовать, начиная с версии 8.3.15. Рекомендуется использовать: НачатьПомещениеФайлаНаСервер Вариант синтаксиса: С диалогом выбора файла Синтаксис: НачатьПомещениеФайлаНаСервер(<ОписаниеОповещенияОЗавершении>, <ОписаниеОповещенияОХодеВыполнения>, <ОписаниеОповещенияПередНачалом>, <Адрес>, <ПараметрыДиалога>, <УникальныйИдентификаторФормы>) Используй актуальные способы и методы. Можно еще дальше пойти через Асинх... |
|||
|
5
ass1c
16.02.26
✎
18:27
|
Не тестил, но примерно так:
&НаКлиенте
Процедура Загрузка(Команда)
ОписаниеОповещенияОЗавершении = Новый ОписаниеОповещения("ОбработатьВыбранныеФайлы", ЭтаФорма);
Фильтр = "Файл изображения(*.png,*.jpg)|*.png;*.jpg";
ДиалогПомещенияФайлов = новый ПараметрыДиалогаПомещенияФайлов("Выберите свое фото", Ложь, Фильтр);
НачатьПомещениеФайловНаСервер(ОписаниеОповещенияОЗавершении, , ,ДиалогПомещенияФайлов , ЭтаФорма.УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыбранныеФайлы(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт
Если ПомещенныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
Для каждого ПереданныйФайл Из ПомещенныеФайлы Цикл
ПрочитатьЗагрузитьФайлНаСервере(ПереданныйФайл.Адрес);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПрочитатьЗагрузитьФайлНаСервере(п_Адрес)
Если НЕ ЭтоАдресВременногоХранилища(п_Адрес) Тогда
Возврат;
КонецЕсли;
ДвоичныеДанные = ПолучитьИзВременногоХранилища(п_Адрес);
ТвояКартинка = Новый ХранилищеЗначения(ДвоичныеДанные);
КонецПроцедуры |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |