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

14.10.16

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

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

Скачать файл

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

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

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

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

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

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

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

См. также

SALE! 15%

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

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

6000 5100 руб.

09.11.2016    244145    1129    912    

1052

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

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

22200 руб.

06.10.2023    20253    51    19    

86

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

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

14400 руб.

13.03.2018    63197    227    79    

120

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

Учет путевых листов выполнен в виде расширения. Предназначен для учета путевых листов в конфигурации БП 3.0., УТ 11.5 и КА 2.5 Печатная форма: Типовая межотраслевая форма № 3. Утверждена постановлением Госкомстата России от 28.11.97 № 78. Типовая межотраслевая форма № 4-П от 18.09.2008 г. N 152 с учетом изменений указанных в Приказе Министерства транспорта Российской Федерации №368 от 11 сентября 2020 г. №368, Типовая межотраслевая форма № ЭСМ-7, и др. ЭСМ-2, 4-С, 3 спец., 6 спец., ПЛ для Автомобильного крана.

4800 руб.

14.10.2019    40632    282    216    

184

Печатные формы Программист Пользователь Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

3960 руб.

08.10.2019    49510    182    105    

175

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

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

4560 руб.

13.02.2019    103088    466    46    

449

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

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

3720 руб.

18.02.2019    66238    226    15    

180

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

Групповое формирование и печать Дополнительных соглашений для 1С: Зарплата и управление персоналом ПРОФ и КОРП + 8 печатных форм: Индексация заработной платы, Удаленная работа и предупреждение о COVID-19, Выход из удаленной работы, Кадровый перевод, Кадровый перевод списком, Назначение индивидуальной системы начислений, Переименование филиала, Приказ "Совмещение должностей", Приказ "Совмещение исполнения обязанностей" Что нового: 1.В печатных формах убран весь красный цвет текста 2. В печатных формах в шапках сделано заполнение названия организации, руководителя и основания действия руководителя 3. В печатных формах в подвале сделано заполнение реквизитов организации 4. Добавлена возможность печатать доп соглашения по документу "Изменение плановых начислений"

21600 руб.

24.03.2023    5540    5    0    

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