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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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