Мой Best Practics. Красивый код в печатных формах

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

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

Внешняя печатная форма Красивый код шаблон

Мой Best Practics. Красивый код в печатных формах. Формирование печатных форм.

В процессе анализа своего старого кода иногда удивляешься: кто это написал? ну кто так пишет? Всегда хочется это все переделать и оптимизировать. 

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

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

Версия БСП особо роли не играет. Стандарты написания внешних печатных форм 1С не меняет уже очень давно. Мне кажется еще с 8.0, независимо от типов форм: обычные или управляемые.

Итак, поехали.

Макет печатной формы.

Для себя я выработал несколько правил:

1. Если в печатной форме доступен только один макет - называю его так же как и имя внешней обработки.

2. В общем случае, когда в макете выводится некоторая коллекция - всегда определяю минимум 4 именованные области строк:

  • Заголовок - Область выше таблицы
  • Шапка - Шапка таблицы. Всегда выделяю отдельной областью. В случае чего позволит повторять шапку на каждой странице 
  • Строка - Строка коллекции
  • Подвал - Строки ниже таблицы

Если в таблице присутствуют итоги - добавляю 5ю область Итог. Имена областей практически во всех печатных формах одинаковые.

3. Имена полей всегда стараюсь писать без сокращений. К примеру, НоменклатураПоставщика вместо НомПост. Допускаю сокращение, если невозможно назвать поле без сокращений короче 30-35 символов.

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

Формирование табличного документа

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

В минимальном варианте в качестве параметров этой функции достаточно одного: МассивОбъектов. В своей конфигурации я много встречал кода других программистов, которые в качестве параметра этой функции передавали только одну ссылку. Я считаю это грубой ошибкой, поэтому хочу отдельно обратить на это внимание.

Функционально можно разделить функцию СформироватьПечатнуюФорму на несколько областей:

  • Инициализация переменных
  • Запрос
  • Обход запроса и формирование табличного документа.

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

ТабличныйДокумент = Новый ТабличныйДокумент;

Макет = ПолучитьМакет("Макет");

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьСтрока = Макет.ПолучитьОбласть("Строка");

ОбластьИтог = Макет.ПолучитьОбласть("Итог");

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

Отдельная переменная для каждой области макета позволит избежать путаницы при заполнении табличного документа.

Запрос.

Самая главная часть печатной формы. От того, насколько удачно вы построите запрос, зависит дальнейшее построение кода.

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

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

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

Заполнение табличного документа.

Запрос построен, теперь надо вывести данные в табличный документ.

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

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

ВыборкаСсылка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаСсылка.Следующий() Цикл
 ЗаполнитьЗначенияСвойств(ОбластьЗаголовок.Параметры, ВыборкаСсылка);
 ТабличныйДокумент.Вывести(ОбластьЗаголовок);
 ТабличныйДокумент.Вывести(ОбластьШапка);
 Выборка = ВыборкаСсылка.Выбрать();
 Пока Выборка.Следующий() Цикл
  ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, Выборка);
  ТабличныйДокумент.Вывести(ОбластьСтрока);
 КонецЦикла;
 ЗаполнитьЗначенияСвойств(ОбластьИтог.Параметры, ВыборкаСсылка);
 ТабличныйДокумент.Вывести(ОбластьИтог);
 ЗаполнитьЗначенияСвойств(ОбластьПодвал.Параметры, ВыборкаСсылка);
 ТабличныйДокумент.Вывести(ОбластьПодвал);
 ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;

// Ну и в конце формирования обязательно задаем параметры страницы
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.Автомасштаб = Истина;

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

Отладка.

Ну и в завершение пару слов про отладочную форму обработки.

Я использую следующие реквизиты формы:

  • Ссылка - ссылка на объект, для которого формируется печатная форма
  • ТабличныйДокумент - для просмотра сформированной формы
  • Команда формы Сформировать

На форму вывожу Ссылку и ТабличныйДокумент. Кнопку Сформировать в командную панель.

У формы устанавливаю свойство АвтоматическоеСохранениеДанныхВНастройках = Использовать, 

у кнопки "Сформировать" устанавливаю галочку КнопкаПоУмолчанию

У реквизита "ссылка" ставлю галочку "Сохранение"

Ну и код формы всегда одинаков:


&НаСервере
Процедура СформироватьНаСервере()
	МассивОбъектов = Новый Массив;
	МассивОбъектов.Добавить(Ссылка);
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ТабличныйДокумент = ОбработкаОбъект.СформироватьПечатнуюФорму(МассивОбъектов);
КонецПроцедуры

&НаКлиенте
Процедура Сформировать(Команда)
	СформироватьНаСервере();
КонецПроцедуры

Заключение.

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

Тестировалось на конфигурации Управление торговлей 11, Но можете использовать на любой конфигурации, основанной на библиотеке стандартных подсистем начиная с версии 2.1 и выше.

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

Наименование Файл Версия Размер
Мой Best Practics. Красивый код в печатных формах.: Шаблон печатной формы

.epf 9,64Kb
08.07.20
4
.epf 9,64Kb 4 Скачать

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. forseil 203 08.07.20 17:41 Сейчас в теме
Надо как в ЗУПе, обработку, к ней отчет на СКД, сбор запроса кусками, вот где красота
SpartakM; TMV; ubnkfl; Terve!R; Ta_Da; amd1986; +6 Ответить
2. Rustig 1588 08.07.20 18:17 Сейчас в теме
(0), (1)
я делаю так, когда вижу запрос кусками: для определенных входных параметров собираю через отладчик единый текст запроса, копирую в буфер, закрываю отладочный режим, копирую текст запроса тут же в модуль, комментирую, подписываю что за запрос.

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

При этом я храню исходный полный текст запроса и измененный текст запроса без кусков - оба могут пригодиться.

Вот бы был порядок, если разработчики вставляли полный текст запросов без сборки по кускам в определенных местах описания алгоритма, чтобы не тратить время на сборку....
andy_zhav; +1 Ответить
5. AlX0id 09.07.20 08:12 Сейчас в теме
(2)
Вот бы был порядок, если разработчики вставляли полный текст запросов без сборки по кускам в определенных местах описания алгоритма, чтобы не тратить время на сборку....

Так от хорошей жизни запрос кусками не собирают же ж.. Все варианты не вставишь.
Мне обычно помогает отладка отложенных объектов из инструментов разработчика в сложносочиненных запросах.
Aleksandr55555; +1 Ответить
3. kuzyara 1070 09.07.20 05:02 Сейчас в теме
Все описанное вроде бы очевидно, но спасибо за грамотное изложение.
Я ещё вот такой приёмчик использую: visualizing-code-to-fail-faster
SpartakM; Alexsur; YPermitin; pm74; Rustig; artbear; +6 Ответить
4. andy_zhav 181 09.07.20 07:57 Сейчас в теме
(3) да, это очевидно, но рассчитано на новичков. В последнее время часто вижу код, от которого волосы дыбом становятся. Это выводит меня из равновесия. Решил хоть так исправить это :-)
7. Di_Denis 209 21.07.20 17:56 Сейчас в теме
Я делаю так, последнее время
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

	// Печать накладной на приход.
	НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Накладная");
	Если НужноПечататьМакет Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"Накладная",
			НСтр("ru = 'Накладная на приход товаров'"),
			ПечатнаяФормаПриходТоваров(МассивОбъектов, ОбъектыПечати),
			,
			"Документ.РЗ_АктОбмера.ПФ_MXL_НакладнаяНаПриходТовара");
	КонецЕсли;
	
	НужноПечататьМакет = УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СортировочныйЛист");
	Если НужноПечататьМакет Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"СортировочныйЛист",
			НСтр("ru = 'Сортировочный лист'"),
			ПечатнаяФормаСортировочныйЛист(МассивОбъектов, ОбъектыПечати),
			,
			"Документ.РЗ_АктОбмера.ПФ_MXL_СортировочныйЛист");
	КонецЕсли;

		
		
КонецПроцедуры

#Область СлужебныеПроцедурыИФункции

Функция ПечатнаяФормаПриходТоваров(МассивОбъектов, ОбъектыПечати)
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	РЗ_АктОбмера.Ссылка,
	|	РЗ_АктОбмера.Номер,
	|	РЗ_АктОбмера.Дата,
	|	РЗ_АктОбмера.Организация,
	|	РЗ_АктОбмера.Ответственный,
	|	РЗ_АктОбмера.Товары.(
	|		НомерСтроки,
	|		Номенклатура,
	|		Количество,
	|		Порода,
	|		Сорт,
	|		Длина,
	|		Диаметр,
	|		Объем
	|	),
	|	РЗ_АктОбмера.Контрагент,
	|	РЗ_АктОбмера.Заготовитель,
	|	РЗ_АктОбмера.Водитель,
	|	РЗ_АктОбмера.Транспорт,
	|	РЗ_АктОбмера.Грузоотправитель,
	|	РЗ_АктОбмера.ПринятыйОбъем,
	|	РЗ_АктОбмера.НомерНакладной,
	|	РЗ_АктОбмера.ДатаНакладной
	|ИЗ
	|	Документ.РЗ_АктОбмера КАК РЗ_АктОбмера
	|ГДЕ
	|	РЗ_АктОбмера.Ссылка В(&СписокДокументов)";
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("СписокДокументов", МассивОбъектов);
	
	Шапка = Запрос.Выполнить().Выбрать();
	
	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.КлючПараметровПечати = "Накладная";
	
	Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РЗ_АктОбмера.ПФ_MXL_НакладнаяНаПриходТовара");
	
	Пока Шапка.Следующий() Цикл
		Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		ДанныеПечати = Новый Структура;
		
		ТекстЗаголовка = СформироватьЗаголовокДокумента(Шапка, НСтр("ru = 'Приходный ордер на товары'"));
		ДанныеПечати.Вставить("ТекстЗаголовка", ТекстЗаголовка);
		ДанныеПечати.Вставить("ОрганизацияПредставление", Шапка.Организация);
		ДанныеПечати.Вставить("ОтправительПредставление", Шапка.Грузоотправитель);
		ДанныеПечати.Вставить("ПолучательПредставление", Шапка.Контрагент);
		ДанныеПечати.Вставить("Заготовитель", Шапка.Заготовитель);
		ДанныеПечати.Вставить("Водитель", Шапка.Водитель);
		ДанныеПечати.Вставить("Транспорт", Шапка.Транспорт);
		ДанныеПечати.Вставить("Объем", Шапка.ПринятыйОбъем);
		
		ДанныеПечати.Вставить("Ответственный", Шапка.Ответственный);

		
		ТаблицаТовары = Шапка.Товары.Выгрузить();
		ДанныеПечати.Вставить("Количество", ТаблицаТовары.Итог("Количество"));
		
		МассивОбластейМакета = Новый Массив;
		МассивОбластейМакета.Добавить("Заголовок");
		МассивОбластейМакета.Добавить("ШапкаТаблицы");
		МассивОбластейМакета.Добавить("Строка");
		МассивОбластейМакета.Добавить("Подвал");
		МассивОбластейМакета.Добавить("Подписи");
		
		Для Каждого ИмяОбласти Из МассивОбластейМакета Цикл
			ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбласти);
			Если ИмяОбласти <> "Строка" Тогда
				ЗаполнитьЗначенияСвойств(ОбластьМакета.Параметры, ДанныеПечати);
				ТабличныйДокумент.Вывести(ОбластьМакета);
			Иначе
				Для Каждого СтрокаТаблицы Из ТаблицаТовары Цикл
					ОбластьМакета.Параметры.Заполнить(СтрокаТаблицы);
					ОбластьМакета.Параметры.Номенклатура = "" + СтрокаТаблицы.Номенклатура + " ("+ РЗ_Лесозавод.ОпределитьХарактеристикуНоменклатуры(СтрокаТаблицы.Номенклатура,СтрокаТаблицы.Номенклатура.Порода,СтрокаТаблицы.Сорт,СтрокаТаблицы.Длина,СтрокаТаблицы.Диаметр,Ложь)+")";
					ТабличныйДокумент.Вывести(ОбластьМакета);
				КонецЦикла;
			КонецЕсли;
		КонецЦикла;

		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Шапка.Ссылка);
	
	КонецЦикла;
	
	Возврат ТабличныйДокумент;
	
	
КонецФункции

#КонецОбласти



Показать
8. andy_zhav 181 22.07.20 09:43 Сейчас в теме
(7) НужноПечататьМакет тоже использую. Но только для встроенных печатных форм. Во внешних печатных формах имеет смысл использовать только если имеется больше одного макета в обработке и больше одной команды печати.

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

Функция ПечатнаяФормаПриходТоваров(МассивОбъектов, ОбъектыПечати)
    
    ТекстЗапроса = 
    "ВЫБРАТЬ
    |    РЗ_АктОбмера.Ссылка КАК Ссылка,
    |    МАКСИМУМ(РЗ_АктОбмера.Номер) КАК Номер,
    |    МАКСИМУМ(РЗ_АктОбмера.Дата) КАК Дата,
    |    МАКСИМУМ(РЗ_АктОбмера.Организация) КАК ОрганизацияПредставление,
    |    МАКСИМУМ(РЗ_АктОбмера.Ответственный) КАК Ответственный,
    |    РЗ_АктОбмераТовары.НомерСтроки КАК НомерСтроки,
    |	 РЗ_АктОбмераТовары.Номенклатура КАК Номенклатура,
    |    СУММА(РЗ_АктОбмераТовары.Количество) КАК Количество,
    |    РЗ_АктОбмераТовары.Порода КАК Порода,
    |    РЗ_АктОбмераТовары.Сорт КАК Сорт,
    |    РЗ_АктОбмераТовары.Длина КАК Длина,
    |    РЗ_АктОбмераТовары.Диаметр КАК Диаметр,
    |    РЗ_АктОбмераТовары.Объем КАК Объем,
    |    МАКСИМУМ(РЗ_АктОбмера.Контрагент) КАК ПолучательПредставление,
    |    МАКСИМУМ(РЗ_АктОбмера.Заготовитель) КАК Заготовитель,
    |    МАКСИМУМ(РЗ_АктОбмера.Водитель) КАК Водитель,
    |    МАКСИМУМ(РЗ_АктОбмера.Транспорт) КАК Транспорт,
    |    МАКСИМУМ(РЗ_АктОбмера.Грузоотправитель) КАК ОтправительПредставление,
    |    МАКСИМУМ(РЗ_АктОбмера.ПринятыйОбъем) КАК Объем,
    |    МАКСИМУМ(РЗ_АктОбмера.НомерНакладной) КАК НомерНакладной,
    |    МАКСИМУМ(РЗ_АктОбмера.ДатаНакладной) КАК ДатаНакладной
    |ИЗ
    |	 Документ.РЗ_АктОбмера.Товары КАК РЗ_АктОбмераТовары
    |	 ЛЕВОЕ СОЕДИНЕНИЕ Документ.РЗ_АктОбмера КАК РЗ_АктОбмера
    |		 ПО АктОбмераТовары.Ссылка = РЗ_АктОбмера.Ссылка
    |ГДЕ
    |    РЗ_АктОбмераТовары.Ссылка В(&СписокДокументов)
    |ИТОГИ ПО
    |	Ссылка";
    
    Запрос = Новый Запрос(ТекстЗапроса);
    Запрос.УстановитьПараметр("СписокДокументов", МассивОбъектов);
    
    Шапка = Запрос.Выполнить().Выбрать();
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.КлючПараметровПечати = "Накладная";
    
    Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РЗ_АктОбмера.ПФ_MXL_НакладнаяНаПриходТовара");
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьШапка = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	ОбластьПодписи = Макет.ПолучитьОбласть("Подписи");
	
	ВыборкаИтог = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока ВыборкаИтог.Следующий() Цикл
		ЗаполнитьЗначенияСвойств(ОбластьЗаголовок.Параметры, ВыборкаИтог);
		ТекстЗаголовка = СформироватьЗаголовокДокумента(ВыборкаИтог, НСтр("ru = 'Приходный ордер на товары'"));
		ОбластьЗаголовок.Параметры.ТекстЗаголовка = ТекстЗаголовка;
		ТабличныйДокумент.Вывести(ОбластьЗаголовок);
		ТабличныйДокумент.Вывести(ОбластьШапка);
		Выборка = ВыборкаИтог.Выбрать();
		Пока Выборка.Следующий() Цикл
			ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, Выборка);
            ОбластьСтрока.Параметры.Номенклатура = "" + Выборка.Номенклатура + " ("+ РЗ_Лесозавод.ОпределитьХарактеристикуНоменклатуры(Выборка.Номенклатура,Выборка.Порода,Выборка.Сорт,Выборка.Длина,Выборка.Диаметр,Ложь)+")";
			ТабличныйДокумент.Вывести(ОбластьСтрока);
		КонецЦикла;
		ЗаполнитьЗначенияСвойств(ОбластьПодвал.Параметры, ВыборкаИтог);
		ТабличныйДокумент.Вывести(ОбластьПодвал);
		ЗаполнитьЗначенияСвойств(ОбластьПодписи.Параметры, ВыборкаИтог);
		ТабличныйДокумент.Вывести(ОбластьПодвал);
		ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
	КонецЦикла;
    
    Возврат ТабличныйДокумент;
    
    
КонецФункции
Показать


Не уверен что это производительней, но в плане универсальности точно лучше.
9. Cyberhawk 123 31.07.20 18:28 Сейчас в теме
в одной транзакции обращения к базе данных
Это что такое?
10. andy_zhav 181 31.07.20 23:05 Сейчас в теме
(9)имею в виду одним запросом или пакетом запросов
Оставьте свое сообщение

См. также

Мастер печатных форм v 3.1 Промо

Универсальные печатные формы v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Создание печатных форм "с нуля" за несколько минут. Моментальная отладка. Не требует знания встроенного языка 1С.

8 стартмани

07.03.2014    92485    400    kser87    221    

Новый взгляд на старое. Внешняя печатная форма – НАСТРАИВАЕМАЯ

Универсальные печатные формы Печатные формы документов Оптовая торговля v8 ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия УУ Абонемент ($m)

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

2 стартмани

21.10.2020    535    4    user1209971    4    

Шаблон ВПФ (внешней печатной формы) для вывода в Word

БСП (Библиотека стандартных подсистем) Универсальные печатные формы v8 1cv8.cf Абонемент ($m)

Шаблон для разработки ВПФ для БСП версии 3.1. Основные возможности: 1. Описание требуемых для вывода данных при помощи СКД. 2. Вывод в документ средствами БСП (не используется COM-соединение с word) 3. Реализована форма для тестирования без подключения обработки к БСП и без помещения документа-макета в обработку.

1 стартмани

10.10.2020    804    1    Gladkov_Anton    4    

Печать WORD из 1С, управляемого приложения (еще один вариант)

Универсальные печатные формы v8 v8::СПР ЗУП3.x Россия Абонемент ($m)

Вариант произвольный для печати кадровых и прочих документов, где много слов и мало данных. Минимальное использование БСП. Предназначен для ленивых программистов типа меня, кому лень набирать много текста в печатных формах и которые предпочитают брать готовые документы в формате WORD у кадровиков и юристов и делать из них с минимальными изменениями печатные формы.

1 стартмани

02.10.2020    848    6    user810754    2    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП Промо

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    27002    53    kwazi    6    

Шаблон внешней печатной формы с вводом параметров

Универсальные печатные формы v8 Розница УНФ ERP2 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m)

В ряде случаев, перед тем как послать документ на печать, требуется внести некоторые параметры. Именно это позволяет сделать данный шаблон печатной формы.

1 стартмани

01.10.2020    800    4    LamerSoft    0    

Отладочная форма для внешней печатной формы

Универсальные печатные формы v8 Розница УНФ ERP2 ЗКГУ3.0 БП3.0 УТ11 КА2 ЗУП3.x Абонемент ($m)

Форму возможно подцепить (просто скопировав в вашу печатку и назначив формой обработки), подходит под управляемый интерфейс конфигурации на базе БСП 2.2 и выше с типом команды вызова серверного метода. С легкими модификациями подойдет под любой вызов.

1 стартмани

22.09.2020    776    2    LamerSoft    0    

Генератор внешних печатных форм

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Консоль запросов Прочие инструменты разработчика Универсальные печатные формы v8 1cv8.cf Абонемент ($m)

Генератор печатных форм - инструмент для создания внешних печатных форм в режиме предприятия с минимальным написанием кода

3 стартмани

18.09.2020    1484    10    andy_zhav    7    

Конструктор внешних печатных форм NEW beta (обычные и управляемые приложения!) Промо

Универсальные печатные формы Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Версия NEW beta=) "Конструктор внешних печатных форм" максимально автоматизирует процесс создания внешних печатных форм на основе типовых. Создание внешней печатной формы займет от секунд до пары минут! Теперь и на управляемых приложениях =)

1 стартмани

18.11.2012    68787    276    SeiOkami    182    

[FREE] Универсальная команда печати элемента (карточки справочника)

Универсальные печатные формы v8 1cv8.cf Абонемент ($m)

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

1 стартмани

03.09.2020    1080    0    pridecom    0    

Оптимизация пакетной печати из 1С в MS Word

Пакетная печать Производительность и оптимизация (HighLoad) MS Office БСП (Библиотека стандартных подсистем) v8 ЗУП3.x Абонемент ($m)

Опыт оптимизации пакетной печати из 1С ЗУП 3.1 в MS Word. Об осторожности использования БСП. Внешние обработки: до и после оптимизации.

1 стартмани

14.08.2020    1435    1    info1i    5    

Дополнительная система формирования подписей и печатей. Располагает картинки под текстом

Универсальные печатные формы v8 1cv8.cf Россия Абонемент ($m)

Позволяет организовать дополнительную систему печатей и подписей в существующих печатных формах. Также умеет преобразовывать ячейки под картинками в объекты для правильного отображения картинок

7 стартмани

28.06.2020    1804    0    JackGamer_    2    

http сервис, возвращающий печатную форму

Печатные формы документов Прочие инструменты разработчика v8 УТ11 Россия Абонемент ($m)

Расширение, которое по get запросу в виде: http:///hs/WSPrint/Download/?UUID=&IDPF=&format= возвращает указанную печатную форму.

1 стартмани

09.04.2020    3185    5    user1350020    0    

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

Универсальные печатные формы Печатные формы документов v8 УТ11 Россия УУ Абонемент ($m)

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

3 стартмани

26.02.2020    1903    0    putnikvp    3    

Печать штрихкода для любой конфигурации на платформе 8.3

Универсальные печатные формы v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Платформы младше 8.3.12.1313 использовали ActivX для печати ШтрихКода, сейчас технология изменилась. Эта обработка - замена старого механизма на новый.

2 стартмани

07.11.2019    11460    38    ah7777777    4    

Файл *.ODT в качестве шаблона для заполнения данными из базы

Универсальные печатные формы Внешние источники данных v8 1cv8.cf Абонемент ($m)

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

1 стартмани

25.10.2019    4177    5    iones    2    

Вывод QR-кода типовыми средствами.

Универсальные печатные формы Сканер штрих-кода Универсальные функции v8 КА1 УТ10 УПП1 Абонемент ($m)

Вывод QR-кода типовыми средствами. На данный момент очень часто нужно вывести в печатную форму QR-код. Показываю как на примере типового кода из УТ11 это сделать. Можно использовать в любых конфигурациях с обычными формами.

1 стартмани

21.10.2019    17788    31    Емельянов Алексей    47    

Печать табличного документа через типовой механизм печати БСП (3.0) ОбщаяФорма.ПечатьДокументов

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

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

1 стартмани

16.10.2019    6251    3    IncomeGroup    6    

Шаблон разработки печатных форм и подключения к конфигурациям на БСП 2.х и БСП 3.0

Печатные формы документов БСП (Библиотека стандартных подсистем) Расширения v8 1cv8.cf Абонемент ($m)

«Вместо поставки внешних печатных форм в виде внешних обработок рекомендуется вести их разработку с помощью расширений конфигурации.» [ИТС, БСП гл. 3.38 Печать] У меня задачи типа «Требуется разработать печатную форму …» появляются регулярно, но с временными интервалами. Что бы вести разработку единообразно, для конфигураций на БСП, я заготовил шаблон для таких задачек, который позволяет мне сразу приступить к разработке макета и алгоритма формирования печатной формы, а «обертка» из БСП уже готова.

1 стартмани

04.10.2019    28540    49    tolX5    18    

Редактор-конструктор визиток

Универсальные печатные формы v8 Издательство, полиграфия, упаковка Абонемент ($m)

Интерактивный редактор-конструктор визиток / персональных карточек на основании макетов.

5 стартмани

16.06.2019    4801    4    eugenevk    6    

Подсистема справок (ЗУП 3.х)

Универсальные печатные формы Справки Зарплата Управление персоналом (HRM) Зарплата Управление персоналом (HRM) v8 v8::СПР ЗУП3.x БУ Абонемент ($m)

Подсистема справок внешней печатной формой для 1C: Зарплата и Управление Персоналом, редакция 3.х.

1 стартмани

25.04.2019    12482    22    🅵🅾️🆇    17    

Формирование WORD документов на основании шаблонов

Универсальные печатные формы v8 1cv8.cf Абонемент ($m)

Очередное решение формирования word документов на основании шаблонов. Отличие данного решение, что 1с работает не напрямую с WORD, а через приложение, что увеличивает скорость работы.

4 стартмани

13.12.2018    6906    2    MaxxiMiliSan    2    

Вывод QR-кода типовыми средствами. Управляемое и обычное приложение

Универсальные печатные формы v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Печать QR кода с использованием лишь одной обработки. Подойдет как при разработке своей конфигурации, так и при использовании типовой. Тестировал на 1С: Реестр государственного и муниципального имущества, редакция 3.0 (3.0.2.9), 1С: УНФ 1.6.19.203

1 стартмани

12.12.2018    5477    12    user785225    2    

Конструктор Word для типовой конфигурации 1C: Зарплата и управление персоналом 3.1.6

Универсальные печатные формы Управление персоналом (HRM) Управление персоналом (HRM) v8 v8::СПР ЗКГУ3.0 ЗУП3.x Россия БУ Абонемент ($m)

Внешняя печатная форма Для создания Word документов практически для всех документов и даже белее. ЗиК 3.1.6, 3.1.7.

2 стартмани

09.06.2018    11564    39    nkp14108    13    

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

Практика программирования Универсальные печатные формы v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Расширение БСП по реализации механизма пользовательских макетов для обработок внешних печатных форм.

2 стартмани

05.03.2018    18703    15    simy4    14    

Простой вывод табличного документа в общую форму "Печать документов", с использованием БСП

Универсальные печатные формы v8 УТ11 Россия Абонемент ($m)

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

1 стартмани

08.12.2017    29048    13    dmitry1975    19    

Заполнение шаблона Word на сервере, без использования MS Office (docx -> zip -> xml). Предусмотрен вывод табличных частей

Универсальные печатные формы Инструментарий разработчика v8 v8::УФ 1cv8.cf Абонемент ($m)

Шаблон в Word, управляемые формы. Создание заполнение документа Word (docx -> zip -> xml) по шаблону на сервере без использования MS Office. Предусмотрен вывод табличных частей.

2 стартмани

04.10.2017    27280    197    artms    35    

Универсальная печать в MS Word

Универсальные печатные формы Печатные формы документов v8 1cv8.cf Россия Абонемент ($m)

Обработка «Управление печатью» позволяет создавать печатные формы для любых справочников и документов в формате MS Word.

1 стартмани

11.05.2017    11937    17    ivashka    0    

Пример печати в файл формата jpeg через COMОбъект PDFCreator версии 2.0 и выше

Универсальные печатные формы v8 1cv8.cf Украина Абонемент ($m)

Пример вывода печатной формы в файл формата jpeg через COMОбъект PDFCreator версии 2.0 и выше. Можно переделать для сохранения в нужный формат, например .pdf, путем небольших изменений.

1 стартмани

28.02.2017    9151    37    ironn    3    

Штрих-код в Word из 1С

Универсальные печатные формы Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Часто возникает задача формировать документы Word из 1С. Это могут быть договоры с контрагентами, какие-либо спецификации, акты выполненных работ. Для поиска в базе 1С электронного документа, аналога бумажного документа, во многих организациях используют штрихкодирование документов. Эта статья описывает, как можно создать штрих-код в документе Word при работе с ним по COM-соединению.

1 стартмани

22.12.2016    18697    30    born    2    

Шаблон (внешняя печатная форма) для печати в Word под БСП

Универсальные печатные формы БСП (Библиотека стандартных подсистем) v8 1cv8.cf Украина Абонемент ($m)

Пример внешней печатной формы для печати в MS Word для БСП 2.2. Обработка печатает данные в файл MS Word, используя подсистему БСП 2.2.

1 стартмани

13.10.2016    22624    139    laduk    25    

Конструктор внешних печатных форм NEW beta (обычные и управляемые приложения!)

Универсальные печатные формы Инструментарий разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Исходная обработка http://infostart.ru/public/162019/, здесь просто исправлены некоторые процедуры и функции для управляемого приложения. (Публикуется с согласия автора SeiOkami) 12.07.2016 - Версия 4.3 - убрал модальность для управляемой формы, изменена встроенная ВПФ . 23.11.2016 - Версия 4.4 - изменена встроенная ВПФ . 03.04.2018 - Версия 4.7 - исправлено сохранение ВПФ в клиент-серверном варианте от vshish. 11.05.2018 - Версия 4.8 - исправление от VovkaPutin плюс убрал из текста модуля ВПФ директивы препроцессора (то, что начинается с "#"), убрал модальность при открытии ВПФ из конструктора. 17.10.2019 - Версия 5.1 - тестировалось на платформе 8.3.15.1700, БП 3.0.73.54

1 стартмани

10.07.2016    52112    500    Alex_E    135    

Шаблон нетиповой внешней печатной формы под управляемое приложение (8.3)

Универсальные печатные формы Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

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

1 стартмани

07.06.2016    11467    17    Hamsik    2    

Заготовка для вывода данных из 1С в WORD

Универсальные печатные формы Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Создание обработки для печати данных из 1С в WORD за несколько шагов.

10 стартмани

18.01.2016    18653    17    binex    19    

Легкое создание пользователем внешних печатных форм методом Drag & Drop

Универсальные печатные формы Печатные формы документов v8 1cv8.cf Абонемент ($m)

Универсальная внешняя печатная форма (ПФ), которая позволяет пользователю, без знаний программирования и не заходя в конфигуратор, создать ПФ любого документа или справочника в Microsoft Word или OpenOffice Writer методом перетаскивания (Drag & Drop). Можно создавать любые ПФ с выводом табличных частей, реквизитов документа, а также вложенных реквизитов и контактной информации. Не требует изменения конфигурации. Работает на версии платформы 8.3 в типовых конфигурациях на управляемых формах (например, Бухгалтерия 3.0, УТ 11, УНФ, Розница, Документооборот), а также и в других конфигурациях на УФ, построенных на БСП.

2 стартмани

04.01.2016    39699    174    CyberCerber    40