8.х Запись файла в реквизит справочника

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Vitus Bering, 25 дек 2008.

  1. TopicStarter Overlay
    Vitus Bering
    Offline

    Vitus Bering

    Регистрация:
    25 дек 2008
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    С наступающим всех!
    Подскажите, как записать файл в реквизит справочника?
    проблема следующая:
    Разбираюсь с 8.2 Архив (Управл.приложение). там можно создать документ (служебку) который является реквизитом справочника из шаблона (.doc), который так же лежит в справочнике, но там просто копируется вордовский документ шаблона в новый файл и пишется в реквизит нового элемента справочника. Мне нужно чтобы при копировании в этот файла в текст вместо, к примеру {Автор} вставал автор из документа (элемента справочника). Сделал через сохранение из временного хранилища в файл на диск, com-соединение, замена нужного в вордовском файле, запись новой версии на диск и тут проблема встала как его обратно вставить в реквизит? (Процедура выполняется на сервере)

    вот пример:
    Код:
    //++
    //ВремПуть = КаталогВременныхФайлов();
    ВремПуть = "c:�";
    
    ФайлШаблона = АдресВременногоХранилищаФайла.Получить();
    ФайлШаблона.Записать(ВремПуть+"FromPattern.tmp");
    
    Word = Новый COMОбъект("Word.Application");
    Word.Documents.Add(ВремПуть+"FromPattern.tmp");
    
    СтароеЗначение    =    "{Автор}";
    НовоеЗначение   =    "АффтАр!!!";
    
    Попытка
    Если ЗначениеЗаполнено(НовоеЗначение)  Тогда   
    Если ТипЗнч(НовоеЗначение)=Тип("Строка") Тогда
    Если СтрДлина(НовоеЗначение)>=250 Тогда
    Н=Цел(СтрДлина(НовоеЗначение)/250);               
    ДлинаСтроки=НовоеЗначение;
    Если Word.SELECTION.Find.Execute(СтароеЗначение,0,-1,,,,-1,,,"",)=-1    Тогда                    
    Word.SELECTION.Select();
    Word.SELECTION.Cut();
    Для К=0 По Н Цикл
    Word.SELECTION.Paste();                           
    НовоеЗначение=СокрЛП(Сред(ДлинаСтроки,К*250+1,250));
    Word.ActiveDocument.Content.Find.Execute(СтароеЗначение,1,,,,,,,,НовоеЗначение,2);    
    КонецЦикла; 
    КонецЕсли;
    Иначе
    Word.ActiveDocument.Content.Find.Execute(СтароеЗначение,1,,,,,,,,НовоеЗначение,2);                 
    Конецесли;
    Иначе
    Word.ActiveDocument.Content.Find.Execute(СтароеЗначение,1,,,,,,,,НовоеЗначение,2);    
    КонецЕсли;
    Иначе
    Word.ActiveDocument.Content.Find.Execute(СтароеЗначение,1,,,,,,,,"",2);    
    Конецесли;
    Исключение
    Сообщить("Ошибка при замене значения в Word: "+ОписаниеОшибки(),СтатусСообщения.Важное);
    КонецПопытки;
    
    Word.Visible=0;
    Word.ActiveDocument.saveas(ВремПуть+"InDocument.doc");
    Word.Application.Quit();
    
    ВыбранноеИмя = ВремПуть+"InDocument.doc";
    АдресВременногоХранилищаФайла1 = "";
    
    //ПоместитьФайл(АдресВременногоХранилищаФайла1, ВыбранноеИмя, ВыбранноеИмя, Ложь, ИдФормы);
    ПоместитьВоВременноеХранилище(ВыбранноеИмя, АдресВременногоХранилищаФайла1);
    
    Версия.Файл = АдресВременногоХранилищаФайла1;
    
    
    
    
    *****
    Пробовал через "ПоместитьФайл" - пишет, что не находит процедуру... а через "ПоместитьВоВременноеХранилище" работает, но файл пустым сохраняется

    :unsure:
  2. TopicStarter Overlay
    Vitus Bering
    Offline

    Vitus Bering

    Регистрация:
    25 дек 2008
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    1
    Ребята, спасибо всем! Разобрался уже... все оказалось проще чем думал:

    Код:
    ВыбранноеИмя = ВремПуть+"InDocument.doc";
    
    НовыйФайл =  Новый ДвоичныеДанные(ВыбранноеИмя);
    ХранилищеНовогоФайла = Новый ХранилищеЗначения(НовыйФайл);
    
    Версия.Файл = ХранилищеНовогоФайла;
    
    

Поделиться этой страницей