Имя: Пароль:
1C
1С v8
1C (клиент-сервер) и Word
,
0 akhmadey
 
06.08.15
09:56
Платформа 8.3.6.2014. Конфигурация УТ 11.1.10.131. У документа есть печатная форма, макет которой имеет тип Active document (файл Word). Поскольку это печатная форма, то все телодвижения происходят в модуле менеджера, НО получить такой макет мы можем только на клиенте.

Макет = ПолучитьМакет("Макет");
Word = Макет.Получить();

На второй строке печать вылетает с ошибкой. Как это обойти, учитывая, что печатная форма должна формироваться по кнопке Печать.
1 ДенисЧ
 
06.08.15
10:01
Я не стану угадывать ошибку с трёх попыток!
2 akhmadey
 
06.08.15
10:05
(1) Ошибка при вызове метода контекста (Получить). Из-за того, что вызов метода происходит на сервере. Но как в модуль менеджера воткнуть клиентскую процедуру - не представляю.
3 Ник080808
 
06.08.15
10:09
(2) через хранилище значений, не?
4 Остап Сулейманович
 
06.08.15
10:09
(0) "Поскольку это печатная форма, то все телодвижения происходят в модуле менеджера"
Очень спорное утверждение. Никто не мешает заполнить еЯ на клиенте. Только неустановленный MSO.
5 akhmadey
 
06.08.15
10:13
(3) С этого места по-подробнее, плз
6 vhl
 
06.08.15
10:30
(0) ты хочешь сказать в типовой конфе не работает печатные формы?
7 akhmadey
 
06.08.15
10:31
(6) Если макет - табличный документ, то конечно все ровно получается, а тут совсем другой механизм.
8 vhl
 
06.08.15
10:36
(7) где "тут"? Ты внешнюю печатную форму цепляешь?
9 akhmadey
 
06.08.15
10:38
(8) Нет. Все в модуле менеджера документа, поскольку он самописный.
10 gigi789
 
06.08.15
10:39
(4) очень спорно печатать такие вот доки массово
11 Ник080808
 
06.08.15
10:49
(5) хранить макет не активдокументом, а через двоичные данные и записывать файл на клиенте. Не?
12 vhl
 
06.08.15
10:52
(9) сделай внешним - там процедура печати вызывается из формы, а форма - это клиент. И конфу лопатить не надо
13 akhmadey
 
06.08.15
10:53
(11) Я пробовал актив документ сохранять на диске, а потом цеплять как ком-объект, но тогда не работает вот это Замена = Документ.Content.Find
14 akhmadey
 
06.08.15
11:47
(12) Тоже не подойдет. Если именно как печатную форму делать, то форма не используется, а вызов процедуры печати непосредственно из модуля обработки. Там же и будет вылетать.
15 akhmadey
 
07.08.15
06:42
up
16 akhmadey
 
07.08.15
13:54
Разобрался. Если есть необходимость формировать печатные формы в Word или Open Office по фен-шую, то есть по кнопке Печать, как и обычные формы, то нужно в модуле менеджера в процедуре ДобавитьКомандыПечати указать, что форма начинает формироваться не в менеджере, а в общем модуле, который работает на клиенте. Например,

КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "ОбщийМодульКлиент.СформироватьПечатнуюФормуMSWord";
КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "ФормаMSWord";
КомандаПечати.Представление = "Форма (MS Word)";

А дальше можно у же обращаться к процедурам и функциям менеджера для, например, получения данных.
Программист всегда исправляет последнюю ошибку.