![]() |
|
Ошибка прикрепления файлов к базе данных | ☑ | ||
---|---|---|---|---|
0
Lolipop
14.11.15
✎
17:29
|
На форме справочника есть две кнопки. "Загрузить с диска" и "загрузить на диск".
Есть реквизиты справочника "Файл", "ИмяФайла", "Ссылка на файл во временном хранилище". &НаКлиенте Процедура ЗагрузитьСДиска(Команда) АдресВХранилище = ""; ВыбранноеИмяФайла = ""; Если ПоместитьФайл(АдресВХранилище, , ВыбранноеИмяФайла, Истина , УникальныйИдентификатор) Тогда Файл = Новый Файл(ВыбранноеИмяФайла); Имя = Файл.Имя; Объект.СсылкаНаФайлВоВременномХранилище = АдресВХранилище; Объект.Наименование = Файл.Имя; Модифицированность = Истина; Объект.ИмяФайла = Имя; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура СохранитьНаДиск(Команда) Если Объект.ИмяФайла = "" Тогда Предупреждение("У поставщика нет сохраненного в базе договора"); Иначе СсылкаНаФайлВИБ = Объект.СсылкаНаФайлВоВременномХранилище; ПолучитьФайл(СсылкаНаФайлВИБ); КонецЕсли; КонецПроцедуры Загрузка происходит без ошибки, данные о нахождении файла сорхраняются в реквизит, но при сохранении этого файла происходит ошибка по причине: Неправильный путь к файлу 'e1c://filev/C/Users/Роман/Documents/InfoBase3/e1cib/tempstorage/59809ecc-0c72-4d9f-ba19-f7b0bac254f3' В Чем может быть ошибка? |
|||
1
Горогуля
14.11.15
✎
17:31
|
в Объект.СсылкаНаФайлВоВременномХранилище
|
|||
2
Lolipop
14.11.15
✎
17:33
|
(1) Почему?
А как еще сохранять и обращаться? |
|||
3
Горогуля
14.11.15
✎
17:58
|
у меня такая фигня на форме хранилась, а не в объекте
|
|||
4
Lolipop
14.11.15
✎
17:59
|
(3) Так форма не сохраняет данных, разве не так?
|
|||
5
Горогуля
14.11.15
✎
18:00
|
(4) реквизиты формы в БД не хранятся
|
|||
6
Lolipop
14.11.15
✎
18:01
|
(5) Переделал так
&НаКлиенте Процедура СохранитьНаДиск(Команда) Если Объект.ИмяФайла = "" Тогда Предупреждение("У поставщика нет сохраненного в базе договора"); Иначе СсылкаНаФайлВИБ = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Файл"); ПолучитьФайл(СсылкаНаФайлВИБ, Объект.ИмяФайла); КонецЕсли; КонецПроцедуры ПолучитьФайл(СсылкаНаФайлВИБ, Объект.ИмяФайла); по причине: Неправильный путь к файлу 'e1c://filev/C/Users/Роман/Documents/InfoBase3/e1cib/data/Справочник.Файлы.Файл?ref=9bd9446d5740156611e58adf2c83e6cf' |
|||
7
Lolipop
14.11.15
✎
18:01
|
Все тоже самое
|
|||
8
Горогуля
14.11.15
✎
18:01
|
а видел же я в какой-то типовой картинки. вроде это номенклатура была. а что, если картинка номенклатуры попала в базу из файла? это же будет целый прорыв! масса готового к употреблению исходного кода
|
|||
9
Горогуля
14.11.15
✎
18:03
|
>Есть реквизиты справочника "Файл"
а за это можно и линейкой по пальцам схлопотать. если это ХЗ |
|||
10
Lolipop
14.11.15
✎
18:05
|
(9) Это ХЗ.
То есть, надо обработать в двоичных данных? Сделал так, но при сохранении даже не попадает в эту функцию &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если ЭтоАдресВременногоХранилища(СсылкаНаФайлВоВременномХранилище) Тогда УдалитьИзВременногоХранилища(СсылкаНаФайлВоВременномХранилище); КонецЕсли; КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если ЭтоАдресВременногоХранилища(ТекущийОбъект.СсылкаНаФайлВоВременномХранилище) Тогда ДвоичныеДанные = ПолучитьИзВременногоХранилища(ТекущийОбъект.СсылкаНаФайлВоВременномХранилище); ТекущийОбъект.Файл = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9)); ТекущийОбъект.ИмяФайла = Имя; КонецЕсли; КонецПроцедуры |
|||
11
Горогуля
14.11.15
✎
18:11
|
коду уже пара лет, на правильность не претендует
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) НЗ=РегистрыСведений.ФайлыЗаданий.СоздатьНаборЗаписей(); НЗ.Отбор.Задание.Установить(Объект.Ссылка); НЗ.Прочитать(); Если НЗ.Количество() Тогда Данные=НЗ[0].Файл.Получить(); РасширениеФайла=НЗ[0].Расширение; Иначе Данные=Неопределено; Расширение=""; КонецЕсли; Если Данные<>Неопределено Тогда АдресФайла=ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор); КонецЕсли; КонецПроцедуры &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Если НЕ ЭтоАдресВременногоХранилища(АдресФайла) Тогда Возврат; КонецЕсли; НЗ=РегистрыСведений.ФайлыЗаданий.СоздатьНаборЗаписей(); НЗ.Отбор.Задание.Установить(Объект.Ссылка); Запись=НЗ.Добавить(); //к этому моменту ссылка не должна быть пустой Запись.Задание=Объект.Ссылка; Запись.Файл=Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(АдресФайла)); Запись.Расширение=РасширениеФайла; НЗ.Записать(); КонецПроцедуры &НаКлиенте Процедура Загрузить(Команда) Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.МножественныйВыбор=Ложь; Диалог.Фильтр="Документы Word|*.doc|Все файлы|*.*"; Если Диалог.Выбрать() Тогда АдресФайла=ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла), УникальныйИдентификатор); Ф=Новый Файл(Диалог.ПолноеИмяФайла); РасширениеФайла=Сред(Ф.Расширение, 2); Модифицированность=Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура Показать(Команда) Если НЕ ЭтоАдресВременногоХранилища(АдресФайла) Тогда Возврат; КонецЕсли; ВременноеИмя=ПолучитьИмяВременногоФайла(РасширениеФайла); ПолучитьФайл(АдресФайла, ВременноеИмя, Ложь); ЗапуститьПриложение(ВременноеИмя); КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |