kostya77 @ Сегодня, 9:16
,
Такое реализовано у нас для договоров через обработку прикрепленные файлы. Создан каталог для хранения файлов. Выбераем файл
//1 строка - тип
//2 строка - длина
//3 строка - точность
//4 строка - ИД вида объекта
//5 строка - флаг неотр. (?)
//6 строка - флаг разделения триад (?)
//7 строка - ИД объекта
Функция ПолучитьИДобъекта(Объект)
Перем Стр;
Стр=ЗначениеВСтрокуВнутр(Объект);
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.ИзСтрокиСРазделителями(Сред(Стр,2,СтрДлина(Стр)-2));
Для Сч=1 По 7 Цикл
Если (Сч=4) или (Сч=7) Тогда
ДесИД=СЗ.ПолучитьЗначение(Сч);
СЗ.УстановитьЗначение(Сч,_IdToStr(ДесИД));
КонецЕсли;
КонецЦикла;
Возврат СЗ;
КонецФункции
//*******************************************
Процедура СоздатьКаталогОбъекта()
СЗ=ПолучитьИДобъекта(Объект);
//Проверим, существует ли каталог для прикрепляемых файлов
КаталогФайлов=КаталогИБ()+"Files\";
// "1MZ" - док.Договор
Если СокрЛП(СЗ.ПолучитьЗначение(4)) = "1MZ" Тогда
КаталогФайлов=КаталогИБ()+"Files\";
КонецЕсли;
Если ФС.СуществуетФайл(КаталогФайлов)=0 Тогда //Если каталога нет,
ФС.СоздатьКаталог(КаталогФайлов); //то создадим его.
КонецЕсли;
//Проверим, существует ли каталог для записи файлов объектов данного типа
КаталогТипаОбъекта=КаталогФайлов+СокрЛП(СЗ.ПолучитьЗначение(1))+"\";
Если ФС.СуществуетФайл(КаталогТипаОбъекта)=0 Тогда //Если каталога нет,
ФС.СоздатьКаталог(КаталогТипаОбъекта); //то создадим его.
КонецЕсли;
//Проверим, существует ли каталог для записи файлов объектов данного вида
КаталогВидаОбъекта=КаталогТипаОбъекта+СокрЛП(СЗ.ПолучитьЗначение(4))+"\";
Если ФС.СуществуетФайл(КаталогВидаОбъекта)=0 Тогда //Если каталога нет,
ФС.СоздатьКаталог(КаталогВидаОбъекта); //то создадим его.
КонецЕсли;
//Проверим, существует ли каталог для записи файлов этого объекта
КаталогОбъекта=КаталогВидаОбъекта+СокрЛП(СЗ.ПолучитьЗначение(7))+"\";
Если ФС.СуществуетФайл(КаталогОбъекта)=0 Тогда //Если каталога нет,
ФС.СоздатьКаталог(КаталогОбъекта); //то создадим его.
КонецЕсли;
КонецПроцедуры
//*********************************************
Процедура ВыбратьФайл()
ТекКат="";
ИмяФайла="";
ИмяФайла1="";
Если ФС.ВыбратьФайл(0,ИмяФайла,ТекКат,"Выберите файл:",,,120)=1 Тогда
Если ФС.СуществуетФайл(КаталогОбъекта)=0 Тогда
СоздатьКаталогОбъекта();
КонецЕсли;
//Приведём длину имени файла в соответствие...
МаксДлИмениФайла=120;
ПозРасш=НайтиПослВх(ИмяФайла,".");
РасшФайла=Прав(ИмяФайла,СтрДлина(ИмяФайла)-ПозРасш);
НазвФайла=Лев(ИмяФайла,Мин(ПозРасш-1,МаксДлИмениФайла-СтрДлина(РасшФайла)-1));
ИмяФайла1=НазвФайла+"."+РасшФайла;
//Проверим, есть ли такой файл в папке...
Если ФС.СуществуетФайл(КаталогОбъекта+ИмяФайла)=1 Тогда //Проверим наличие файла с таким же именем в каталоге приёмнике
Если Не(Вопрос("Файл с именем "+ИмяФайла+"
|в каталоге "+КаталогОбъекта+" уже существует!
|Перезаписать файл "+ИмяФайла+"?","Да+Нет+Отмена",30)="Да") Тогда
Возврат;
КонецЕсли;
КонецЕсли;
Если ФС.СуществуетФайл(КаталогОбъекта+"files.vtf")=0 Тогда
СоздатьКаталогОбъекта();
КонецЕсли;
//Копируем файл в папку...
ФС.КопироватьФайл(ТекКат+ИмяФайла,КаталогОбъекта+ИмяФайла1,0);
Иначе
Возврат;
КонецЕсли;
КонецПроцедуры
Есль такой вариант (но я не проверял):
Добавь в док реквизит текстовый и кнопку на форму для выбора файла, при выборе файла в реквизит попадает путь + имя файла , а на кнопку открытия вешай :
ЗапуститьПриложение(Путь+ИмяФайла);
Сообщение отредактировал denis84 - 21.03.23, 9:33