Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 05:06

Получение файла из базы

Автор fairei, 27 сен 2011, 09:22

0 Пользователей и 1 гость просматривают эту тему.

fairei

Имеется документ, в его табличной части "СканыДокументов" есть поле типа Хранилище значений - "СканДокументаХранилище"
По кнопкам организую помещение в базу через временное хранилище.
При попытке открыть файл вылетает ошибка: Ошибка при вызове метода контекста (ПолучитьФайл)
   ПолучитьФайл(Адрес,Объект.СканыДокументов[ИндексСтроки].СодержаниеФайла,Истина);
по причине:
Файл не обнаружен '[url="e1c://server/dzo/46mrn/e1cib/data/%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82.%D0%94%D0%9E%D0%93%D0%9E%D0%92%D0%9E%D0%A0%D0%9D%D0%90%D0%AF_%D0%A0%D0%90%D0%91%D0%9E%D0%A2%D0%90_%D0%94%D0%97%D0%9E.%D0%A1%D0%BA%D0%B0%D0%BD%D1%8B%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2.%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5%D0%A4%D0%B0%D0%B9%D0%BB%D0%B0?ref="99cf20cf30e61ece11e0e401cf955ab1"&index=0'"]e1c://server/dzo/46mrn/e1cib/data/Документ.ДОГОВОРНАЯ_РАБОТА_ДЗО.СканыДокументов.СодержаниеФайла?ref="99cf20cf30e61ece11e0e401cf955ab1"&index=0'[/url]
по причине:
Неправильный путь к файлу '/e1cib/data/Документ.ДОГОВОРНАЯ_РАБОТА_ДЗО.СканыДокументов.СодержаниеФайла?ref="99cf20cf30e61ece11e0e401cf955ab1"&index=0

Вот текст процедур:
&НаКлиенте
Процедура ПрикрепитьСкан(Команда)
   Перем ВыбранноеИмя;
   Перем АдресВременногоХранилища;
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Выбрать();
   ВыбранноеИмя = Диалог.ПолноеИмяФайла;
   Если ПоместитьФайл(АдресВременногоХранилища, ВыбранноеИмя, ВыбранноеИмя, ЛОЖЬ, УникальныйИдентификатор) Тогда
      НовыйСкан = Объект.СканыДокументов.Добавить();
      НовыйСкан.СодержаниеФайла = ВыбранноеИмя;
      ПоместитьВБД(АдресВременногоХранилища, НовыйСкан.НомерСтроки-1);
   КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПоместитьВБД(АдресВременногоХранилища, ИндексСтроки)
   ЭлементДокумента = РеквизитФормыВЗначение("Объект");
   ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
   ЭлементДокумента.СканыДокументов[ИндексСтроки].СканДокументаХранилище = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
   ФайлПутьНаДиске = Новый Файл(ЭлементДокумента.СканыДокументов[ИндексСтроки].СодержаниеФайла);
   ЭлементДокумента.СканыДокументов[ИндексСтроки].СодержаниеФайла = ФайлПутьНаДиске.Имя;
   ЭлементДокумента.Записать();
   Модифицированность = Ложь;
   УдалитьИзВременногоХранилища(АдресВременногоХранилища);
   ЗначениеВРеквизитФормы(ЭлементДокумента, "Объект");
КонецПроцедуры

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

где закралась ошибка?

fairei

текст процедур:
&НаКлиенте
Процедура ПрикрепитьСкан(Команда)
   Перем ВыбранноеИмя;
   Перем АдресВременногоХранилища;
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Выбрать();
   ВыбранноеИмя = Диалог.ПолноеИмяФайла;
   Если ПоместитьФайл(АдресВременногоХранилища, ВыбранноеИмя, ВыбранноеИмя, ЛОЖЬ, УникальныйИдентификатор) Тогда
      НовыйСкан = Объект.СканыДокументов.Добавить();
      НовыйСкан.СодержаниеФайла = ВыбранноеИмя;
      ПоместитьВБД(АдресВременногоХранилища, НовыйСкан.НомерСтроки-1);
   КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ПоместитьВБД(АдресВременногоХранилища, ИндексСтроки)
   ЭлементДокумента = РеквизитФормыВЗначение("Объект");
   ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
   ЭлементДокумента.СканыДокументов[ИндексСтроки].СканДокументаХранилище = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
   ФайлПутьНаДиске = Новый Файл(ЭлементДокумента.СканыДокументов[ИндексСтроки].СодержаниеФайла);
   ЭлементДокумента.СканыДокументов[ИндексСтроки].СодержаниеФайла = ФайлПутьНаДиске.Имя;
   ЭлементДокумента.Записать();
   Модифицированность = Ложь;
   УдалитьИзВременногоХранилища(АдресВременногоХранилища);
   ЗначениеВРеквизитФормы(ЭлементДокумента, "Объект");
КонецПроцедуры

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

fairei

ЭлементДокумента.СканыДокументов[ИндексСтроки].СодержаниеФайла = ФайлПутьНаДиске.Имя;
   ЭлементДокумента.Записать();
   Модифицированность = Ложь;
   УдалитьИзВременногоХранилища(АдресВременногоХранилища);
   ЗначениеВРеквизитФормы(ЭлементДокумента, "Объект");
КонецПроцедуры

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

dello

Аналогичная ошибка. Возникает только у одного пользователя. Стала возникать после обновления платформы.
Почистили Кэш, переустановили 1С. Заново перепрописали базу в списке баз.
Прикрепляем файл к документу, сохраняем. Пробуем открыть - ошибка. Захожу под этим пользователем со своего компа, этот же файл прикрепляю, нормально открывается. Что еще можно сделать?

Yura063

Ну, может стоить проверить доступ к этой папке пользователю от которого вылетает ошибка?
Помогли, отблагодари!

dello

Тоже думал над этим вариантом. Но загружается файл с рабочего стола в базу (пробовали и jpg, и pdf прикреплять), а при открытии из хранилища помещается в темп и оттуда открывается.
Помещенный в базу файл (тем пользователем) не открывается ни у кого. Как будто он помещает в хранилище и при сохранении файл становится "битым".

Yura063

файлы загружаются C:\Users\имя_пользователя\AppData\Roaming\1C\Файлы\конфиг\пользователь
поэтому другие не могут обратится к файлам! Как вариант поменять путь к хранению файлов на папку с общим доступам. я могу и ошибаться! Можете проверить нахождение файлов справочнике файлы!
Помогли, отблагодари!

dello

Файлы хранятся в базе в хранилище. При открытии прикрепленного, скажем, к документу файла, он из хранилища помещается в LocalTemp папку и оттуда открывается. Опять же проблема только с 1-2 юзерами, у остальных в такой ситуации всё норм. Где бы может еще что-то почистить, переустановить у него?
Вот мысль еще есть, пользователь заходит в базу через аутентификацию винды, может здесь что-то?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск