|
Хранилище значения в реквизите табличной части (упр. формы) | ☑ | ||
---|---|---|---|---|
0
sound
09.12.14
✎
10:51
|
С управляемыми формами только разбираюсь, больно не пинать! Гуглил, но плохо, везде кусками, толкового разъяснения не нашел. Смотрел, что в типовых не юзают реквизиты с типом "ХранилищеЗначения" в табличных частях, а хранят все это в связанных регистрах, про это в курсе если что.
В документе есть табличная часть "ТЧФайлы", в ней 2 реквизита: "Файл" (тип "ХранилищеЗначения") и "ИмяФайла" (тип "строка"). Вопрос: как и в каких процедурах организовать запись (с выбором файлов) и чтение в реквизит "Файл"? |
|||
1
mikecool
09.12.14
✎
10:53
|
в БСП посмотреть не предлагать?
|
|||
2
sound
09.12.14
✎
10:53
|
(1) а это чо? )
|
|||
3
Жан Пердежон
09.12.14
✎
10:54
|
смотри в типовых, в БСП реализована подсистема работы с файлами
|
|||
4
sound
09.12.14
✎
10:55
|
(1,2) Библиотека стандартных подсистем чтоли?
|
|||
5
Жан Пердежон
09.12.14
✎
11:00
|
(4) да, она бесплатная, качай - смотри - себе бери
|
|||
6
sound
09.12.14
✎
11:09
|
Пасиба всем, буду курить. Хотя жаль что примерчик никто не кинул :)
|
|||
7
sound
09.12.14
✎
12:00
|
Чото закопался я с этой БСП, много лишнего, может все таки есть у кого примерчик?
|
|||
8
sound
09.12.14
✎
12:11
|
вот пока до чего дошло, не знаю мож где ошибка, пишу в модуле формы документа:
&НаКлиенте Процедура ДобавлениеФайла(Команда) ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ВыборФайла.МножественныйВыбор = Ложь; ВыборФайла.Заголовок = НСтр("ru = 'Выбор файла'"); ВыборФайла.Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'"); //РабочийКаталог = РаботаСФайламиСлужебныйВызовСервера.РабочийКаталогПапки(ВладелецФайла); //ВыборФайла.Каталог = РабочийКаталог; Результат = ВыборФайла.Выбрать(); ПолноеИмяФайла = ВыборФайла.ПолноеИмяФайла; Если НЕ Результат Тогда Возврат; КонецЕсли; Файл = Новый Файл(ПолноеИмяФайла); //ФайловыеФункцииСлужебныйКлиентСервер.ПроверитьВозможностьЗагрузкиФайла(Файл); АдресВременногоХранилища = ""; ПомещаемыеФайлы = Новый Массив; Описание = Новый ОписаниеПередаваемогоФайла(Файл.ПолноеИмя, ""); ПомещаемыеФайлы.Добавить(Описание); ПомещенныеФайлы = Новый Массив; Если НЕ ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы,,Ложь, ЭтаФорма.УникальныйИдентификатор) Тогда Сообщить("Ошибка при помещении файла во временное хранилище"); ВОзврат; КонецЕсли; Если ПомещенныеФайлы.Количество() = 1 Тогда АдресВременногоХранилища = ПомещенныеФайлы[0].Хранение; НовСтр = Объект.ТЧФайлы.Добавить(); НовСтр.ИмяФайла = Файл.Имя; НовСтр.Комментарий = Файл.ИмяБезРасширения; НовСтр.АдресВременногоХранилища = АдресВременногоХранилища; КонецЕсли; КонецПроцедуры потом нарыл что нужно сделать примерно так: &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Для каждого ТекСтрока Из ТекущийОбъект.ТЧФайлы Цикл Если ЭтоАдресВременногоХранилища(ТекСтрока.АдресВременногоХранилища) Тогда Данные = ПолучитьИзВременногоХранилища(ТекСтрока.АдресВременногоХранилища); ТекСтрока.Файл = Новый ХранилищеЗначения(Данные); КонецЕсли; КонецЦикла; //ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); КонецПроцедуры |
|||
9
sound
09.12.14
✎
12:17
|
вроде записалось чо то, но что-то просветления не пришло, теперь при двойном щелчке по нужной строке и колонке хочется открыть/сохранить файл, делаю так:
&НаКлиенте Процедура ТЧФайлыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если Поле.Имя = "ТЧФайлыИмяФайла" Тогда Если Объект.ТЧФайлы[ВыбраннаяСтрока].ИмяФайла = "" Тогда Предупреждение("Нет сохраненного в базе файла!"); Иначе СсылкаНаФайлВИБ = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ТЧФайлы.Файл", ВыбраннаяСтрока); Попытка ПолучитьФайл(СсылкаНаФайлВИБ, Объект.ТЧФайлы[ВыбраннаяСтрока].ИмяФайла); Исключение Предупреждение("Ошибка: возможно документ еще не записан!"); Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное); КонецПопытки; КонецЕсли; КонецЕсли; КонецПроцедуры вроде работает, но как то все через #$пу блин. Сижу щас думаю насколько это правильно вообще |
|||
10
Жан Пердежон
09.12.14
✎
12:26
|
(9) да, все так, через временное хранилище файл отправляешь с клиента на сервер, и через него же получаешь обратно
|
|||
11
sound
09.12.14
✎
12:32
|
(10) Мне кажется в процедуре ПередЗаписьюНаСервере косяк какой то. Вроде файлы записываются, потом документ закрываю/открываю заново, добавляю 2-ю строчку, записываю, после этого первая строка уже как будто не содержит файла
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |