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

14.10.16

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
ПечатьЛистОзнакомленияВWord
.epf 20,48Kb
122 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    23891    63    26    

92

Печатные формы Логистика, склад и ТМЦ Бухгалтер 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

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

6000 руб.

18.02.2019    67842    243    15    

196

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

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

14400 руб.

13.03.2018    64408    230    79    

121

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3500 руб.

07.02.2023    9299    100    17    

57

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

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

5700 руб.

23.08.2019    61264    191    65    

186

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

Для целей использования в ЮЗЭДО ОАО "РЖД". Обработка используется для формирования XML файлов (согласно формату, утвержденному приказом ФНС РФ от 19.12.2018 N ММВ-7-15/820@) актов выполненных работ по форме ФПУ-26 (Утверждена распоряжением ОАО "РЖД" от 15.12.2008 №2688р)

26400 руб.

14.05.2020    32933    45    19    

43

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

Программа для автоматизации учета путевых листов в 1С - расширение, добавляющее в конфигурацию "Комплексная автоматизация", документ Путевой лист и печатные формы установленных образцов для легковых и грузовых авто, расчет и списание нормативного количества топлива, отчет "Реестр путевых листов" с отбором по автомобилю и по водителю (через настройки) Позволит контролировать расход топлива, потому что сразу будет виден сверхнормативный расход.

13200 руб.

27.06.2023    5740    18    2    

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

Платформа 8.3.8.1933
2. flyDrag 293 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 293 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 39 05.05.17 12:59 Сейчас в теме
Столкнулся с проблемой, механизм работает через вставка замена в ворд, но пока документ ворд активный, как только какая-то программа перехватывает активность, в моем случае скайп, вываливается ошибка! =) ни кто не сталкивался???пытаюсь разобраться..пока решений не нашел..
Оставьте свое сообщение