Работа с файлами (картинками) в интерфейсе Такси

Опубликовал Павел Чистов (GROOVY) в раздел Программирование - Работа с интерфейсом

Рассмотрим алгоритм работы с файлами и картинками в новом интерфейсе 1С:Предприятие 8.3 "Такси".

Во-первых, почему я решил написать эту статью: Новая концепция 1С - отказ от модальных окон, следовательно все методы и объекты, которые порождали открытие модальных окон в новом интерфейсе работать не смогут, точнее смогут, только если в свойствах конфигурации разрешить модальные окна.
Рассмотрим алгоритм работы с файлами и картинками в новом интерфейсе 1С:Предприятие 8.3 "Такси".

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

 

Однако, если разрешить модальные окна, то мы столкнемся с проблемами при работе в web-клиенте.
 
 
Во-вторых, о работе с картинками в управляемых формах часто спрашивают.
 
Итак, задача: в справочнике "Товары" необходимо сохранять и отображать в форме фотографию товара.
Исходная конфигурация не содержит ничего, кроме самого справочника с товарами, выкладывать ее не буду, просто создайте пустую конфигурацию в 8.3.
 
Для хранения самого графического файла, в справочнике создадим реквизит "ДанныеКартинки", с типом "Хранилище значений".
 
 
Если планируете выгружать картинку (файл) из информационной базы обратно в файловую систему, то добавьте еще реквизит, который будет хранить исходное имя файла и его тип.
 
Далее, займемся формой. Как видно на картинке, реквизит с типом хранилище значений в форме недоступен.
 
 
Как будем отображать картинку в форме? Нет, не декорацией с типом "картинка". А в виде реквизита формы с типом "строка". Да, да! Это очевидно, и странно, что мало кто об этом догадывается сам. ;)
 
Все дело в том, что если на форму вынести реквизит с типом "строка", который будет содержать навигационную ссылку на графические данные или адрес временного хранилища которое содержит такие данные, то форма сможет отобразить сами графические данные.
Добавим реквизит формы с именем "СсылкаНаКартинку", тип "строка", длина не ограничена. И поместим его в реквизиты формы.
 
 
По умолчанию, строка в форме будет выглядеть как поле ввода, нам нужно поменять это, в свойствах элемента формы. Выберем в свойстве "Вид" "Поле картинки".
 
 
Интерфейсная часть готова. Займемся кодингом. Создадим команду формы "ВыбратьФайлКартинки", в виде кнопки расположим ее на форме.
 
 
В модуле опишем обработчик события "Действие" для созданной команды формы:



Пару комментариев к вышеописанному коду:
Если бы мы не обращали внимание на режим модальности приложения, то могли вполне использовать метод "ПоместитьФайл", однако цель статьи показать работу с файлами именно в таком режиме.
Метод НачатьПомещениеФайла помещает выбранный файл во временное хранилище (если выбор файла был произведен) и вызывает процедуру "ОбработатьВыборФайла" в этом же модуле.
Обращаю внимание на выделенный "УникальныйИдентификатор", этим свойством мы связали временное хранилище с текущей формой. В противном случае файл в хранилище помещен будет, но само хранилище при серверном вызовет будет уничтожено, а нам оно еще понадобится, для записи файла в реквизит справочника.

Опишем процедуру "ОбработатьВыборФайла":


Если пользователь не отказался от выбора файла, то в реквизит формы "СсылкаНаКартинку" помещаем адрес во временном хранилище, куда были помещены данные картинки.

 
Вуаля!
 
 
Так, осталось теперь при записи элемента справочника записать данные из временного хранилища в реквизит элемента справочника. Описываем событие ПередЗаписьюНаСервере:

Проверяем в реквизите формы у нас что? Если адрес временного хранилища, пишем данные в реквизит элемента справочника, обращаясь к "ТекущийОбъект", "ТекущийОбъект" - это сконвертированные данные формы, которые пишутся в базу в этот момент времени.

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

 
Актуальную версию статьи и выгрузку базы с примером можно найти тут.

См. также

Комментарии
1. Maxim k (maxis33) 41 22.07.13 10:09 Сейчас в теме
Просто и доступно, спасибо!
2. Ёпрст (Ёпрст) 1017 22.07.13 10:13 Сейчас в теме
что такое "модельных окон" ?
3. Павел Чистов (GROOVY) 2254 22.07.13 13:30 Сейчас в теме
4. Ёпрст (Ёпрст) 1017 22.07.13 13:35 Сейчас в теме
(3) тогда исправляй везде, а не только в заголовке темы.
:)
5. Walter (WalterMort) 130 24.07.13 09:01 Сейчас в теме
Вроде как диалоги открытия/закрытия файлов из браузера не требуют отключения блокировки всплывающих окон. Нафиг с ними то так заморочились?
6. Юрий Пермитин (YPermitin) 589 24.07.13 09:01 Сейчас в теме
Принцип остался тот же, что и для управляемых форм.
Так получается?
7. Евгений (Algiz) 24.07.13 09:06 Сейчас в теме
8. Павел Чистов (GROOVY) 2254 24.07.13 12:02 Сейчас в теме
Так это и есть управляемые формы.
9. Сергей Кудашкин (sikuda) 481 24.07.13 14:23 Сейчас в теме
- Как будем отображать картинку в форме? Нет, не декорацией с типом "картинка". А в виде реквизита формы с типом "строка"...
Суть этого реквизита - ссылка на ресурс внутри 1С. Если близко рассмотреть текст страницы это то что попадает в поле src тега <img>.

Как метод можно сделать поле ПолеHTML(Поле HTML документа) и
ПолеHTML = "<!DOCTYPE html><html><head></head><body><img src='"+СсылкаНаКартинку+"'/></body></html>";
10. Павел Чистов (GROOVY) 2254 24.07.13 14:31 Сейчас в теме
(9) [Суть этого реквизита - ссылка на ресурс внутри 1С.] sikuda, так я вроде как и написал...
11. Андрей Овсянкин (Evil Beaver) 3854 24.07.13 14:58 Сейчас в теме
Не только картинки, а вообще любые ХранилищаЗначения, которые нужно наполнять из управляемой формы требуют такого подхода. Суть проблемы - ХранилищеЗначения недоступно в данных формы. Если установить ему значение на сервере, то оно умрет при возврате на клиента. Нужно всегда использовать ВременноеХранилище, как промежуточный буфер, а в ПередЗаписьюНаСервере уже наполнять ТекущийОбъект нужными данными из временного хранилища.
NN2P; CratosX; AllexSoft; Elvisnya; teflon; +5 Ответить 2
12. Владислав Охотников (OVladius) 32 25.07.13 13:00 Сейчас в теме
Блин, я такой ложкой как на картинке в детстве борщи хлебал, ностальгия....
skel; AEVdovin; hornet_X; CSiER; GATTUSO; talych; gorevg; alex.msk; AllexSoft; +9 Ответить 3
13. Андрей Овсянкин (Evil Beaver) 3854 25.07.13 17:05 Сейчас в теме
14. Алексей Белоусов (AllexSoft) 26.07.13 22:00 Сейчас в теме
(12) OVladius, я думал это намек на ложку дёгтя ... )
15. Денис (Den_D) 47 29.07.13 10:54 Сейчас в теме
(10) GROOVY, Увидел публикацию, не посмотрел на автора и подумал, что кто-то с Вашего мастер-класса, оказался шустрее автора)))
16. Денис (Den_D) 47 29.07.13 10:55 Сейчас в теме
(12) OVladius, эта ложка которой 1С предлагает нам хлебануть г...на с "управляемыми" формами)))
Nuobu; bulpi; 3762515; +3 1 Ответить
17. ZLENKO.PRO (ZLENKO) 29.07.13 14:36 Сейчас в теме
Ложка весьма символично отражает тему статьи :-)
18. Ivan Khorkov (vano-ekt) 820 30.07.13 13:17 Сейчас в теме
а в обычной уф разве не так? причем тут такси?
19. Павел Чистов (GROOVY) 2254 30.07.13 13:26 Сейчас в теме
(18) vano-ekt,
1. Такси это и есть УФ.
2. В Такси отказались от модальных окон.
20. Евгений Люлюк (Evg-Lylyk) 1999 31.07.13 08:58 Сейчас в теме
(0) Спасибо за публикацию, актуальная тема
Желательно выложить базу пример.
Нужна функция очистить картинку
21. Сергей Кудашкин (sikuda) 481 01.08.13 09:11 Сейчас в теме
(11) Я думаю они это сделали специально. Они не предоставили API для работы с большим объемом данных, поэтому сделали это асинхронно, как загрузка картинок на html страницу. Это не проблема, это фича.

И есть повод понять что 1С внутри уже другое - Это же асинхронный код!!!
Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФАйла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
22. Андрей Овсянкин (Evil Beaver) 3854 01.08.13 09:19 Сейчас в теме
(21) sikuda, Нету там асинхронного кода. А не сделали они это да, специально. Я не говорю, что это косяк. Просто нужно понимать упр. форму и знать такую особенность с хранилищем значения.

А про асинхронку - ОбработкаОповещения - это не совсем то. Она не асинхронна в прямом смысле. Параллельно ничего не выполняется. Callback оповещения стоит в очереди и вызывается, когда это будет можно, но синхронно с остальным кодом.
Внутри 1С может быть и другое (я не видел), но нам, смертным, асинхронного исполнения не видать еще долго. Имхо.
23. Сергей Кудашкин (sikuda) 481 01.08.13 10:00 Сейчас в теме
(22) Согласен в текущем состоянии все загоняется в буфер и выпоняется последовательно. Какой то частью мы управляем, а какая-то(хранилище значений) делается без нас.

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

Говорить, что в 1С нет паралельной работы я бы не стал:
ЭтаФорма.СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый);
24. Андрей Овсянкин (Evil Beaver) 3854 01.08.13 10:53 Сейчас в теме
(23) sikuda,
РежимКомпоновкиРезультата.Фоновый

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

Пока транзакция записи объекта не завершится, ваш код не может ничего сделать, где тут асинхрон? асинхрон по отношению к чему?
25. Павел Чистов (GROOVY) 2254 04.08.13 00:13 Сейчас в теме
(20) Evg-Lylyk, Зачем базу, тут 20 строк кода? Правда нужно?
26. Евгений Люлюк (Evg-Lylyk) 1999 04.08.13 10:30 Сейчас в теме
(25) Думаю было бы полезно я вот хотел посмотреть как работает после Перечитать.
27. Николай Глаголев (NickOmskiy2) 44 04.08.13 12:35 Сейчас в теме
тоже в свое время брал пример из Профессиональной разработки" http://infostart.ru/public/185351/ с применением для БГУ, но можно и для прочего...
28. Сергей Кудашкин (sikuda) 481 07.08.13 09:29 Сейчас в теме
(24) Вернемся к асинхронному коду (11) Очень внимательно читаем справку:
"В тонком и толстом клиентах, в отличие от веб-клиента, метод блокирует исполнение кода языка. Тем не менее, по завершению помещения файла указанный обработчик оповещения также будет вызван, но до исполнения кода, размещенного после вызова метода."

И в код после НачатьПомещениеФайла вставим бесконечный цикл. В Тонком клиенте сначала выбор файла. Потом цикл.
А в web-клиенте наоборот сначала зависаем (браузер просит остановить цикл), потом выбор файла.
То есть в web-клиенте Оповещение работает как чистый callback javascript.
Именно это я пытаюсь вложить в фразу "код по сути своей асинхронный". И именно такое поведение стандартное для javascript на web страницах.
29. Андрей Овсянкин (Evil Beaver) 3854 07.08.13 10:47 Сейчас в теме
(28) sikuda, понял, мы говорим о совсем разных вещах, поэтому не понимаем друг-друга :)
30. Семен Слепаков (sa1m0nn) 21 08.08.13 11:17 Сейчас в теме
Спасибо за статью.
Замечание: про размещение на форме строки с видом Картинка и навигационной ссылкой на данные картинки следовало бы описать в статье, что это методика изначально Управляемого приложения, т.е. с 8.2 так работает. А нового здесь - только немодальные "модальные" методы с описанием оповещения.
31. Сергей Кудашкин (sikuda) 481 13.08.13 09:56 Сейчас в теме
Удалил про html5 (Не будем смущать неокрепшие умы 1С-ников)
32. Сергей Кудашкин (sikuda) 481 23.12.13 16:58 Сейчас в теме
(0) ...(Убрал по просьбе автора)
33. Павел Чистов (GROOVY) 2254 23.12.13 17:12 Сейчас в теме
(32) sikuda, на мой взгляд к моей статье это вообще только словом "картинка" привязать можно :)
34. Елена Пименова (Bukaska) 120 23.12.13 17:26 Сейчас в теме
(33) GROOVY,
Как будем отображать картинку в форме? Нет, не декорацией с типом "картинка". А в виде реквизита формы с типом "строка". Да, да! Это очевидно, и странно, что мало кто об этом догадывается сам. ;)

Спасибо! Я всегда пользовалась как раз декарацией(в всяком случае в 8.2)

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

ну это уж даже самое главное ..

Правильно я понимаю, что если бы я сделала реквизит типа не строка, а хранилище значения, и указала бы у поля путь к нему.. Пришлось бы мучаться с таким функционалом, как ДанныеФормыВЗначение и ЗначениеВДанныеФормы?
35. Павел Чистов (GROOVY) 2254 23.12.13 17:40 Сейчас в теме
Правильно я понимаю, что если бы я сделала реквизит типа не строка, а хранилище значения, и указала бы у поля путь к нему.. Пришлось бы мучаться с таким функционалом, как ДанныеФормыВЗначение и ЗначениеВДанныеФормы?


Строка - это реквизит формы. Как Вы собрались реквизит формы с типом ХранилищеЗначения сделать?
36. V (clev) 23 03.02.14 12:23 Сейчас в теме
Спасибо за прием работы с файлами!
Помогите разобраться с такой проблемой:

При активизации строки табличной части пытаюсь отобразить картинку на форме:

&НаСервере
Функция ПолучитьКартинку(ТекСтрока)
	Возврат ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Файлы.ДанныеКартинки", ТекСтрока-1);
КонецФункции

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


В момент присвоения СсылкаНаКартинку=ПолучитьКартинку(Элемент.ТекущиеДанные.НомерСтроки); платформа падает.




СсылкаНаКартинку в этот момент содержит текст:
"e1cib/data/БизнесПроцесс.СогласованиеДоговора.Файлы.ДанныеКартинки?ref=8711be1ed620b4fc11e38ca646b858c4&index=0"

В чем может быть проблема?
37. V (clev) 23 03.02.14 14:23 Сейчас в теме
Все, разобрался. Может, кому-то пригодится. Надо было сначала считать картинки объекта и поместить их во временное хранилище:

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	Для Каждого СтрФайлы Из Объект.Файлы Цикл
		Хранилище=ТекущийОбъект.Файлы[СтрФайлы.НомерСтроки-1].ДанныеКартинки.Получить();
		
		СтрФайлы.фСсылкаНаКартинку=ПоместитьВоВременноеХранилище(Хранилище, УникальныйИдентификатор);
	КонецЦикла	
КонецПроцедуры
...Показать Скрыть
38. Павел Чистов (GROOVY) 2254 03.02.14 16:30 Сейчас в теме
(37) clev, зачем картинку во временное хранилище пихать? Это же физическая запись на диск. Достаточно навигационную ссылку получить.
39. V (clev) 23 05.02.14 03:30 Сейчас в теме
(38) GROOVY, не могу разобраться, почему код из (36) не работает. Не подскажете, что не так?
40. Алексей Кондратьев (alexkon) 79 05.02.14 16:35 Сейчас в теме
(39) clev, я процедуру ПриЧтенииНаСервере() заменил на ПриСозданииНаСервере(). На форме предварительно сделал реквизит типа "ТаблицаЗначений" с колонкой "АдресВременногоХранилища". В ПриСозданииНаСервере() получал данные картинок из ТЧ файлов и клал их во временное хранилище(только надо не забыть преобразовать реквизит формы в значение и после всего обратно в реквизит формы). Адреса временных хранилищ положил в созданный реквизит построчно. А в процедуре ПриАктивизацииСтроки() присваивал СсылкеНаКартинку адреса временных хранилищ(индексы совпадают), полученные из реквизита формы. А изначально платформу тоже вышибало.
41. V (clev) 23 05.02.14 20:20 Сейчас в теме
(40) alexkon, Так в (37) я почти так и делаю.
Только не создаю новую ТЗ, а в табличной части формы добавил реквизит c типом "строка".
И при ПриЧтенииНаСервере() в этот реквизит записываю адрес во временном хранилище.
В этом варианте все работает. Но GROOVY в (38) говорит, что так не правильно.
42. Алексей (alf2006x) 24 18.03.14 14:49 Сейчас в теме
С файлом вроде более-менее понятно, но я не могу найти способ немодального "таксишного" выбора каталога. Может кто подскажет как это сделать?
Мне надо чтобы пользователь выбрал каталог, а после выбора строку каталога записать в реквизит справочника.
43. Алексей (alf2006x) 24 19.03.14 11:50 Сейчас в теме
(42) alf2006x,
Процедура ПутьКДНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
	Если ДиалогВыбораФайла.Выбрать() Тогда      //обработка файла Диалог.Каталог;
		Объект.ПутьКД = ДиалогВыбораФайла.Каталог;
	КонецЕсли;
КонецПроцедуры
...Показать Скрыть

Вопрос снят.
44. Денис Лашев (911service) 122 24.10.14 10:45 Сейчас в теме
А как в данном способе применить фильтр на тип файла (Расширение)?
45. N (Smallrat) 18 15.01.15 16:19 Сейчас в теме
(36) clev,
Вот тоже с похожим случаем столкнулся при изменении режима совместимости конфы:
Есть два случая - получаю файл из реквизита ссылки:
	Адрес = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Данные");
	ПолучитьФайл(Адрес, Объект.ИмяФайла, Истина);

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

Меняю режим совместимости с 8.2.13 на "не использовать" (для плафтормы 8.3.5), и первый код так и остаётся рабочим, зато второй начинает падать:
"Неправильный путь к файлу 'e1c://server/SRV-1С:3541/TestGD/e1cib/data/Справочник.ВариантыДоговоров.ПечатныеФормы.Данные?ref=b5df0025900ab87711e233d403d247a3&index=0'"
помогает только если переписать с получения ссылки на помещение в хранилище, причем если не использовать метод Получить() (спасибо (37)), то полученный адрес тоже будет нерабочим. Отчего такая беда, непонятно (((
46. Павел Чистов (GROOVY) 2254 15.01.15 20:38 Сейчас в теме
(45) Smallrat, ТекущаяСтрока элементов формы <> Индекс или номер строки данных. Нужно ссылаться именно на данные записанные в БД.
47. N (Smallrat) 18 16.01.15 10:20 Сейчас в теме
(46) Там в третьем параметре надо указать индекс строки. "Элементы.ПечатныеФормы.ТекущаяСтрока" у меня даёт 0 - вполне себе индекс. я и просто число указывал, всё равно не работает. Причём при включенном режиме совместимости ошибок нет.
48. Павел Чистов (GROOVY) 2254 16.01.15 17:53 Сейчас в теме
(47) Smallrat, еще раз, ТекущаяСтрока это НЕ индекс. И есть ли данные на которые ссылается текущая строка в базе?
49. aitbay seiduldayev (aseiduldayev) 18.01.15 11:26 Сейчас в теме
У меня такая же трабла. Кто может помоч ? При строке платформа проваливается

Объект.АдресКартинки=ПолучитьНавигационнуюСсылку(Объект.Ссылка,"ТЧПрикрепленныеФайлы.ПрикрепленныйФайл",0);
50. aitbay seiduldayev (aseiduldayev) 18.01.15 11:27 Сейчас в теме
Тут так и не разобрались. Т
51. Павел Чистов (GROOVY) 2254 18.01.15 14:05 Сейчас в теме
(49) aseiduldayev, Какая "такая же"?
Куда проваливается платформа?
52. N (Smallrat) 18 21.01.15 10:56 Сейчас в теме
(48) GROOVY, Хорошо, действительно параметр ТекущаяСтрока некорректно использовать (хоть в моем случае это 0)
переписал так:

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

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

Всё равно валится с выключенным режимом совместимости, а с включенным 8.2 нет. Данные в базе есть - я могу их получить, поместить во временное хранилище и выгрузить на клиенте через адрес хранилища. Я покопал форумы - нигде решения нет, кроме как обходить.
53. Юрий Вячеславович (3762515) 26.02.15 16:00 Сейчас в теме
У меня не получается, ошибка:
{Справочник.Лис_ТипыКонтейнеров.Форма.ФормаЭлемента.Форма(15)}: Ошибка при вызове конструктора (ОписаниеОповещения)
Оповещение = Новый ОписаниеОповещения("ОбработатьВыборФайла", Объект);
по причине:
Не найден экспортируемый метод: ОбработатьВыборФайла
54. Юрий Вячеславович (3762515) 26.02.15 16:04 Сейчас в теме
А ещё в процедуре "ВыбратьФайлКартинки" ругается на "ЭтотОбъект"
55. Павел Чистов (GROOVY) 2254 06.03.15 23:36 Сейчас в теме
(53) 3762515, Надо, просто на 8.3 кодить.
56. v p (vitaliy1911) 8 20.03.15 19:53 Сейчас в теме
пишу
&НаКлиенте
Процедура КомандаОткрытьФайл(Команда)
	Адрес = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайла");
	ПолучитьФайл(Адрес);
КонецПроцедуры
...Показать Скрыть

ругается
{Справочник.sd_Файлы.Форма.ФормаЭлемента.Форма(37)}: Ошибка при вызове метода контекста (ПолучитьФайл)
ПолучитьФайл(Адрес, Объект.Наименование);
по причине:
Неправильный путь к файлу 'e1c://filev/C/bases/desktopSD/e1cib/data/Справочник.sd_Файлы.ДанныеФайла?ref=bdda4487fca76d4611e4cd932712cf62'

ДанныеФайла - хранилище значений с данными файла
что я делаю не так? (8.3.5.1460)

П.С. Разобрался. Пытался поместить данные через реквизитформывзначение, запись в реквизит, затем значениевреквизитформы. так не правильно, потому что после обратного перехода в реквизит формы данные теряются. не повторяйте моих ошибок
57. Родион (lamdth) 10 02.09.15 16:26 Сейчас в теме
(44) 911service,
Фильтр по расширению:
	ДиалогОткрытияФайла							= Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	ДиалогОткрытияФайла.Фильтр					= "Формат JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|";
	ДиалогОткрытияФайла.МножественныйВыбор		= Ложь;
	ДиалогОткрытияФайла.ПредварительныйПросмотр	= Истина;
	ДиалогОткрытияФайла.Заголовок				= Нстр("ru='Выберите файл с фотографией'");
	
	ОповещениеОбработатьВыборФайла = Новый ОписаниеОповещения("ОбработатьВыборФайла", ЭтотОбъект);
	НачатьПомещениеФайлов(ОповещениеОбработатьВыборФайла, , ДиалогОткрытияФайла, Истина, УникальныйИдентификатор);

...Показать Скрыть
58. Виктор Назаров (androgin) 26.01.16 01:26 Сейчас в теме
И получать картинки нужно в ПриЧтенииНаСервере
59. Андрей Переп (DrSMERTb) 06.07.16 10:50 Сейчас в теме
А как теперь можно ещё сделать функцию сохранения на диск картинки из базы?
60. Гость 09.08.16 14:09 Сейчас в теме
Здравствуйте!
Сделала так, как у вас написано. Картинка добавляется, но при последующем открытии элемента пропадает. Подскажите, пожалуйста, в чем может быть проблема?