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