Имя: Пароль:
1C
1С v8
Заполнить макет Word в 1С 8.3
0 K1RSAN
 
31.03.26
12:38
Пытаюсь перенести из 8.2 (своя конфигурация) с минимальными усилиями формирование документа Word и заполнение из шаблона, добавленного в конфигурацию, как Макет типа Active Document
За основу берем конфигурацию CRM и дорабатываем.
База серверная

Смотрю в конфигурации берут за основу для работы с Word макет типа двоичные данные, с таким я не работал, надеюсь сделать как-то по старому.

Проблема сейчас в чем - если сделать

ДоговорОбъект=РеквизитФормыВЗначение("Объект");
Договор = ДоговорОбъект.ПолучитьМакет("Договор2025");    
КомОбъект = Договор.Получить();

То на 3-ей строке выдаёт ошибку.
Подозреваю, что проблема в том, что на сервере нет офиса, значит надо открывать ворд на клиенте (если делать так, как было в 8.2), но на клиенте не получается получить доступ к макету.
Думаю открыть на клиенте пустой созданный КомОбъект вордовского файла, как-то передать ему макет на сервере и дальше заполнять, но пока что-то не получается.

Не хочу делать как двоичные данные, так как макет порой приходится править, ещё к этому макету добавляется через механизм закладок второй макет приложения, который выбирается на основании тарифа. В итоге в один файл Word вставляются данные из двух макетов и ещё в каждом макете заполняются данные.

Можете подсказать, куда копать?
Или проще разобраться с двоичными данными и делать через встроенные механизмы конфигурации?
1 1cVandal
 
31.03.26
12:54
УправлениеПечатьюКлиент.ИнициализироватьМакетОфисногоДокумента(МакетСоглашения,"DOC", Неопределено);

ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму("DOC", Неопределено, Макет);

И да двоичныеданные, либо макет положить в расшаренную папку и получать не двоичные данные из макета внутреннего, а на лету брать этот шаблон заворачивать в двоичные данные и передавать в функции
2 kubik_live
 
31.03.26
13:24
&НаКлиенте
Вызываю из формы - для ручного ввода доп. параметров
У меня так работает:

Процедура Печать_ТрудовойДоговор(СтруктураДок)        

Word = Новый COMОбъект("Word.Application");
    Макет_ТрудовойДоговор = ПолучитьМакетСервер("ТрудовойДоговор"); //на сервере получаю макет из ДД
    ИмяФайла_ТД = ПолучитьИмяВременногоФайла("docx");
    Макет_ТрудовойДоговор.Записать(ИмяФайла_ТД);
    ДокументWord = Word.Documents.ADD(ИмяФайла_ТД);
    ДокументWord.Activate();  
...................................
3 Федя Тяпкин
 
31.03.26
13:25
(0) я вроде в конфигурации CRM (или нет...) видел добавленный разработчиками отраслевки механизм формирования ПФ на основе вордовского файла. Очень удобная вещь! Макеты печатных форм или как то так называлось. Нет такого?
4 K1RSAN
 
31.03.26
13:27
(2) Спасибо, попробую
5 Garykom
 
гуру
31.03.26
13:32
(3) Уже в БСП есть
Но работает местами не очень
6 K1RSAN
 
31.03.26
13:39
(1) Что-то такое видел. Посмотрю
7 K1RSAN
 
31.03.26
16:55
В итоге смирился и делаю встроенными в СРМ возможностями через двоичные данные. Просто это будет дико неудобно при необходимости изменить макет. Либо надо будет сделать так, чтобы макет можно было загружать в режиме предприятия
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан