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

30.09.23

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

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

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

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

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

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

 

 

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

 


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

 

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

 

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

....

 

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

 

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

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

 

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

word БСП

См. также

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

Синтакс-помощник БСП - cправочник по библиотекам стандартных подсистем и электронных документов. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП и БЭД.

1800 руб.

21.11.2024    7887    39    24    

43

Анализ учета БСП (Библиотека стандартных подсистем) 1С v8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

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

22.05.2025    2430    100    seperblunt    8    

22

Работа с интерфейсом БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист 1С v8.3 1C:ERP Бесплатно (free)

В этой статье я расскажу, как в конфигурации 1С:ERP 2.5 при начале работы системы настроить открытие своих нетиповых форм (в том числе и из внешних обработок). Данную методику можно использовать как на тонком клиенте, так и на мобильном или веб-клиенте, а также в мобильном приложении.

12.05.2025    2482    PROSTO-1C    1    

16

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

Наткнулся на костыль по работе с ролями. Хочу поделиться, как не попасть на это странное поведение БСП.

07.05.2025    6089    dsdred    32    

87

БСП (Библиотека стандартных подсистем) Обновление 1С Программист 1C:ERP Бесплатно (free)

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

29.04.2025    2615    krasnoshchekovpavel    7    

18

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

Описание способа создания глобального обработчика оповещений (событие формы), не привязанного к какой-то конкретной форме.

01.04.2025    1716    krasnoshchekovpavel    0    

10

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

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

24.03.2025    2398    GeraltSnow    6    

32

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

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

10.02.2025    5858    John_d    24    

56
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 163 02.10.23 15:15 Сейчас в теме
(1) да, то решение мне больше нравится. И оно подходит и для других способов формирования. Только вот, мне не удалось найти его поиском вовремя :)
3. Aleskey_K 35 02.10.23 16:55 Сейчас в теме
(2) Ваше решение тоже хорошее, пригодится многим.
6. YA_715164682 08.07.25 12:08 Сейчас в теме
(2) Здравствуйте! Подскажите, а как в колонтитул вывели Заказчик и Подрядчик? Бьюсь с этим, пока нижний колонтитул пустой. Нигде информацию не нашел
9. unknown181538 163 08.07.25 13:17 Сейчас в теме
(6) В моему случае в колонтитул нужно было внести фиксированный текст "Заказчик______" и "Подрядчик____" прямо так я его туда и вписал в макете :) Т.е. прям в ворде написал текст.
12. YA_715164682 10.07.25 10:58 Сейчас в теме
(9) В том и дело, вписываю текст - а колонтитул пустой) Можете показать как области выводили? Нижний колонтитул тоже программно выводите?
13. unknown181538 163 10.07.25 13:37 Сейчас в теме
(12) Так вот же у меня код приведен в посте

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

А у вас разрывы страниц есть в документе?
Я, конечно, могу вам вообще весь модуль выслать... ну так, особого смысла не вижу.
11. unknown181538 163 08.07.25 14:08 Сейчас в теме
(6) Для начала попробуйте в макете туда просто текст внести в шаблоне. Если нужны параметры... Я бы предположил, что там так же, как в обычных областях.
4. user1719247 12.08.24 08:56 Сейчас в теме
Спасибо, оба решения нужны!
unknown181538; +1 Ответить
5. biimmap 2060 04.06.25 22:02 Сейчас в теме
Честно, вот несколько раз прочитал статью и вообще не понимаю что мне нужно сделать для вывода колонтитула на всех страницах.

Вот мои вопросы:
1. Что нужно написать в самом колонтитуле? Там также надо переменную задать? Мне надо вывести ФИО сотрудника.
2. Это ж не область получается!? А работа в коде везде показана как с областью. В моём случае на каждой странице там своя область. Макет договора довольно сложный.
3. Как заполнить параметр в колонтитуле. Ведь их может быть несколько! Один справа, второй слева.
4. Ну и финальное действие - вывод. В какой момент он выводится? После всех обычных областей? или в какой-то последовательности?

Буду благодарен если ответите.
unknown181538; +1 Ответить
7. unknown181538 163 08.07.25 13:13 Сейчас в теме
(5) странно, что мне не пришло оповещение о вашем комментарии. Сейчас попробую разобраться.
8. unknown181538 163 08.07.25 13:14 Сейчас в теме
(5) "В процедуре УправлениеПечатью внести изменения - добавить параметр НомерРаздела, и пробросить его в процедуру ПолучитьОбластьНижнегоКолонтитула" - тут у меня ошибка, я модуль, назвал процедурой.
10. unknown181538 163 08.07.25 14:07 Сейчас в теме
(5)
1) В моем случае переменные не использовались - нужно было вывести фиксированный текст. Переменные были не нужны.
2) Не знаю точно, как это вообще в Worde. Как я понимаю, БСП работает с одним верхним, другим - нижним. И на каждой странице свой колонтитул же не может быть. И да, колонтитул - не помечается как область в шаблоне. Просто добавляется колонтитул, а БСП работает с ним, как с областью. На этом я тоже спотыкался.
3) У меня не было параметров. Но, как я понимаю, там должно быть стандартно, как в БСП задумано. Моя задача была именно в том, чтобы его выводить или не выводить.
4) Эм... это ж колонтитул - его идея в том, что он внизу каждой страницы, а обычные области выводятся - как поместились... Собственно в чем я тут разобрался - что разрыв страницы делит документ на разделы.
В УправлениеПечатьюСлужебный.ПолучитьОбластьНижнегоКолонтитула пробрасывается доп. параметр. Обработка его уже есть в штатной процедуре. Уже не помню, о чем там речь - возможно, следует туда залезть и посмотреть.
Оставьте свое сообщение