пятница, 21 февраля 2014 г.

Хранилище значений и управляемая форма

Пример:

&НаКлиенте
Процедура ПутьКОбработкеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Укажите файл";
Диалог.Фильтр = "*.epf|*.epf|*.erf|*.erf|Все файлы|*.*";

Если Не Диалог.Выбрать() Тогда
Возврат;
КонецЕсли;

ВремФайл = Новый Файл(Диалог.ПолноеИмяФайла);

ПутьКОбработке = ВремФайл.ПолноеИмя;

АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПутьКОбработке));//АдресВоВременномХранилище - Реквизит формы

КонецПроцедуры


&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)

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

КонецПроцедуры

Или так:

Передаем на сервер адрес временного хранилища файла, а на сервере, записываем в ТЧ объекта "Версии" в реквизит Файл (Хранилище значений).
Обязательно сделать так: Об.Записать();    //- без этого данные из реквизита файл теряются

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