Вывод различных колонтитулов в разных разделах, при формировании печатной формы по шаблону Word новыми процедурами БСП

30.09.23

Разработка - БСП (Библиотека стандартных подсистем)

Необходимо было вывести колонтитулы на всех страницах, кроме последней.

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

Потратил много времени, полной информации нигде не нашел.

Для начала необходимо, чтобы разрыв разделов вообще был выведен в итоговый документ.

В шаблоне разрыв следует поместить между двумя областями

 

 

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

 


		Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьОбщая);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, МассивДанныхЗаполнения, Истина); 
		
		Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьРеквизиты);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, МассивДанныхЗаполнения, Истина); 

 

В процедуре УправлениеПечатью внести изменения - добавить параметр НомерРаздела, и пробросить его в процедуру ПолучитьОбластьНижнегоКолонтитула

 

Функция ОбластьМакета(СсылкаНаМакет, ОписаниеОбласти, НомерРаздела = 1) Экспорт
    
    Область = Неопределено;
    
    Если ОписаниеОбласти.ТипОбласти = "ВерхнийКолонтитул" Или ОписаниеОбласти.ТипОбласти = "ВерхнийЧетныйКолонтитул" 
        Или ОписаниеОбласти.ТипОбласти = "ВерхнийТитульныйКолонтитул" Тогда
        Область = УправлениеПечатьюСлужебный.ПолучитьОбластьВерхнегоКолонтитула(СсылкаНаМакет, ОписаниеОбласти.ИмяОбласти);
    ИначеЕсли ОписаниеОбласти.ТипОбласти = "НижнийКолонтитул"  Или ОписаниеОбласти.ТипОбласти = "НижнийЧетныйКолонтитул"  
        Или ОписаниеОбласти.ТипОбласти = "НижнийТитульныйКолонтитул" Тогда
        Область = УправлениеПечатьюСлужебный.ПолучитьОбластьНижнегоКолонтитула(СсылкаНаМакет, ОписаниеОбласти.ИмяОбласти, НомерРаздела);
    ИначеЕсли ОписаниеОбласти.ТипОбласти = "Общая" 
        Или ОписаниеОбласти.ТипОбласти = "СтрокаТаблицы"

....

 

Итого код печати

 

		ОбластьОбщая = Новый Структура;
		ОбластьОбщая.Вставить("ИмяОбласти", "Общая");
		ОбластьОбщая.Вставить("ТипОбласти", "Общая");          
		
		ОбластьРеквизиты = Новый Структура;
		ОбластьРеквизиты.Вставить("ИмяОбласти", "Реквизиты");
		ОбластьРеквизиты.Вставить("ТипОбласти", "Общая");          
		
		ОбластьНижнийКолонтитул = Новый Структура;
		ОбластьНижнийКолонтитул.Вставить("ИмяОбласти", "НижнийКолонтитул");
		ОбластьНижнийКолонтитул.Вставить("ТипОбласти", "НижнийКолонтитул");
		ОбластьНижнийКолонтитул.Вставить("НомерРаздела", 1);    
		
		ОбластьНижнийКолонтитул2 = Новый Структура;
		ОбластьНижнийКолонтитул2.Вставить("ИмяОбласти", "НижнийКолонтитул");
		ОбластьНижнийКолонтитул2.Вставить("ТипОбласти", "НижнийКолонтитул");
		ОбластьНижнийКолонтитул2.Вставить("НомерРаздела", 2);    

		Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьОбщая);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, МассивДанныхЗаполнения, Истина); 
		
		Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьРеквизиты);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, МассивДанныхЗаполнения, Истина); 
		
		Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьНижнийКолонтитул);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, МассивДанныхЗаполнения);
		
		Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьНижнийКолонтитул2, 2);
		УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, МассивДанныхЗаполнения);

 

word БСП

См. также

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1075    PROSTO-1C    0    

12

БСП (Библиотека стандартных подсистем) Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    977    PROSTO-1C    4    

10

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В статье рассмотрим пошаговую инструкцию создания дополнительного отчета с фоновым формированием результата.

04.10.2024    1826    MadRave    11    

23

БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

10.09.2024    1815    MadRave    1    

17

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

А что, если долгожданная реализация Паузы в 1С смутно напоминает старую, проверенную? А?!

06.09.2024    1252    n_mezentsev    10    

8

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Добавим дополнительные свойства в новый документ средствами БСП

02.09.2024    4102    John_d    10    

52

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

Всё больше организаций выбирает для серверов под 1С операционные системы Linux. Одним из отличий систем Windows и Linux является отсутствие COM объектов, которые зачастую использовались для формирования печатных форм офисных документов (Word). Конечно, можно выполнять печать и на клиенте, но есть риск импортозамещения. В работе у меня случались проблемы с зависанием процесса Word, поэтому я не люблю его использовать.

29.07.2024    5352    PROSTO-1C    12    

52
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Aleskey_K 35 02.10.23 09:04 Сейчас в теме
Вот тут https://infostart.ru/1c/articles/519190/ нашёл более простое решение, без программирования, почти ☺
Смысл в том, чтобы в колонтитуле ввести формулу вида: { IF { PAGE \* MERGEFORMAT } = { NUMPAGES \* MERGEFORMAT } "" "Поставщик" \* MERGEFORMAT }
unknown181538; +1 Ответить
2. unknown181538 158 02.10.23 15:15 Сейчас в теме
(1) да, то решение мне больше нравится. И оно подходит и для других способов формирования. Только вот, мне не удалось найти его поиском вовремя :)
3. Aleskey_K 35 02.10.23 16:55 Сейчас в теме
(2) Ваше решение тоже хорошее, пригодится многим.
4. user1719247 12.08.24 08:56 Сейчас в теме
Спасибо, оба решения нужны!
Оставьте свое сообщение