Имя: Пароль:
1C
1С v8
Открыть wold'овский документ из макета
0 Karambol
 
01.11.12
18:44
Задумка такая - в обработку добавляю макет - Activ document с wold'овским файлом, на форму добавляю кнопку, при нажатии на которую хочу открывать этот файл из макета. Подскажите, что написать в процедуре(форма управляемая)?
1 Wobland
 
01.11.12
18:46
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
   НЗ=РегистрыСведений.ФайлыЗаданий.СоздатьНаборЗаписей();
   НЗ.Отбор.Задание.Установить(Объект.Ссылка);
   НЗ.Прочитать();
   Если НЗ.Количество() Тогда
       Данные=НЗ[0].Файл.Получить();
       РасширениеФайла=НЗ[0].Расширение;
   Иначе
       Данные=Неопределено;
       Расширение="";
   КонецЕсли;
   Если Данные<>Неопределено Тогда
       АдресФайла=ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);
   КонецЕсли;        
КонецПроцедуры

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

&НаКлиенте
Процедура Загрузить(Команда)
   Диалог=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.МножественныйВыбор=Ложь;
   Диалог.Фильтр="Документы Word|*.doc|Все файлы|*.*";
   Если Диалог.Выбрать() Тогда
       АдресФайла=ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Диалог.ПолноеИмяФайла), УникальныйИдентификатор);
       Ф=Новый Файл(Диалог.ПолноеИмяФайла);
       РасширениеФайла=Сред(Ф.Расширение, 2);
       Модифицированность=Истина;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Показать(Команда)
   #Если ВебКлиент Тогда
       Предупреждение("Не доделано, не додумано");
   #Иначе
       Если НЕ ЭтоАдресВременногоХранилища(АдресФайла) Тогда
           Возврат;
       КонецЕсли;
       ВременноеИмя=ПолучитьИмяВременногоФайла(РасширениеФайла);
       ПолучитьФайл(АдресФайла, ВременноеИмя, Ложь);
       ЗапуститьПриложение(ВременноеИмя);
   #КонецЕсли
КонецПроцедуры
2 Wobland
 
01.11.12
18:46
+(1) может глючить. а может и нет ;)
2 + 2 = 3.9999999999999999999999999999999...