1. В табличную часть документация добавить реквизиты
- Файл (ХранилищеЗначения)
- ИмяФайла (неограничен)
- РасширениеФайла
2. На форму добавить команды
- ОткрытьФайл
- ПосмотретьФайл
3. На форму добавить реквизиты
- ИмяФайлаДиалог
- ПутьКФайлу
- РасширениеИзДиалога
4. В модуль формы написать код
//документация: схемы, чертежи заказа, примеры готовых изделий от клиента (имеется возможность их сохранения в базе данных)
//Документация может быть любого типа, включая различные документы.
//Пользователь может открыть загруженную документацию и посмотреть содержание документа.
//Если для просмотра документа на компьютере пользователя нет необходимого программного обеспечения, тогда должно отобразиться сообщение об этом.
&НаКлиенте
Процедура ОткрытьФайл(Команда)
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.МножественныйВыбор = Ложь;
Если Диалог.Выбрать() Тогда
ПутьКФайлу = Диалог.ПолноеИмяФайла;
ПозицияПоследнейТочкиВПолномИмениФайла = СтрНайти(ПутьКФайлу, ".", НаправлениеПоиска.СКонца,,1);
ПозицияПоследнегоСловаСлева = СтрНайти(ПутьКФайлу,"\", НаправлениеПоиска.СКонца,,1);
РасширениеИзДиалога = Прав(ПутьКФайлу,СтрДлина(ПутьКФайлу) - ПозицияПоследнейТочкиВПолномИмениФайла);
ИмяФайлаДиалог = Сред(ПутьКФайлу, ПозицияПоследнегоСловаСлева + 1, ПозицияПоследнейТочкиВПолномИмениФайла - ПозицияПоследнегоСловаСлева - 1);
КонецЕсли;
Если Не ПутьКФайлу = "" Тогда
ОткрытьФайлНаСервере();
Элементы.ПосмотретьФайл.Доступность = Истина;
Иначе
Сообщить("Файл не выбран");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОткрытьФайлНаСервере()
ДокументОбъект = РеквизитФормыВЗначение("Объект"); //заись всего объекта конфигурации в переменную, чтобы обратиться потом к реквизиту с типом ХранилищеЗначения
ДанныеФайла = Новый ДвоичныеДанные(ПутьКФайлу); //запись в переменную данных из реквизита ПутьКФайлу прибразованные в двоичные
КоличествоСтрок = ДокументОбъект.Документация.Количество(); // колво строк в табличной части, чтобы понимать к какой обращаться в те кущий момент
ДокументОбъект.Документация.Добавить();
ДокументОбъект.Документация[КоличествоСтрок].Файл = Новый ХранилищеЗначения(ДанныеФайла, Новый СжатиеДанных(9));
ДокументОбъект.Документация[КоличествоСтрок].ИмяФайла = ИмяФайлаДиалог;
ДокументОбъект.Документация[КоличествоСтрок].РасширениеФайла = РасширениеИзДиалога;
ДокументОбъект.Записать();
ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");
КонецПроцедуры
&НаКлиенте
Процедура ПосмотретьФайл(Команда)
НомерТекущейСтроки = Элементы.Документация.ТекущиеДанные.НомерСтроки;
ПросмотретьФайлНаСервере(НомерТекущейСтроки);
КонецПроцедуры
&НаСервере
Процедура ПросмотретьФайлНаСервере(НомерСтроки)
ДокументОбъект = РеквизитФормыВЗначение("Объект");
Путь = ПолучитьИмяВременногоФайла(ДокументОбъект.Документация[НомерСтроки-1].РасширениеФайла);
Данные = ДокументОбъект.Документация[НомерСтроки-1].Файл.Получить();
Данные.Записать(Путь);
ЗапуститьПриложение(Путь);
ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПриОткрытииНаСервере();
Если Объект.Документация.Количество() > 0 Тогда
Элементы.ПосмотретьФайл.Доступность = Истина;
Иначе
Элементы.ПосмотретьФайл.Доступность = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриОткрытииНаСервере()
КонецПроцедуры
5. Подключить процедуры к коду
6. Готово.