Имя: Пароль:
1C
1С v8
Как прикрепить файл к документу в упр.формах.
0 oleg_prg
 
11.02.14
13:59
Уважаемые форумчане, добрый день.
Задача - в документе создать функционал позволяющий сохранять в документе файлы произвольного формата с диск ПК. Например word, excel, чертежи, аудиофайлы и т.д.
Для этих целей в документе создал ТЧ, с реквизитом Файл тип ХранилищеЗначений

Вот мой код

//**********************************************************
&НаСервере
Процедура ПолучитьДанныеХранилищаЗначений(Парам, НомерСтроки)
    СтрокаПрикрепленныеФайлы = Объект.ПрикрепленныеФайлы[НомерСтроки-1];
    СтрокаПрикрепленныеФайлы.Файл = Новый ХранилищеЗначения( Парам, новый СжатиеДанных(9));
КонецПроцедуры
//**********************************************************
&НаКлиенте
Процедура ПрикрепленныеФайлыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
    
    Если НЕ НоваяСтрока Тогда
        Возврат;
    КонецЕсли;
    
    ДиалогФыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    ДиалогФыбораФайла.Фильтр = "Все файлы (*.*)|*.*";
    ДиалогФыбораФайла.Заголовок = "Выберите файл";
    ДиалогФыбораФайла.ПредварительныйПросмотр = Истина;
    ДиалогФыбораФайла.ИндексФильтра = 0;
    Если ДиалогФыбораФайла.Выбрать() Тогда
        Элемент.ТекущиеДанные.ИмяФайла = ДиалогФыбораФайла.ПолноеИмяФайла;
        ПолучитьДанныеХранилищаЗначений(новый ДвоичныеДанные(ДиалогФыбораФайла.ПолноеИмяФайла), Элемент.ТекущиеДанные.НомерСтроки);
    КонецЕсли;
    
КонецПроцедуры

Проблема в ошибке
{Документ.ОбращениеКлиента.Форма.ФормаДокумента.Форма(597)}: Поле объекта не обнаружено (Файл)
    СтрокаПрикрепленныеФайлы.Файл = Новый ХранилищеЗначения( Парам, новый СжатиеДанных(9));

Реквизит ТЧ есть!, но как до него достучаться?
Заранее спасибо!
1 zak555
 
11.02.14
14:00
посмотри, как сделано в типовых
2 Wobland
 
11.02.14
14:00
не надо порнофильмы в объектах хранить
3 ДенисЧ
 
11.02.14
14:03
Отладчик что говорит?
4 oleg_prg
 
11.02.14
14:03
http://yadi.sk/d/2o-krpPlHgvo8 вот ошибка, (2) у каждого свои данные в 1С :)
5 AaNnDdRrEeYy
 
11.02.14
14:05
Надо через временно хранилище данные на сервер гнать.
кури ПОместитьВоВременноеХранилище()
6 oleg_prg
 
11.02.14
14:07
(5) а смысл, если я на сервере не вижу реквизита СтрокаПрикрепленныеФайлы.Файл
Гнать данные надо если ошибка при переброске данных из функции в функцию/процедуру, ну вы понимаете, а здесь другое!
7 Wobland
 
11.02.14
14:08
&НаКлиенте
Процедура Загрузить(Команда)
    ВыбранноеИмя="";
    Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    Диалог.Фильтр=ПолучитьФильтрFB2();
    Если Диалог.Выбрать() Тогда
        ПоместитьФайл(Адрес, Диалог.ПолноеИмяФайла, ВыбранноеИмя, Ложь, УникальныйИдентификатор);
        Модифицированность=Истина;
    КонецЕсли;
    ПрочитатьСвойстваНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    Если ЭтоАдресВременногоХранилища(Адрес) Тогда
        ХЗ=Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Адрес));
        Запись=РегистрыСведений.Файлы.СоздатьМенеджерЗаписи();
        Запись.Книга=Объект.Ссылка;
        Запись.Файл=ХЗ;
        Запись.Записать();
    КонецЕсли;
КонецПроцедуры
8 AaNnDdRrEeYy
 
11.02.14
14:13
(6)зато там есть "ИсходныйНомерСтроки"! которого я не вижу в дереве метаданных.
9 AaNnDdRrEeYy
 
11.02.14
14:15
и вообще не храни в документе файлы.
когда будешь писать ПолучитьОбъект() для ссылки такого документа в оперативку весь этот файл считаватся будет.
10 GROOVY
 
11.02.14
14:17
11 oleg_prg
 
11.02.14
14:28
(7) Спасибо! ;)
(9) Не хранить файлы в доке - согласен! Точно!
(10) Спасибо!
Всем, всем, всем спасибо ОГРОМНОЕ, выручили, буду разбираться :)