Имя: Пароль:
1C
 
Заполнение параметров в прикрепленном файле doc
0 Wefast
 
27.11.23
20:19
ЗУП 3.1
Исходящее электронное письмо. Раньше работал через ком объект и был Word, сейчас нет ворда, и скоро будет переезд на Linux

Прикреплен файл .docx сформированный не в WORD
Указал область и параметр
{v8 Область.Документ}
{v8 Параметр1}
{/v8 Область.Документ}

Обработка создает исходящее письмо, крепит к нему этот "шаблон".

Далее мне нужно его заполнить.

Получаю данный файл, определяю область:

        ПутьИИмяШаблона = ПолучитьИмяВременногоФайла();
        ДД = ПолучитьИзВременногоХранилища(ОписаниеФайла.СсылкаНаДвоичныеДанныеФайла);
        ДД.Записать(ПутьИИмяШаблона);
        Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(ДД, Неопределено);
        ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(Неопределено, Неопределено, Макет);
        ОписаниеОбластей = Новый Структура;
        УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Документ","Общая");        
        Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["Документ"]);

На этом этапе если я все правильно понимаю я не работаю с самими файлом.

Заполняю параметры:

        УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, Параметры);
        
Получаю готовый файл:

        АдресХранилищаПечатнойФормы = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма);

Адрес имеет такой вид: "'e1cib\tempstorage\85d78ceb-7cd7....."

Далее мне нужно подменить тот файл что я открывал:

        ДД = Новый ДвоичныеДанные(АдресХранилищаПечатнойФормы);
        ПоместитьВоВременноеХранилище(ДД, ОписаниеФайла.СсылкаНаДвоичныеДанныеФайла);

И написал на "всякий случай"

        ОписаниеФайла.СсылкаНаДвоичныеДанныеФайла = АдресХранилищаПечатнойФормы;



Собственно вопрос правильно ли я все делаю.

И ошибка возникает у меня такая:

Ошибка при вызове конструктора (ДвоичныеДанные)
....
ДД = Новый ДвоичныеДанные(АдресХранилищаПечатнойФормы);
....

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
по причине:
Каталог не обнаружен 'e1cib\tempstorage\85d78ceb...'
[ОшибкаДоступаКЛокальномуФайлу]
по причине:

по причине:
Каталог не обнаружен 'e1cib\tempstorage\85d78ceb...'


Ошибка из-за того что я пишу что то не то, и\или из-за того что у меня есть права на чтение, но не на запись?
Но как тогда изначально этот файл по этому пути туда попал.
1 Шурик71
 
27.11.23
20:52
(0)  >>  ДД = Новый ДвоичныеДанные(АдресХранилищаПечатнойФормы);

Может все же

ДД = ПолучитьИзВременногоХранилища(АдресХранилищаПечатнойФормы); ?
Там в хранилище должны быть двоичные данные в этот момент..
2 Wefast
 
28.11.23
07:39
(1) поменял эту строчку, ошибки нет, но и файл не заполненный в итоге
3 Шурик71
 
28.11.23
16:04
(2) В твоем сообщении нет данных о том как ты получаешь шаблон и записываешь туда итоговый файл.

Если я правильно понял твой текст - то ДО твоего кода уже созданы письма и туда прикреплены шаблоны. (см. "Обработка создает исходящее письмо, крепит к нему этот "шаблон""). Дальше ты проходишь по этим шаблонам и формируешь на базе шаблонов итоговый файл, который тебе надо поместить в письмо.

Ни исходного чтения шаблона, ни записи в письмо в твоем тексте нет...

Если надо что-то иное (на самом деле, я не знаю, зачем надо сначала делать письма с присоединенными шаблонами, а потом подменять вложения) - то в исходном сообщении про это не написано. В исходном сообщении - только про временное хранилище; а это уж точно не данные в почтовом файле. Что дальше должно происходить - непонятно.
4 Шурик71
 
28.11.23
16:10
Если же ВДРУГ это промежуточный кусок (например, есть код, который успешно создает письмо с шаблоном и в некий момент во временном хранилище уже находится этот шаблон, который ТОЧНО потом запишется в письмо, и его надо подменить) - то как минимум

     ПоместитьВоВременноеХранилище(ДД, ОписаниеФайла.СсылкаНаДвоичныеДанныеФайла);

и
     ОписаниеФайла.СсылкаНаДвоичныеДанныеФайла = АдресХранилищаПечатнойФормы;

несколько противоречат друг другу.. Вторая часть - лишняя.
Но все равно надо смотреть куда дальше идут данные. По написанному коду - по состоянию на

ДД = ПолучитьИзВременногоХранилища(АдресХранилищаПечатнойФормы);

там уже должны быть двоичные данные сформированного макета, и надо разбирать, что с ними происходит дальше.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс