Книга знаний

1С:Предприятие

Прикрепление каталогов к документам 1С 7.7

Часто требуется прикрепить к документам 1С каталог с документами Word, PDF и т.д. Приведенный ниже фрагмент кода позволяет реализовать прикрепление файлов.Автор статьи: romix | Редакторы:
Последняя редакция №2 от 29.04.07 | История
URL: http://kb.mista.ru/article.php?id=408

Ключевые слова: прикрепить, файл, документ, каталог


Поместите на форму документа кнопку "Файлы" с формулой ф_Файлы();
Вставьте приведенный ниже код в глобальный модуль

///////////////////////////////////////////////////////////////////////
//24-символьное представление объекта
Функция ЗначениеВСтрокуВнутр24(прм_об) Экспорт
    Если ПустоеЗначение(прм_об)=1 Тогда
        Возврат "";
    КонецЕсли;
    стр=СокрЛП(ЗначениеВСтрокуВнутр(прм_об));
    стр=Сред(стр,2,СтрДлина(стр)-2); //убираем {}
    сп=СоздатьОбъект("СписокЗначений");
    сп.ИзСтрокиСРазделителями(стр);
    Если сп.РазмерСписка()<>7 Тогда
        Сообщить("Неправильный размер списка "+стр); а=1/0;
    КонецЕсли;
    
    тип=сп.ПолучитьЗначение(1);
    вид=сп.ПолучитьЗначение(4);
    объ=сп.ПолучитьЗначение(7);
    Если СтрДлина(тип)<>1 Тогда
        Сообщить("Неправильный размер идентификатора типа, ожидается 1 *"+вид+"*"); а=1/0;
    КонецЕсли;
    
    Если вид="0" Тогда
        Если СтрДлина(объ)<>23 Тогда
            Сообщить("Неправильный размер идентификатора, ожидается 23 *"+объ+"*"); а=1/0;
        КонецЕсли;
        ид=сп.ПолучитьЗначение(1)+объ;
    Иначе
        Если СтрДлина(объ)<>13 Тогда
            Сообщить("Неправильный размер идентификатора, ожидается 13 *"+объ+"*"); а=1/0;
        КонецЕсли;
        вид=Прав("          "+вид,10); //дополняем пробелами слева

        Если СтрДлина(вид)<>10 Тогда
            Сообщить("Неправильный размер идентификатора вида, ожидается 10 *"+вид+"*"); а=1/0;
        КонецЕсли;
        ид=тип+вид+объ;
    КонецЕсли;
    стр=СтрЗаменить(ид, " ", "_");
    Возврат стр;
КонецФункции

///////////////////////////////////////////////////////////////////////
//объект из 24-символьного представления
Функция ЗначениеИзСтрокиВнутр24(прм_стр) Экспорт
    Если СтрДлина(прм_стр)<>24 Тогда
        Сообщить("Ожидается строка длиной 24"); а=1/0;
    КонецЕсли;
    сп=СоздатьОбъект("СписокЗначений");
    сп.ДобавитьЗначение(лев(прм_стр,1));
    сп.ДобавитьЗначение("0");
    сп.ДобавитьЗначение("0");
    сп.ДобавитьЗначение("0");
    сп.ДобавитьЗначение("0");
    сп.ДобавитьЗначение("0");
    стр=сред(прм_стр,2);
    стр=СтрЗаменить(стр, "_", " ");
    сп.ДобавитьЗначение(стр);
    стр="{"+сп.ВСтрокуСРазделителями()+"}";
    Возврат ЗначениеИзСтрокиВнутр(стр);
КонецФункции


А эту функцию - в форму документа:

///////////////////////////////////////////////////////////////////////
Процедура ф_Файлы()
//Записываем документ (у не записанного документа нет внутр. идентификатора)
    Если Выбран()=0 Тогда
        Записать();
    КонецЕсли;
//Получаем внутренний идентификатор документа
    стр=ЗначениеВСтрокуВнутр24(ТекущийДокумент());


//Создаем подкаталог в каталоге ИБ

    каталог=КаталогИБ()+"Файлы\";
    
    Если фс.СуществуетФайл(каталог)=0 Тогда
        фс.СоздатьКаталог(каталог);
    КонецЕсли;

//Создаем подкаталог для нашего документа:
    
    каталог=КаталогИБ()+"Файлы\"+стр;
    Если фс.СуществуетФайл(каталог)=0 Тогда
        фс.СоздатьКаталог(каталог);
    КонецЕсли;
    
//Открываем наш каталог 
    ЗапуститьПриложение(каталог);

КонецПроцедуры


Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика