Печать WORD из тонкого клиента с доступом по вэб адресу (управляемые формы)

Публикация № 1457504

Разработка - Печать - Универсальные печатные формы

Вариант печати файлов WORD из 1С из-под тонкого клиента, подключенного по вэб адресу. В файле показан вариант печати динамических таблиц, то есть таблиц с изменяемым количеством строк. Обработка печати довольно простая. Опробована на Управление торговлей, редакция 11 (11.4.13.155), версия платформы 1С:Предприятие 8.3 (8.3.18.1334)

Клиенту потребовалось печатать договора из заказа клиента в Управлении торговлей 11.4. Делать стандартный договор 1с не хотелось, так как замучишься потом править, то это нужно доработать, то это. Сделал вариант печати из WORD, чтобы сами правили. Два варианта печати из внешнего файла и из макета обработки. Макет двоичные данные. Так вот из макета через вэб интерфейс не печатает. Не может перегнать файл. Только из внешнего файла, сохраненного на компьютере пользователя. Плохо, что один и тот же макет, нужно размножить для каждого нуждающегося. Хорошо, что каждый нуждающийся сам может модернизировать себе макет.

В файле могут быть использованы следующие переменные

<ДокНомер>             //Номер в формате только последние цифры без префиксов

<ДоговорНомер>     //Полный номер документа

<ДокДата>                //Дата в формате 20.05.2010

<ДоговорДата>        //Дата в формате 20 мая 2010 г

<КлиентНаименование> //Наименование клиента

<КлиентНаименованиеПолное>   //Полное наименование клиента

<АдресКлиента>      //Адрес клиента

<ТелефонКлиента>  //Контактный телефон клиента

<АдресЭПКлиента> //Адрес электронной почты клиента

<КонтрагентНаименование>         //Наименование контрагента

<КонтрагентНаименованиеПолное>        //Полное наименование контрагента

<ЮрАдресКонтрагента>    //Юридический адрес контрагента

<ПочтовыйАдресКонтрагента>    //Почтовый адрес контрагента

<КонтрагентИНН>              //ИНН Контрагента

<КонтрагентКПП>              //КПП Контрагента

<КонтрагентКодПоОКПО>                       //Код по ОКПО Контрагента

<ТелефонКонтрагента>                  //Телефон контрагента

<АдресЭПКонтрагента>                //Адрес электронной почты контрагента

<ОрганизацияНаименование>      //Наименование организации       

<ОрганизацияНаименованиеПолное>     //Полное наименование организации

<ОрганизацияНаименованиеСокращенное> //Сокращенное наименование организации

<ОрганизацияКПП>           //КПП Организации

<ОрганизацияОГРН>

<ОрганизацияИНН>

<Город>                                //Город организации (из юр. Адреса)

<ЮрАдресОрганизации>   //Юридический адрес организации

<ПочтовыйАдресОрганизации>   //Почтовый адрес организации

<ТелефонОрганизации>     //Телефон организации

<Соглашение>         

<Сделка>

<Валюта>      //Валюта договора

<СуммаДокумента>  //Обшая сумма по заказу

<ГрафикОплаты>     //График оплаты

<ЖелаемаяДатаОтгрузки>             //Желаемая дата отгрузки

<Склад>         //Склад

<ЦенаВключаетНДС>        //Цена включает НДС

<Менеджер>             //Менеджер

<НеОтгружатьЧастями>     //Не отгружать частями

<ДатаСогласования>           //Дата согласования

<Согласован>                       //Признак согласования

<ФормаОплаты>      //Форма оплаты

<БанковскийСчет> //Банковский счет организации

<НомерСчетаОрганизации>// Номер банковского счета организации

<БИКБанкаОрганизации>  //БИК банка организации

<НаименованиеБанкаОрганизации> //Наименование банка организации

<КоррСчетБанкаОрганизации>    //Корр счет банка организации

<ГородБанкаОрганизации>                       //Город банка организации

<БанковскийСчетКонтрагента>    //Банковский счет контрагента

<НомерСчетаКонтрагента>                       //Номер банковского счета контрагента

<НаименованиеБанкаКонтрагента>         //Наименование банка контрагента

<БИКБанкаКонтрагента>               //БИК банка контрагента

<КоррСчетБанкаКонтрагента>      //Корр счет банка контрагента

<ГородБанкаКонтрагента>            //Город банка контрагента

<СуммаАвансаДоОбеспечения>   //Сумма аванса до обеспечения

<СуммаПредоплатыДоОтгрузки>            //Сумма предоплаты до отгрузки

<ДатаОтгрузки>       //Дата отгрузки

<АдресДоставки>    //Адрес доставки

<НалогообложениеНДС>// Налогообложение НДС

<Комментарий>       //Комментарий документа

<НомерПоДаннымКлиента> //Номер по данным клиента

<ДатаПоДаннымКлиента> //Дата по данным клиента

<Грузоотправитель> //Грузоотправитель

<Грузополучатель>  //Грузополучатель

<БанковскийСчетГрузоотправителя> //Банковский счет грузоотправителя

<БанковскийСчетГрузополучателя>//      Банковский счет грузополучателя

<Договор>     //Договор документа

<Подразделение> //Подразделение

<Автор>                    //Автор

<ПорядокРасчетов>//           Порядок расчетов

<СпособДоставки>  //Способ доставки

<КонтактноеЛицо> //Контактное лицо

<КонтактноеЛицоРП>        //Контактное лицо родительный падеж

<КонтактноеЛицоДП>       //Контактное лицо дательный падеж

<Руководитель>       //Руководитель организации

<РуководительНаОсновании> //Руководитель действующий на основании устава или доверенности

<РуководительРП> //Руководитель в родительном падеже

<РуководительДП>             //Руководитель в дательном падеже

<РуководительФИО>          //Руководитель Фамилия Инициалы

<ДолжностьРуководителя>            //Должность руководителя

<ДолжностьРуководителяРП>      //Должность руководителя в родительном падеже

<ДолжностьРуководителяДП>      //Должность руководителя в дательном падеже

<ГлавныйБухгалтер>          //Главный бухгалтер

<ПорядокОплаты>              //Порядок оплаты

 

Переменные (слова в квадратных скобках) получены запросом к документу печати и загружены в структуру. Они добавляются в нужные места в документе WORD. Файл в формате *.docx.

&НаКлиенте
// Функция - заполняет шаблоны в файле шаблоне документа Word
//
Процедура ОбработатьФайлDocx(ПараметрыЗаполнения,ДокПечати) Экспорт
	//КаталогДокументов();
	ШаблоныКЗамене = ПолучитьШаблоныКЗамене(ДокПечати); 	
	ФайлШаблона = ВывестиМакетНаСервере(ЗначениеЗаполнено(ПутьКФайлу));
	
	Word = Новый COMОбъект("Word.Application");
	ДокументВорд = Word.Documents.Add(ФайлШаблона);
	ДокументВорд = Word.Application.Documents(1);
	ДокументВорд.Activate();
	КолСтрокТаб = 0;
	Для каждого ПараметрЗ Из ШаблоныКЗамене Цикл
		Если ПараметрЗ.Ключ = "КолСтрок" Тогда
			КолСтрокТаб = Число(ПараметрЗ.Значение);
		КонецЕсли;
		Попытка
			Замена = ДокументВорд.Content;
			Замена.Find.Execute("<"+ПараметрЗ.Ключ+">",0,0,,,,,,,ПараметрЗ.Значение,2);
		Исключение
			Сообщить("Ошибка "+"<"+ПараметрЗ.Ключ+">"+ " Знач "+ПараметрЗ.Значение);
		КонецПопытки;
	КонецЦикла;
	//Заполняем первую таблицу
	Если ДокументВорд.Bookmarks.Exists("Таблица1") Тогда
		
	    //Выделяем обязательную закладку начала таблицы
	    ДокументВорд.Bookmarks("Таблица1").Select();     
	     
	    //Перемещаемся вниз, выделяем строку таблицы и копируем ее в буфер обмена
	    ДокументВорд.Application.Selection.MoveDown();
	    ДокументВорд.Application.Selection.SelectRow();
	    ДокументВорд.Application.Selection.Copy();
	    Сч = 0; 
		Пока Сч < КолСтрокТаб Цикл
			Сч = Сч + 1;
	        Для каждого СтрокаТ Из ШаблоныКЗамене Цикл
				Если СтрокаТ.Ключ = "Номенклатура"+Сч Тогда
					Номенклатура = СтрокаТ.Значение;
				КонецЕсли;
				Если СтрокаТ.Ключ = "Количество"+Сч Тогда
					Количество = СтрокаТ.Значение;
				КонецЕсли;
				Если СтрокаТ.Ключ = "Цена"+Сч Тогда
					Цена = СтрокаТ.Значение;
				КонецЕсли;
				Если СтрокаТ.Ключ = "Сумма"+Сч Тогда
					Сумма = СтрокаТ.Значение;
				КонецЕсли;
			КонецЦикла;  
	        //Заменяем значения
	        ДокументВорд.Application.Selection.Find.Execute("<Знач1>" ,,,,,,,,,Сч,2);
	        ДокументВорд.Application.Selection.Find.Execute("<Знач2>" ,,,,,,,,,СокрЛП(Номенклатура),2);
	        //Последний параметр поиска пустой
	        ДокументВорд.Application.Selection.Find.Execute("<Знач3>" ,,,,,,,,,"Шт.",2);
			ДокументВорд.Application.Selection.Find.Execute("<Знач4>" ,,,,,,,,,СокрЛП(Количество),2);
			ДокументВорд.Application.Selection.Find.Execute("<Знач5>" ,,,,,,,,,СокрЛП(Цена),2);
			ДокументВорд.Application.Selection.Find.Execute("<Знач6>" ,,,,,,,,,СокрЛП(Сумма),2);
	         
	        //Перемещаемся вниз, вставляем из буфера обмена строку
	        ДокументВорд.Application.Selection.MoveDown();
	        ДокументВорд.Application.Selection.Paste();
	        //Перемещаемся вверх и выделяем строку для замены значений
	        ДокументВорд.Application.Selection.MoveUp();
	        ДокументВорд.Application.Selection.SelectRow();
	         
	    EndDo;
	     
	    //Вырезаем лишнюю строку
	    ДокументВорд.Application.Selection.Cut();
	     
	    //Скрываем обязательную закладку начала таблицы
	    ДокументВорд.Bookmarks("Таблица1").Select();
	    ДокументВорд.Application.Selection.TypeText(" ");
	     
	КонецЕсли;
	Word.Application.Visible = Истина;
	Word.Application.WindowState = 2;
	Word.Application.WindowState = 1;
	Word.Activate();   
	
	
КонецПроцедуры

 

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

Наименование Файл Версия Размер
Печать ворд из тонкого клиента с доступом по вэб адресу управляемые формы :

.epf 58,61Kb
0
.epf 58,61Kb Скачать

Специальные предложения

Оставьте свое сообщение

См. также

Универсальная выгрузка/загрузка данных для отличающихся конфигураций (JSON, Такси+ОФ) Промо

Перенос данных из 1C8 в 1C8 Универсальные обработки Распределенная БД (УРИБ, УРБД) v8 1cv8.cf Абонемент ($m)

Простой перенос через JSON данных между двумя базами 1С (документов, справочников, ПВХ, ПВР, счетов). Аналогична произвольной выгрузке в типовой "Выгрузка/загрузка XML", но может использоваться для отличающихся конфигураций. Подходит для любых пар баз с любым интерфейсом (управляемый + обычный). Без настроек. Не требует идентичности конфигураций и платформ. При переносе типы данных сопоставляются по наименованиям метаданных, объекты и ссылки по UID.

1 стартмани

22.10.2014    217979    4311    ekaruk    184    

Загрузка данных из 1С МиниДеньги в 1С:Деньги 8, редакция 2.0

Обмен через XML Перенос данных из 1C8 в 1C8 v8 Домашние учет и финансы УУ Абонемент ($m)

Обработка для первоначальной загрузки данных (справочников и операций) в настольную программу 1С:Деньги 8, редакция 2.0 из файлы резервной копии мобильной программы 1С Миниденьги.

2 стартмани

01.10.2015    16490    15    Claus32    5    

Редактор чеков ККМ Розница 2.0 - 2.3

Обработка документов Кассовые операции Розничная торговля Кассовые операции Розничная торговля v8 Розница Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд БУ НУ Абонемент ($m)

Обработка чеков ККМ списком (редактирование, удаление, ...). Переформирование ОРП, связь чеков с ОРП. Редактирование времени КС. Редактирование суммы и времени выемки.

1 стартмани

06.08.2015    57264    544    Dima_    83    

Загрузка из Excel в 1С:Розница

Обработка документов Обработка справочников Загрузка и выгрузка в Excel Учет ТМЦ Учет ТМЦ v8 Розница Россия УУ Абонемент ($m)

Универсальная загрузка Excel файлов в 1С:Розница 2.0

1 стартмани

27.05.2015    15720    110    KarinaSV    7    

Автоматическая установка себестоимости номенклатуры для конфигурации Розница 2.0 (2.1) +Бонус, исправляем ошибки при настройке расписания запуска для внешних обработок в Рознице 2.0

Ценообразование, прайсы Обработка документов Розничная торговля Ценообразование, анализ цен Розничная торговля Ценообразование, анализ цен v8 Розница Розничная и сетевая торговля (FMCG) Россия УУ Абонемент ($m)

Обработка для автоматического создания документов Установка себестоимости, в случае если себестоимость не установлена на момент продажи. Помогает упростить установку себестоимости номенклатуры, если у вас в базе ведется учет по нескольким магазинам. Тестировалась на релизе 2.0.8.12 и 2.1.7.14. Подойдет для тех систем, где себестоимость номенклатуры одинакова для всех магазинов.

1 стартмани

31.03.2014    28421    74    sanches    15    

Выемка денежных средств из КассыККМ. Розница 2.0

Кассовые операции ККМ Кассовые операции v8 Розница УУ Абонемент ($m)

Уставшим от отсутствия ВыемкиДС после закрытия кассовой смены посвящается. Подключаемая обработка. Управляемый интерфейс.

1 стартмани

12.12.2012    78957    527    StepByStep    40