Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ЗУП 3.1.8, БСП. Апофеоз печатных форм

ЗУП 3.1.8, БСП. Апофеоз печатных форм
Я
   1CIlya
 
17.12.18 - 15:49
Здравствуйте, друзья!

Постараюсь выражать мысли связанно, но что-то пока один поток сознания.
Имеем несложную задачу. В печатной форме приказа на отпуск (Т-6) вывести дополнительный абзац текста в том случае, когда работник написал заявление о предоставлении единовременного поощрения. Понять, что работник это заявление написал просто - реквизит шапки документа ПредоставитьЕдиновременнуюВыплатуКОтпуску.

Немного поковырявшись в том, как они переделали печать Т-6, понимаешь, что собственно вывод происходит в процедуре


Процедура ВывестиНаПечатьТ6(ДокументРезультат, ДанныеСсылок, МакетПечатнойФормы, ИдентификаторыМакета = Неопределено, ОбъектыПечати = Неопределено) Экспорт

    ...
    ЗарплатаКадрыОтчеты.ВывестиВДокументРезультатОбластиМакета(
                    ДокументРезультат, МакетПечатнойФормы, "Шапка,Работник,Подвал",
                    ДанныеНаПечать,
                    ДанныеВычисляемыеНаХоду);
    ...
КонецПроцедуры


Здесь последовательность областей макета перечислена через запятую и используется очень простая процедура БСП. Она заполняет область данными и выводит в ДокументРезультат.

Вопрос. Можно ли средствами БСП выводить область в зависимости от условия (стоит ли галка)? Желательно при этом сильно не ломать типовую.
 
 
   HawkEye
 
1 - 17.12.18 - 15:50
(0) через "е" пишется....
   1CIlya
 
2 - 17.12.18 - 16:07
Пока на ум приходит "обернуть" вызов процедуры. В своем модуле проанализировать стоит ли галка и в зависимости от этого сформировать последовательность областей.
   d4rkmesa
 
3 - 17.12.18 - 16:27
(0) Навскидку, через расширение с вызовом проверки &Перед переопределить макет печатной формы, нужное дополнение включить в шапку или подвал нового макета. Некрасиво, конечно.
   2S
 
4 - 17.12.18 - 16:46
то ли еще будет
   Alexandr_U1982
 
5 - 17.12.18 - 18:08
(0) Программный интерфейс подсистемы "Печать":
https://its.1c.ru/db/bsp302doc#content:3326:hdoc
   Alexandr_U1982
 
6 - 17.12.18 - 18:17
(0) Как вариант:

...
ЗарплатаКадрыОтчеты.ВывестиВДокументРезультатОбластиМакета(
    ДокументРезультат, МакетПечатнойФормы, "Шапка,Работник",
    ДанныеНаПечать,
    ДанныеВычисляемыеНаХоду);
    
Если ПредоставитьЕдиновременнуюВыплатуКОтпуску Тогда
    ЗарплатаКадрыОтчеты.ВывестиВДокументРезультатОбластиМакета(
        ДокументРезультат, МакетПечатнойФормы, "СвойНовыйАбзац",
        ДанныеНаПечать,
        ДанныеВычисляемыеНаХоду);
КонецЕсли;
    
ЗарплатаКадрыОтчеты.ВывестиВДокументРезультатОбластиМакета(
    ДокументРезультат, МакетПечатнойФормы, "Подвал",
    ДанныеНаПечать,
    ДанныеВычисляемыеНаХоду);
...

Если не хочешь ломать типовую, то делай либо расширение, либо внешнюю печатную форму.
   2S
 
8 - 18.12.18 - 09:32
(0) Типовую не ломай
Ежики очень сильно кололись после перехода на 3.1.8
   1CIlya
 
9 - 18.12.18 - 10:38
(6) Сделал почти тоже самое, спасибо! Только обернул, так меньше своего кода в типовом модуле.
   1CIlya
 
10 - 18.12.18 - 10:39
(8) Варианты? Пока только (3), но тут и сам автор считает, что еще подумать нужно.
 
 Рекламное место пустует
   1CIlya
 
11 - 18.12.18 - 11:02
(6)// ... либо внешнюю печатную форму.

В релизе 3.1.5 именно так и сделал. Аккуратно скопировал во внешнюю печатную форму несколько типовых процедур и "доработал напильником".

В релизе 3.1.8 архитектура вывода на печать сломала мне мозг. Из типового модуля вызов в отчет. В отчете только макет СКД, макет табличного документа в общих макетах. Далее снова в типовые модули, причем не локально несколько процедур как в 3.1.5, а ловкой рукой "размазано" по куче модулей. Все эти процедуры к себе в обработку не забрать.

В итоге подсистема призванная к сокращению вмешательства в типовой код не оставляет иного и, перепробовав несколько вариантов, понимаешь, что проще всего - вмешаться в типовой код.

Минутка уныния, господа...
   Alexandr_U1982
 
12 - 18.12.18 - 11:16
(11)Печатная форма от 3.1.5 должна продолжать работать и в 3.1.8.
   Alexandr_U1982
 
13 - 18.12.18 - 11:17
+(12)Внешняя печатная форма
   Alexandr_U1982
 
14 - 18.12.18 - 11:18
(11) Перенос печатных форм в отчеты на СКД обусловлен вот этим:
https://its.1c.ru/db/updinfo#content:588:1:issogl1_1

В программе имеется возможность вносить определённые изменения в макеты печатных форм и отчётов самим пользователем, без изменения конфигурации.
В версии 3.1.8 эти возможности существенно расширены. Теперь через раздел "Настройка" – "Сервис" – "Настраиваемые печатные формы" можно вывести в некоторые макеты множество различных реквизитов, в том числе добавленных самостоятельно в качестве дополнительных.

После этого добавленное поле можно разместить непосредственно в печатной форме. Это можно сделать разными способам:
•или перенести поле в нужное место формы, удерживая его курсором мыши;
•или в контекстном меню (правая кнопка мыши на поле) нажать "Копировать идентификатор", затем аналогично в нужно месте печатной формы нажать "Вставить идентификатор"

•или впечатать идентификатор в печатную форму вручную
При этом в свойствах ячейки печатной формы свойство "Заполнение" должно быть установлено как "Параметр" (или "Шаблон", если в ячейку кроме поля требуется впечатать текст, или же используется несколько полей – каждое поле должно быть заключено в квадратные скобки).
Имеется возможность добавить собственное поле, заполняемое на основании доступных полей.
И т.д. и т.п.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует