Макеты печатных форм в руках пользователей (обычные формы)

01.11.18

Задачи пользователя - Адаптация типовых решений

Как частично избавить себя от низкопрофильного труда по правке печатных форм. Для конфигураций на основе БСП, конечно, не актуально, но для нетиповых вполне. Ну и как в помощь начинающим. У меня реализовано для печати различных "согласие на обработку персональных данных","согласие на медицинские вмешательства", различных анкет. Удобно для печатных форм, которые часто по тем или иным причинам меняются. Чтоб не дергать программиста, пусть пользователи рисуют макеты самостоятельно.

Опишу, как реализовано у меня.

1. Создаем справочник примерно следующего содержания:

реквизит ХранилищеШаблон имеет тип ХранилищеЗначений, в него будем сохранять макет, созданный пользователями.

2. Форма справочника

на форме я добавил две странички и на первой разместил элемент "ТабличныйДокумент", на второй вывели реквизиты по настройке печати.

3. Модуль формы справочника:

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


Процедура ПередЗаписью(Отказ)
	ТабДокумент=НОвый ТабличныйДокумент;
	ТабДокумент.Вывести(ЭтаФОрма.ЭлементыФормы.тхтШаблон);
	ХранилищеШаблон=НОвый ХранилищеЗначения(ТабДокумент);
	
КонецПроцедуры

Процедура ПриОткрытии()
	Попытка
	ТабДок=ХранилищеШаблон.Получить();
	Если Не ЭтоНовый() Тогда
		ЭтаФорма.ЭлементыФормы.тхтШаблон.Вывести(ТабДок);
	ИНаче
		ПолеСлева=5;
		ПолеСправа=5;
		ПолеСверху=5;
		ПолеСнизу=5;
		АвтоМасштаб=Истина;   
		Ориентация=Перечисления.ОриентацияСтраницы.Портрет;
	КонецЕсли;
	ИСключение
	сообщить(ОписаниеОшибки());
	КонецПопытки;
КонецПроцедуры

Процедура ОбновлениеОтображения()
	Автомасштаб=(МасштабПечати=0);
КонецПроцедуры

4. Создаем документ

Для удобства указываем ввод на основании, у меня вводится на основании справочника "пациенты"

В табличной части документа добавим реквизит с типом справочника макета печатных форм

 

5. Модуль формы документа

По кнопке печать происходит перебор табличной части документа, для каждого элемента табличной части создается свой табличный документ, в который выводится макет с замененными параметрами. Заменяемые параметры в макете имеют вид [ИмяПараметра].


Процедура ОсновныеДействияФормыПечать(Кнопка)
	ДЛя каждого Стр Из СпискиФорм Цикл  						//Переберем ТЧ документа
		ТабДокумент=Новый ТабличныйДОкумент;
		Макет=Стр.СсылкаНаМакет.ХранилищеШаблон.Получить();   	//получим макет каждой строки
		ПреобразоватьПараметры(Макет);							//заменим параметры реальными данными	
		ТабДокумент.Вывести(Макет);
		ПрименитьНастройкиПечати(Стр.СсылкаНаМакет,ТабДокумент);//настройка печати
		ТабДокумент.Показать();
	КонецЦикла;
КонецПроцедуры
Процедура ПрименитьНастройкиПечати(СсылкаСпр,ТабДокумент)
		ТаБДокумент.МасштабПечати=СсылкаСпр.МасштабПечати;
		ТаБДокумент.АвтоМасштаб=СсылкаСпр.АвтоМасштаб;
		ТаБДокумент.ПолеСверху=СсылкаСпр.ПолеСверху;
		ТаБДокумент.ПолеСлева=СсылкаСпр.ПолеСлева;
		ТаБДокумент.ПолеСнизу=СсылкаСпр.ПолеСнизу;
		ТаБДокумент.ПолеСправа=СсылкаСпр.ПолеСправа;
		ТаБДокумент.ОриентацияСтраницы=?(СсылкаСпр.Ориентация=Перечисления.ОриентацияСтраницы.Ландшавт,ОриентацияСтраницы.Ландшафт,ОриентацияСтраницы.Портрет);
КонецПроцедуры

Процедура ПреобразоватьПараметры(Макет)
	Соответствия=ПодготовимСоответствие(); 						//Заполним соответствие с параметрами замены
		ДЛя каждого СтрСоот Из Соответствия ЦИкл
			ЯчейкаТекст=Макет.НАйтиТекст(СтрСоот.Ключ);
			Если ЯчейкаТекст<>Неопределено ТОгда 
				ЯчейкаТекст.Текст=СтрЗАменить(ЯчейкаТекст.Текст,СтрСоот.Ключ,СтрСоот.Значение);
			КонецЕсли;
		КонецЦИкла;
КонецПроцедуры
Функция ПодготовимСоответствие()
		Соответствие=НОвый Соответствие();
		Соответствие.Вставить("[ФИОПолностью]",""+Пациент.Фамилия+" "+Пациент.Имя+" "+Пациент.Отчество);
		Соответствие.Вставить("[ДатаРождения]",ФОРмат(ПАциент.ДатаРождения,"ДФ=dd.MM.yyyy"));
		СтруктураПаспорта=ПолучимПАспорт();
		Соответствие.Вставить("[ПаспортНомер]",СтруктураПаспорта.НомерПаспорт);
		Соответствие.Вставить("[ПаспортСерия]",СтруктураПаспорта.СерияПаспорт);
		Соответствие.Вставить("[ПаспортКемВыдан]",СтруктураПаспорта.КемВыданПаспорт);
		Соответствие.Вставить("[ПаспортДатаВыдачи]",СтруктураПаспорта.ДатаВыдачиПаспорт);
		Соответствие.Вставить("[ПаспортПредставление]",СтруктураПаспорта.ПредставлениеПаспорт);
		Соответствие.Вставить("[Адрес]",киПолучитьПредставлениеКИ(Пациент,Справочники.ВидыКонтактнойИнформации.АдресФактический,ложь) );
		ФИОКратко=СтрЗаменить(Соответствие.Получить("[ФИОПолностью]")," ",Символы.ПС);
		Если СтрЧислоСтрок(ФИОКратко)>2 ТОгда
			ФиоКратко=СтрПолучитьСтроку(ФИоКРатко,1)+" "+ЛЕв(СтрПолучитьСтроку(ФИоКРатко,2),1)+"."+ЛЕв(СтрПолучитьСтроку(ФИоКРатко,3),1)+"."
		КонецЕсли;
		Соответствие.Вставить("[ФИОКратко]",ФИОКРатко );
		
		ВОзврат Соответствие;
	КонецФункции
	
	ФУнкция ПолучимПАспорт()
		Структура=Новый СТруктура;
		Структура.Вставить("СерияПаспорт","");
		Структура.Вставить("НомерПаспорт","");
		Структура.Вставить("КемВыданПаспорт","");
		Структура.Вставить("ДатаВыдачиПаспорт","");
		Структура.Вставить("ПредставлениеПаспорт","");
		ЗАпрос=НОвый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1
		                    |	ПодтверждающиеДокументы.Серия,
		                    |	ПодтверждающиеДокументы.Номер,
		                    |	ПодтверждающиеДокументы.ДатаВыдачи,
		                    |	ПодтверждающиеДокументы.КемВыдан,
		                    |	ПодтверждающиеДокументы.Представление
		                    |ИЗ
		                    |	Справочник.ПодтверждающиеДокументы КАК ПодтверждающиеДокументы
		                    |ГДЕ
		                    |	ПодтверждающиеДокументы.Владелец = &Владелец
		                    |	И ПодтверждающиеДокументы.ВидПодтверждающегоДокумента = ЗНАЧЕНИЕ(Справочник.ВидыПОдтверждающихДокументов.Паспорт)
		                    |	И ПодтверждающиеДокументы.Текущий
		                    |	И НЕ ПодтверждающиеДокументы.ПометкаУдаления");
		Запрос.УстановитьПараметр("Владелец",Пациент);
		Результат=Запрос.Выполнить().Выбрать();
		Пока РЕзультат.Следующий() ЦИкл
			Структура.Вставить("СерияПаспорт",Результат.Серия);
			Структура.Вставить("НомерПаспорт",Результат.Номер);
			Структура.Вставить("КемВыданПаспорт",Результат.КемВыдан);
			Структура.Вставить("ДатаВыдачиПаспорт",Формат(Результат.ДатаВыдачи,"ДФ=dd.MM.yyyy"));
			Структура.Вставить("ПредставлениеПаспорт",Результат.Представление);
		КонецЦИкла;
	Возврат Структура;		
КОнецФункции

6. Как это выглядит у пользователя:

 

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

шаблон макет печатная форма

См. также

Адаптация типовых решений 1С:Предприятие 8 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

32330 руб.

29.06.2023    10892    33    15    

40

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36600 руб.

28.08.2025    5362    2    2    

5

Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 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, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

5084 руб.

07.02.2023    11636    111    20    

67

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

Расширение "Дополнительные документы" предназначено для создания дополнительных документов различного назначения, как форм для внесения данных так и печатных форм в расширяемой конфигурации пользовательскими средствами, без работы в конфигураторе и внесения изменений в структуру данных. Тестировалось для "1С:БП", "1С:УНФ","1С:КА"

21859 руб.

29.12.2025    523    1    6    

2

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

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

9760 руб.

17.06.2025    2519    6    0    

6

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Расширение для УНФ, чтобы автоматически отменять старые резервы и не мешалть эффективно продавать.

9150 руб.

02.08.2023    7342    24    5    

41

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

Расширение для вывода информации об остатках и ценах номенклатуры в форме списка и выбора номенклатуры. (УТ 11, КА 2, ERP). Позволяет получать информацию о ценах, остатках и доступности в разрезе складов и характеристик номенклатуры, информацию по документам резерва.

7930 руб.

16.10.2025    735    1    0    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Stim213 417 07.11.18 09:56 Сейчас в теме
Зачем так мучать пользователя в табличном документе? Научите его создавать поля в Ворде и заполняйте ворд при печати
ybatiaev; +1 Ответить
2. fromlion 197 07.11.18 10:11 Сейчас в теме
(1) если брать нашу ситуацию, то работаем в терминальном режиме и ставить офисы на сервер нельзя. Как минимум будут затраты на приобретение лицензий.
Dmitri93; jONES1979; +2 Ответить
3. jONES1979 09.11.18 08:51 Сейчас в теме
Вот спасибо, всё расписано! Мне скоро пригодится!
Для отправки сообщения требуется регистрация/авторизация