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

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    240137    1100    906    

1031

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

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

84000 руб.

05.10.2022    11452    13    8    

15

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

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

14400 руб.

13.03.2018    62320    217    79    

120

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

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

5400 руб.

08.10.2019    48556    175    105    

171

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

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

13200 руб.

27.06.2023    4616    15    2    

16

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

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

4200 руб.

13.02.2019    100969    456    45    

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