|
Загрузка и выгрузка файлов. | ☑ | ||
---|---|---|---|---|
0
antihacker
17.11.16
✎
06:13
|
Вснм привет ! Вот так я загружаю файл в базу
&НаКлиенте Процедура ПутьКфайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) #Если ВебКлиент Тогда Если НЕ ПодключитьРасширениеРаботыСФайлами() Тогда УстановитьРасширениеРаботыСФайлами(); ПодключитьРасширениеРаботыСФайлами(); КонецЕсли; #КонецЕсли СтандартнаяОбработка=ложь; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл"; Диалог.ПолноеИмяФайла = ""; Фильтр = "DOCX (*.docx)|*.docx"; Диалог.Фильтр = Фильтр; Диалог.МножественныйВыбор = Ложь; Диалог.Каталог = "E:\"; ЕСЛИ Диалог.Выбрать() ТОГДА ПутьКФайлу = СокрЛП(Диалог.ПолноеИмяФайла); #Если НЕ ВебКлиент Тогда ПомещамыеФайлы = Новый Массив; ПомещамыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ПутьКФайлу,"")); ПомещенныеФайлы = Новый Массив; Если НЕ ПоместитьФайлы(ПомещамыеФайлы,ПомещенныеФайлы,,Ложь,УникальныйИдентификатор) Тогда сообщить("Ошибка прикрепление файла: " +ОписаниеОшибки()); Иначе ПрикрепитьФайлСервер(ПомещенныеФайлы,Диалог.ПолноеИмяФайла,Истина); КонецЕсли; #Иначе ПомещамыеФайлы = Новый Массив; ПомещамыеФайлы.Добавить(Новый ОписаниеПередаваемогоФайла(ПутьКФайлу,"")); ПомещенныеФайлы = Новый Массив; Если НЕ ПоместитьФайлы(ПомещамыеФайлы,ПомещенныеФайлы,,Ложь,УникальныйИдентификатор) Тогда сообщить("Ошибка прикрепление файла: " +ОписаниеОшибки()); Иначе ПрикрепитьФайлСервер(ПомещенныеФайлы,Диалог.ПолноеИмяФайла,Истина); КонецЕсли; #КонецЕсли КОНЕЦЕСЛИ; КонецПроцедуры &НаСервере Процедура ПрикрепитьФайлСервер(Данные, вхИмяФайла, ЭтоВебКлиент = Ложь) Если ЭтоВебКлиент Тогда АдресПрикрепленныйФайл = Данные[0].Хранение; ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресПрикрепленныйФайл); Иначе АдресПрикрепленныйФайл = Данные[0].Хранение; ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресПрикрепленныйФайл); КонецЕсли; НоваяСтрока = Объект.ТЧДокументыДоговора.Добавить(); НоваяСтрока.ИмяФайла = вхИмяФайла; НоваяСтрока.АдресВременногоХранилища = АдресПрикрепленныйФайл; УдалитьИзВременногоХранилища(АдресПрикрепленныйФайл); КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) ДокументОбъект = РеквизитФормыВЗначение("Объект"); Для Каждого ТекСтрока Из ДокументОбъект.ТЧДокументыДоговора Цикл Если ЭтоАдресВременногоХранилища(ТекСтрока.АдресВременногоХранилища) Тогда Данные = ПолучитьИзВременногоХранилища(ТекСтрока.АдресВременногоХранилища); ТекСтрока.Файл = Новый ХранилищеЗначения(Данные); КонецЕсли; КонецЦикла; КонецПроцедуры А так стараюсь выгрузить &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ДокументОбъект = РеквизитФормыВЗначение("Объект"); Для Каждого ТекСтрока Из ДокументОбъект.ТЧДокументыДоговора Цикл ТекСтрока.АдресВременногоХранилища = ПоместитьВоВременноеХранилище(ТекСтрока.Файл,УникальныйИдентификатор); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ФТЧДокументыДоговораВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) СтрокаТабличнойЧасти = Элементы.ФТЧДокументыДоговора.ТекущиеДанные; НомерСтроки = СтрокаТабличнойЧасти.НомерСтроки; ФТЧДокументыДоговораВыборНаСервере(НомерСтроки-1); ПолучитьФайл(Элементы.ФТЧДокументыДоговора.ТекущиеДанные.АдресВременногоХранилища, "1213.doc", Истина); КонецПроцедуры Пишет что {БизнесПроцесс.БПДоговора.Форма.ФормаБизнесПроцесса.Форма(309)}: Ошибка при вызове метода контекста (ПолучитьФайл) ПолучитьФайл(Элементы.ФТЧДокументыДоговора.ТекущиеДанные.АдресВременногоХранилища, "1213.doc", Истина); по причине: Неправильный путь к файлу 'e1c://server/здесь имя моего сервера/ABPDB/e1cib/tempstorage/e1782b61-b9dc-43c7-9e52-78974ba64d28' Форма управляемая ! Клиент тонкий и веб. В чем дело ? |
|||
1
Рэйв
17.11.16
✎
06:18
|
Или в пути ошибка или прав не хватает за уазанную папку
|
|||
2
antihacker
17.11.16
✎
06:22
|
Как я могу ошибаться в пути, елси я не указываю вручную. Все пути система сама определает как ивдно.
|
|||
3
JeHer
17.11.16
✎
06:29
|
(2) в (1) кроме пути написано, что прав не хватает за указанную папку, у сервера.
|
|||
4
antihacker
17.11.16
✎
06:32
|
Это что я должен делать ? Что за папка на сервер ?
|
|||
5
JeHer
17.11.16
✎
06:33
|
(4) учетка, под которой запускается Служба Сервера 1С. Ей тоже нужны права на изменение на этот каталог.
|
|||
6
antihacker
17.11.16
✎
06:36
|
Блин ШО за каталог ?
|
|||
7
antihacker
17.11.16
✎
06:50
|
НИчего ни трогал. Права не менял. Пробую так.
&НаСервере Функция СформироватьФайл() ИмяВременногоФайла = "C:\TMPatch.log"; //Тут создаем наш файл и записываем его в ИмяВременногоФайла //C:\TMPatch.log //Возвращаем на клиент адрес во временном хранилище Возврат ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяВременногоФайла), УникальныйИдентификатор); КонецФункции &НаКлиенте Процедура Команда2(Команда) Если НЕ ПодключитьРасширениеРаботыСФайлами() Тогда Попытка УстановитьРасширениеРаботыСФайлами(); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; КонецЕсли; Если ПодключитьРасширениеРаботыСФайлами() Тогда СсылкаСкачивания = СформироватьФайл(); сообщить(СсылкаСкачивания); ПолучитьФайл(СсылкаСкачивания, "МойФайл"); КонецЕсли; КонецПроцедуры И открываеться . НЕ могу понять. ПриСозданиеНаСервере косячок ? |
|||
8
JeHer
17.11.16
✎
06:56
|
А здесь у тебя что? ФТЧДокументыДоговораВыборНаСервере
|
|||
9
antihacker
17.11.16
✎
07:07
|
Просто лищняя строка. Не мешает. Можно убрать. Дело в том что все работает. Загружаеться и выгружаеться без проблем. Но пока не переоткроешь документ. Все таки где то в ПриСозданиеНаСервере
|
|||
10
JeHer
17.11.16
✎
07:19
|
(9) ЗначениеВРеквизитФормы()?
|
|||
11
antihacker
17.11.16
✎
07:24
|
Без него делаю так
&НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Для Каждого ТекСтрока Из Объект.ТЧДокументыДоговора Цикл Если ЭтоАдресВременногоХранилища(ТекСтрока.АдресВременногоХранилища) Тогда ДвоичныеДанные = ПолучитьИзВременногоХранилища(ТекСтрока.АдресВременногоХранилища); ТекСтрока.Файл = Новый ХранилищеЗначения(ДвоичныеДанные); КонецЕсли; КонецЦикла; КонецПроцедуры Но ругаеться что поле ТекСтрока.Файл не обноружен хотя он есть. Не могу понять почему у табличной части есть реквизит с типом ХранилищеЗначения, он не доступен. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |