|
v7: Условие в макете печатной формы |
☑ |
0
Asya666
02.03.21
✎
12:28
|
Доброго дня! поставлена задача чтобы в печ форму выводились на печать реквизиты физлица (с заполнением из карточки контрагента), если в накладной выбран частник, и соответственно чтобы для ИП и юриков выводился свой набор реквизитов (с заполнением из карточки контрагента) в ту же печ форму. Попыталась решить этот момент закинув в нужную ячейку печ формы такой текст:
?([Клиент.Форма] = [Перечисление.Формы.ЧЛ],
[Клиент]
Паспорт серии [СокрЛП(Клиент.ПаспортСерия)] № [СокрЛП(Клиент.ПаспортНомер)]
Выдан [СокрЛП(Клиент.ПаспортВыдан)], [СокрЛП(Клиент.ПаспортДата)]
Адрес: [СокрЛП(Клиент.Адрес)],
[Клиент] ОГРН [Клиент.ОГРН]
ИНН [Клиент.ИНН]
КПП [Клиент.КПП]
Р/с [Клиент.Расч_Счет]
в [Клиент.Банк]
БИК [Клиент.МФО]
Кор/с [Клиент.Корр_счет]
ОКОНХ [Клиент.КодОКОНХ]
ОКПО [Клиент.КодОКПО]
[Клиент.Должность]_________/[Клиент.ФИО])
В свойствах ячейки ставила тип и Выражение и Шаблон, все реквизиты указаны без ошибок. Нормального описания как правильно описывать условия в макетах так и не нашла на просторах интернета. При формировании печ формы выводит вышеуказанное выражение с расчитанными реквизитами там где это возможно, никакой ругани на некорректность выражения нет и выводит в качестве результата выражения (в одном из примеров) "ч.л. = ч.л.", то есть находит нужные значения, подставляет, но почему то не обрабатывает как Истину.
Люди добрые, помогите кто знает как это правильно должно работать?
|
|
1
Василий Алибабаевич
02.03.21
✎
12:32
|
(0) Две секции. Одна для Юрлиц, другая - для физлиц. В зависимости от типа контрагента выводим одну или другую. Например так :
Таб.ВывестиСекцию(?(Клиент.Форма = Перечисление.Формы.ЧЛ, "СекцияФ", "СекцияЮ"));
|
|
2
Mikeware
02.03.21
✎
12:32
|
это клюшки, это вам не снеговик
|
|
3
Asya666
02.03.21
✎
12:35
|
(1) Значит в самой секции так условие не описать чтоб проверка внутри была?
|
|
4
Андрей_Андреич
naïve
02.03.21
✎
12:36
|
(3) нет
|
|
5
Builder
02.03.21
✎
12:37
|
(3) Такие условия гораздо проще делать в модуле и выводить уже готовый текст.
Либо по секциям, либо просто формировать нужный текст.
|
|
6
Asya666
02.03.21
✎
12:37
|
спасибо)
|
|
7
Андрей_Андреич
naïve
02.03.21
✎
12:38
|
?(Клиент.Форма = Перечисление.Формы.ЧЛ, Шаблон(), Шаблон());
|
|
8
Злопчинский
02.03.21
✎
13:55
|
(0) Плохая практика.
вся логика д.б. в модуле. В Макете - выводить только готовые переменные.
все переменные макета вычислять в модуле печформы.
|
|
9
Злопчинский
02.03.21
✎
13:56
|
Восьмерочники такие смишные... ;-)
|
|
10
Mikeware
02.03.21
✎
14:03
|
(9) такой стиль.
хотя говнокодить можно на чем угодно...
|
|
11
hhhh
02.03.21
✎
21:49
|
(8) на самом деле это только в семерке такая хрень СокрЛП(Клиент.ПаспортСерия). В восьмерке выражения запрещены.
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший