Имя: Пароль:
1C
1С v8
Записать файл в реквизит
0 kible
 
30.03.17
10:50
Не получается записать файл в реквизит справочника.

В форме списка команда "Создать"

АдресФайла=ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла));
ПараметрыФормы = Новый Структура("АдресФайла,ИмяФайла",АдресФайла,ИмяФайла);
ОткрытьФорму("Справочник.тр_ШаблоныПечатныхФорм.Форма.ФормаЭлемента",ПараметрыФормы);

При создании на сервере

    Если Объект.Ссылка.Пустая() Тогда
        
        Если Параметры.Свойство("АдресФайла") Тогда
                 ШаблонОбъект = РеквизитФормыВЗначение("Объект");
            ШаблонОбъект.Шаблон = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Параметры.АдресФайла));
            ЗначениеВРеквизитФормы(ШаблонОбъект,"Объект");
        КонецЕсли;
        
        Если Параметры.Свойство("ИмяФайла") Тогда
             Объект.Наименование = Параметры.ИмяФайла;
        КонецЕсли;
        
    КонецЕсли;

Потом хочу получить файл, но возвращается "неопределено".

&НаСервере
Функция ПолучитьФайл()
    ШаблонОбъект = РеквизитФормыВЗначение("Объект");
    Файл = ШаблонОбъект.Шаблон.Получить();
    Возврат Файл;
КонецФункции
1 Timon1405
 
30.03.17
10:56
В БСП есть присоединенные файлы, может быть посмотреть как там сделано?
2 igork1966
 
30.03.17
11:04
Глобальный контекст (Global context)
ПоместитьВоВременноеХранилище (PutToTempStorage)
Синтаксис:

ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
Параметры:

<Данные> (обязательный)

Тип: Произвольный.
Данные, которые необходимо поместить во временное хранилище.
<Адрес> (необязательный)

Тип: УникальныйИдентификатор; Строка.
Уникальный идентификатор формы, во временное хранилище которой надо поместить данные и вернуть новый адрес. Или адрес во временном хранилище, по которому надо поместить данные. Адрес должен быть получен ранее с помощью данного метода.
В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы.
Если передан УникальныйИдентификатор, не являющийся уникальным идентификатором формы, то значение будет удалено после завершения сеанса пользователя.
______Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля____, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
3 kible
 
30.03.17
11:43
Добавил "УникальныйИдентификатор", но не помогло.

Заработало только после записи объекта в базу.

    Если Параметры.Свойство("АдресФайла") Тогда
         ШаблонОбъект = РеквизитФормыВЗначение("Объект");
        ШаблонОбъект.Шаблон = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Параметры.АдресФайла));
        ШаблонОбъект.Записать();
        ЗначениеВРеквизитФормы(ШаблонОбъект,"Объект");
    КонецЕсли;