Внешняя печатная форма в формате WORD на примере ЗУП 3, работает в файловом и клиент-серверном вариантах

14.10.16

Учетные задачи - Печатные формы

Пример внешней печатной формы для вывода отчета в MS WORD из конфигурации ЗУП 3, работает как в файловом, так и в клиент-серверном варианте работы 1С.

Скачать файлы

Наименование Файл Версия Размер
ПечатьЛистОзнакомленияВWord
.epf 20,48Kb
121
.epf 20,48Kb 121 Скачать

В обработке реализован пример печати в word из конфигурации ЗУП 3. Печатается макет "Лист ознакомления работников" из документа "Прием на работу". 

Макет реализован с помощью ActiveDocument, его можно редактировать непосредственно в конфигураторе с помощью интерфейса word.

Код сделан максимально простым, комментарии присутствуют.

Для работы отчета в клиент-серверном варианте работы, необходимо наличие установленного MS WORD на сервере 1С

Печатная форма

См. также

Обновление для КА 1.1, ЗУП 2.5, БУХ 2.0: НДС, ЕФС-1, Расчет страховых взносов, Мобилизация, Статистика, Электронные трудовые книжки, 2-НДФЛ, Регламентированная отчетность, Кадровый учет, Прослеживаемость импортных товаров

Зарплата Регламентированный учет и отчетность Кадровый учет Обновление 1С Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Налоговый учет Управленческий учет Акцизы ЕНВД ЕСН Земельный налог ИП, ПБОЮЛ, КФХ Налог на имущество Налог на прибыль НДС НДФЛ ФОМС, ЕФС Транспортный налог УСН ПСН (патентная система налогообложения) Платные (руб)

Обновления для конфигураций: КА 1.1; ЗУП 2.5; БУХ 2.0; КА 1.1 Комплексная автоматизация торговли алкогольной продукцией; КА 1.1 Комплексный учет сельскохозяйственного предприятия

19900 руб.

01.04.2020    140609    678    352    

232

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9205    9    8    

10

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7260    21    6    

39

Универсальная печать по шаблонам Word (Печать договоров из 1С БП 3, УНФ 1.6, ЗУП 3, УТ 11, КА 2, ERP 2, ДО 3)

Печатные формы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Научите вашу 1C печатать из 1С в файл Word (Например: трудовые договоры, договоры с контрагентами, спецификации, дополнительные соглашения, приказы, коммерческие предложения, акты, накладные, карточки партнера или любого справочника и многие другие). Универсальная печать предназначена для формирования печатных форм на основе шаблонов в формате Word из любой конфигурации 1С. С помощью данного инструмента можно самостоятельно заполнить шаблон реквизитами справочника или документа 1С и сформировать печатные формы на основании ссылки на любой объект.

5400 руб.

08.10.2019    42664    143    88    

134

SALE! 25%

УТ 11, КА 2, ERP 2: Настраиваемые под каждую организацию печать и подпись ответственных лиц в печатных формах (ТОРГ-12, Счёт-фактура, УПД, УКД, Заказ клиента, Акт сверки, М-15 и др.)

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Оперативный учет Управляемые формы 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Задайте для каждой организации свою печать и для каждого физического лица свою подпись. Выберите в документе печатную форму "... с печатью и подписью" - и автоматически сформируется табличный документ с печатью и подписями той организации и ответственных лиц, которые указаны в документе.

12000 9000 руб.

13.03.2018    56425    179    76    

112

Печатные формы КС-2 и КС-3 в "1С:Бухгалтерия 3.0"

Печатные формы Производство готовой продукции (работ, услуг) Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Бухгалтерия 3.0 Строительство Россия Бухгалтерский учет Платные (руб)

Откройте для себя заполнение КС-2 и КС-3 в "1С:Бухгалтерия 3.0". Вы получаете удобство, скорость и систему, чтобы заполнить, распечатать и сохранить формы КС-2 и КС-3 из документов "Оказание производственных услуг" или "Реализация товаров услуг". Вы можете заполнить дополнительную информацию о материалах из документов "Требование-накладная" и указать сведения, которые не предусмотрены типовой конфигурацией "1С:Бухгалтерия 3.0". Так же доступно множество настроек для формирования КС-2 и КС-3.

3240 руб.

13.02.2019    87980    388    44    

371
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DMak 13 15.11.16 16:31 Сейчас в теме
{ВнешняяОбработка.ЛистОзнакомленияВWORD.Форма.Форма.Форма(12)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221005(0x800401F3): Недопустимая строка с указанием класса

Платформа 8.3.8.1933
2. flyDrag 290 15.11.16 21:04 Сейчас в теме
(1) DMak,
проверил на 8.3.8.2027, Зарплата и управление персоналом, редакция 3.1 (3.1.1.61), и Word 2007 у меня работает,
Для работы отчета у Вас должен быть установлен Word
3. Amras 43 16.11.16 09:52 Сейчас в теме
ЗУП КОРП 3.1.1.95 (клиент-серверный):
{ВнешняяОбработка.ЛистОзнакомленияВWORD.Форма.Форма.Форма(12)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221005(0x800401F3): Недопустимая строка с указанием класса

В локальной базе все и норм, а в клиент-серверном варианте ошибка.

Ошибка возникает в момент получения МакетВорд:
&НаКлиенте
Процедура Печать()
...
	Попытка 
		ШаблонВорд = ПолучитьCOMОбъект(МакетВорд); //инициализируем COM-объект, на сервере д.б. установлен word
...


Тестирование с правами доступа на сервере, лучше сохранять во временный каталог (к нему обычно права у пользователей есть):
&НаКлиенте
Процедура Печать()
	
	//задаем имя сохранения на диск
	КлючУникальности = Новый УникальныйИдентификатор;	
	Каталог = РабочийКаталогДанныхПользователя()+КлючУникальности+"ListOZ.doc"; // Стоит заменить на временный (но проблему это не решит до конца) - КаталогВременныхФайлов()


Суть проблемы кроется в следующем:
1. Создается путь к файлу на диске C:\
2. Файл сохраняется на сервере
3. Локальный компьютер не может получить данный файл с сервера
4. Ошибка

Предположу, что передавать файл с сервера на клиент лучше через хранилище (но какой-то долгий путь выходит, пусть даже всего 5-8 строк кода добавится).
4. Amras 43 16.11.16 12:52 Сейчас в теме
Предвижу вопрос про Word на сервере :) Нормальные (или очень злые) админы, никакое ПО кроме серверного на файловый сервер не ставят. От силы могут разрешить Word Viewer от MS установить. Но он не спасет положение. А вот через передачу посредством временного хранилища все заработало. Пока не тестировал на терминальном сервере, для удаленных пользователей, но как минутка появится проверю и там.
5. flyDrag 290 16.11.16 13:40 Сейчас в теме
(4) Amras, обработка выложенная здесь работает и на локальной базе и на клиент-серверной, но только на сервере, по поводу работы на терминальном сервере или по сети я менял обработку с передачей файла с клиента сервер:

до строчки
Попытка 
Шаблон = ПолучитьCOMОбъект(Каталог); //инициализируем COM-объект


вставлял следующий код:
КлючУникальности = Новый УникальныйИдентификатор;	
	Каталог = "E:\ReportsToWord\"+КлючУникальности+"ListOZ.doc";   //этот путь хранится на сервере
	Макет = ПолучитьМакет(Каталог); 
	Адрес=ПолучитьФайл(Каталог);
	Каталог = РабочийКаталогДанныхПользователя()+КлючУникальности+"ListOZ.doc";  
	Описание=Новый ОписаниеПередаваемогоФайла(Каталог,Адрес);
	МассивОписаний=Новый Массив;
	МассивОписаний.Добавить(Описание);
	ПолучитьФайлы(МассивОписаний,,,Ложь);
      Попытка 
		Шаблон = ПолучитьCOMОбъект(Каталог); //инициализируем COM-объект
	Исключение  ...и далее по коду

где  ПолучитьФайл(Каталог);,см код ниже

Функция ПолучитьФайл(Каталог)
	Двоичное=Новый ДвоичныеДанные(Каталог);
	Адрес=ПоместитьВоВременноеХранилище(Двоичное,ЭтаФорма.УникальныйИдентификатор);
	Возврат Адрес
КонецФункции
Показать

(наличие установленного на сервере ворда обязательно)

Если есть другие варианты просьба поделитесь пожалуйста
7. Butuff 06.12.16 00:04 Сейчас в теме
(5) у меня такая же ошибка при получении СОМ объекта - {Форма.Форма.Форма(12)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221005(0x800401F3): Недопустимая строка с указанием класса
Платформа - 8.3.7.2008
ЗУП - 3.0.25.144

и странный механизм печати внешнего макета - открытие формы обработки и оттуда печать, раньше ведь все было в модуле обработки и сразу выводилось на печать... это я так понял и связано с тем что СОМ объект не доступен на сервере, но тут еще какая то проблема с указанием класса, не подскажете как с ней бороться?
6. Amras 43 17.11.16 12:57 Сейчас в теме
Схожее решение у меня.

Если код привести к более типовому варианту (ниже листинг формы УФ), то будет примерно так (он должен работать во всех вариантах):

&НаКлиенте
Процедура Печать()
	//*** используем каталог временных файлов ---
	// задаем имя сохранения на диск
	КлючУникальности = Новый УникальныйИдентификатор;	
	Каталог = КаталогВременныхФайлов() + КлючУникальности + "ListOZ.doc";
	
	МакетВорд = ПолучитьМакетНаСервере(Каталог);

	//*** Тут будет код, который менять не надо
 	мМакет = ПолучитьИзВременногоХранилища(МакетВорд);
	мМакет.Записать(Каталог);
	
	// Очистим хранилище
	УдалитьИзВременногоХранилища(МакетВорд);
	
	// и перейдем к нашему файлу
	ОбработкаФайла(Каталог);
	//---
	
	ЭтаФорма.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	//*** Просто добавил ";" ---
	Печать();
КонецПроцедуры

&НаСервере
Функция ПолучитьМакетНаСервере(Каталог)
	Если ЗначениеЗаполнено(Каталог) Тогда
		Попытка
			ПолноеИмяФайла = Каталог;
			Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ЛистОзнакомления");
			Макет.Записать(ПолноеИмяФайла);
			
			//*** Обработаем файл на сервере и положим его во временное хранилище
			МакетНаДиске = Новый ДвоичныеДанные(ПолноеИмяФайла);
			АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(МакетНаДиске);
			
			Возврат АдресФайлаВХранилище;
			//---
		Исключение
			Сообщение = Новый СообщениеПользователю;
			Сообщение.Текст = "Не удалось записать файл в каталог пользователя "+ОписаниеОшибки();       
			Сообщение.Сообщить();
			
			Возврат Неопределено;           
		КонецПопытки;            
	Иначе
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не указан каталог. Сохранение файла невозможно";
		Сообщение.Сообщить();
		
		Возврат Неопределено;
	КонецЕсли;    
КонецФункции

//*** А вот эта часть у каждого может быть своя, да и править ее малость проще будет, т.к. в другие процедуры (функции не надо будет лазить ---
&НаКлиенте
Процедура ОбработкаФайла(МакетВорд)
	Попытка 
		ШаблонВорд = ПолучитьCOMОбъект(МакетВорд); //инициализируем COM-объект, на сервере д.б. установлен word
	Исключение
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ОписаниеОшибки();
		Сообщение.Сообщить();
		
		Возврат;
	КонецПопытки;  

	Если ШаблонВорд = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	СсылкаНаОбъект = Параметры.ОбъектыНазначения[0];  //ссылка на документ
	Организация = ПолучитьОрганизацию(СсылкаНаОбъект);  //приходится получать простые типы данных значений с сервера
	ФИО =  ПолучитьФИО(СсылкаНаОбъект);
	ПОЛ =  ПолучитьПол(СсылкаНаОбъект);
	Год = формат(ТекущаяДата(),"ДФ=yyyy");
	
	Selection = ШаблонВорд.Content;
	Selection.Find.Execute("%Организация%", Ложь, Истина, Ложь, , , Истина, , Ложь, Организация, 2);
    Selection.Find.Execute("%ФИО%", Ложь, Истина, Ложь, , , Истина, , Ложь, ФИО, 2);
	Selection.Find.Execute("%Год%", Ложь, Истина, Ложь, , , Истина, , Ложь, ГОД, 2);
	Если ПОЛ = "Ж" тогда
		Selection.Find.Execute("%ознакомлена%", Ложь, Истина, Ложь, , , Истина, , Ложь, "ознакомлена", 2);
		Selection.Find.Execute("%принял%", Ложь, Истина, Ложь, , , Истина, ,Ложь, "приняла", 2);
	Иначе
		Selection.Find.Execute("%ознакомлена%", Ложь, Истина, Ложь, , , Истина, , Ложь, "ознакомлен", 2);
		Selection.Find.Execute("%принял%", Ложь, Истина, Ложь, , , Истина, , Ложь, "принял", 2);
	КонецЕсли;
	

	ШаблонВорд.Fields.UpDate();
	ШаблонВорд.Activate();
	ШаблонВорд.Application.Visible = 1; //признак показать
	
	ШаблонВорд = "";
КонецПроцедуры

//---

//*** Остальное оставим как было ---

&НаСервере
Функция ПолучитьОрганизацию(СсылкаНаОбъект)
	Возврат Строка(СсылкаНаОбъект.Организация);
КонецФункции

&НаСервере
Функция ПолучитьФИО(СсылкаНаОбъект)
	Возврат Строка(СсылкаНаОбъект.Сотрудник);
КонецФункции

&НаСервере
Функция ПолучитьПол(СсылкаНаОбъект)
	Если СсылкаНаОбъект.Сотрудник.ФизическоеЛицо.Пол=Перечисления.ПолФизическогоЛица.Женский тогда
		Возврат "Ж";
	Иначе
		Возврат "М";
	КонецЕсли;
КонецФункции

Показать
8. mrm1212 34 05.05.17 12:59 Сейчас в теме
Столкнулся с проблемой, механизм работает через вставка замена в ворд, но пока документ ворд активный, как только какая-то программа перехватывает активность, в моем случае скайп, вываливается ошибка! =) ни кто не сталкивался???пытаюсь разобраться..пока решений не нашел..
Оставьте свое сообщение