Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Подскажите, как можно организовать хранение фалов в базе.          
kostya77 Подменю пользователя
сообщение 21.03.23, 9:16
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 125
Спасибо сказали: 5 раз
Рейтинг: 4

Добрый день. Подскажите, как можно организовать хранение фалов в базе. например подписаный договор в справочнике Контрагентов?

Сообщение отредактировал Vofka - 21.03.23, 10:25

sava1 Подменю пользователя
сообщение 21.03.23, 9:26
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

или в каталогах - с привязкой файла
или на СКЛ - организовать хранилище двоичных данных, а ссылку в справочник

denis84 Подменю пользователя
сообщение 21.03.23, 9:30
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 430
Из: Украина
Спасибо сказали: 137 раз
Рейтинг: 138.5

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

Спасибо сказали: kostya77,

kostya77 Подменю пользователя
сообщение 21.03.23, 9:52
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 125
Спасибо сказали: 5 раз
Рейтинг: 4

denis84 @ Сегодня, 9:30 * ,
Спасибо. буду пробовать

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 10:38
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!