Внешняя печатная форма в формате 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С

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

См. также

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

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

22200 руб.

06.10.2023    18138    49    19    

81

SALE! 20%

Загрузка и выгрузка в 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    240254    1100    906    

1032

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

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

13200 руб.

27.06.2023    4643    16    2    

17

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

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

14400 руб.

13.03.2018    62351    216    79    

120

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

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

3960 руб.

08.10.2019    48592    175    105    

171

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

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

4200 руб.

13.02.2019    101052    456    45    

439

Печатные формы Бухгалтер Платформа 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 спец., ПЛ для Автомобильного крана.

3600 руб.

14.10.2019    40000    271    216    

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

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