|
|
|
Хранилище значений в табличной части справочника 8.2 | ☑ | ||
|---|---|---|---|---|
|
0
sereban
11.09.10
✎
11:55
|
Возникла проблема при работе с реквизитом табличной части, который имеет тип хранилище значения. Табличная часть "Файлы" имеет 2 реквизита:
"ИмяФайла"(строка) и "ДанныеФайла"(хранилище). Значение в табличную часть попападают следующим образом: //процедура модуля формы элемента справочника &НаКлиенте Процедура ФайлыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) Диалог = новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выбор файла"; Диалог.ПолноеИмяФайла = ""; Отказ = Истина; Если Диалог.Выбрать() Тогда //Попытка МассивФайлов = Диалог.ВыбранныеФайлы; ПолноеИмяФайла = МассивФайлов.Получить(0); ЗагруженныйФайл = Новый Файл(ПолноеИмяФайла); ИмяФайла = ЗагруженныйФайл.Имя; ЗагруженныйФайл = Неопределено; ДвоичныеДанные = Новый ДвоичныеДанные(ПолноеИмяФайла); ДобавитьФайлТЧ(ИмяФайла, ДвоичныеДанные); ОбновитьОтображениеДанных(); //исключение // ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось добавить файл"); //КонецПопытки; Иначе Возврат; КонецЕсли; //Модифицированность = истина; КонецПроцедуры &НаСервере Процедура ДобавитьФайлТЧ(ИмяФайла, ДвоичныеДанные) СправочникОбъект = РеквизитФормыВЗначение("Объект"); СтрокаТЧ = СправочникОбъект.файлы.Добавить(); СтрокаТЧ.ИмяФайла = ИмяФайла; ХЗ = Новый ХранилищеЗначения(ДвоичныеДанные); СтрокаТЧ.ДанныеФайла = ХЗ; ЗначениеВРеквизитФормы(СправочникОбъект, "Объект"); КонецПроцедуры // ДобавитьФайлТЧ() |
|||
|
1
sereban
11.09.10
✎
11:58
|
Все вроде бы нормально, только когда я потом пытаюсь получить двоичные данные из хранилища, получаю результат НЕОПРЕДЕЛЕНО
//тоже в моделе элемента спр &НаСервере Функция ПолучитьДанныеФайла(НомерСтрокиТЧ) СправочникОбъект = РеквизитФормыВЗначение("Объект"); ТЧ = СправочникОбъект.Файлы; СтрокаТЧ = ТЧ.Найти(НомерСтроки,"НомерСтроки"); Если не СтрокаТЧ = Неопределено тогда ХЗ = СтрокаТЧ.ДанныеФайла; ДвоичныеДанные = ХЗ.Получить(); Возврат ДвоичныеДанные; КонецЕсли; Возврат Неопределено; КонецФункции // ПолучитьОбъект() |
|||
|
2
luns
11.09.10
✎
12:00
|
подгляди как в типовой сделано. например в библиотеке стандартных подсистем - механизм хранения файлов.
|
|||
|
3
sereban
11.09.10
✎
12:01
|
смотрел. Там в ТЧ они не хранят
|
|||
|
4
sereban
11.09.10
✎
12:03
|
Строка ХЗ.Получить() возвращает неопределено. Тоже самое я использую в другом справочнике, но там мне эта функция дает ДвоичныеДанные. Отличия только в записи в таб часть: сдесь я двоичные данные получаю из файла, а в том который работает я получаю из входящего сообщения электронной почты. Там соответствие, а в нем двоичные данные, которые я записываю. Может кто нибудь найдет что не при записи в ТЧ?
|
|||
|
5
mdocs
11.09.10
✎
14:01
|
Не очепятка СтрокаТЧ = ТЧ.Найти(НомерСтроки,"НомерСтроки")? вроде надо СтрокаТЧ = ТЧ.Найти(НомерСтрокиТЧ,"НомерСтроки")
|
|||
|
6
sereban
11.09.10
✎
14:05
|
Опечатка. Уже разобрался что к чему
Нужно обязательно записывать СправочникОбъект после добавления строки в ТЧ, тогда все работает |
|||
|
7
luns
11.09.10
✎
14:08
|
(6) )))))))
|
|||
|
8
sereban
11.09.10
✎
14:10
|
Как я понял раз Тип Хранилище значения недоступен в данных формы, то он не запишется при стандартной записи. Пришлось добавлять в ТЧ только имена файлов, сохранять пути к ним и при записи, обращаясь к объекту, добавлять в ТЧ хранилище значений содержащее двоичные данные файла.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |