Страница 1 из 1

Собственная программа в бланке документа.

СообщениеДобавлено: Чт дек 04, 2014 2:17 pm
dmitry
Начиная с версии 4.2.26 в конструкторе бланков можно добавить логику, написать программу.
Например:
1. Чтобы в накладной печатался текст о задолженности покупателя.
2. Чтобы была ссылка на связанный документ ("По счету №...").
3. Чтобы при связи с оплатой был текст о сумме аванса.

Общие действия:
- В бланке добавить пустую рамку для текста, присвоить ей имя "Note".
- Нажать "Программа" и вставить текст, выбранный ниже.
- Закрыть (сохранив изменения) и снова нажать "Печать".

2.png
2.png (21.04 КБ) Просмотров: 3705

Варианты:

1. Долг покупателя:

Note.Text = ""
Dim Op As Predpr.Doc = Frm.Op
Dim Pokup As Predpr.Person = Op.DocPerson
If Pokup Is Nothing Then Exit Sub
Dim Sum as Decimal
Sum = Pokup.GetDebt("Db", Op)
If Sum>0 Then Note.Text = "Ваш долг без учета этой накладной: " & Sum.ToString("0.00")


2. Ссылка "По счету №...":

Note.Text = ""
Dim Op As Predpr.Doc = Frm.Op
Dim LinkOp as Predpr.Doc = Op.GetLinkDoc(3)
If LinkOp is nothing Then Exit Sub
Note.Text="За рахунком № " & LinkOp.DocNum & " вiд " & LinkOp.DocDate
'Note.Text="По счету № " & LinkOp.DocNum & " от " & LinkOp.DocDate


3. Про аванс или полную оплату:

Note.Text = ""
Dim Op As Predpr.Doc = Frm.Op
Dim LinkOp as Predpr.Doc
LinkOp = Op.GetLinkDoc(6)'Касса
'LinkOp = Op.GetLinkDoc(4)'Банк
If LinkOp is nothing Then Exit Sub
If LinkOp.DocSum < Op.DocSum Then
Note.Text = "Получен аванс " & LinkOp.DocSum.ToString("0.00")
end if
If LinkOp.DocSum >= Op.DocSum Then
Note.Text = "Оплачено " & LinkOp.DocSum.ToString("0.00")
end if



P.S. Если в тексте будет ошибка, то при нажатии "Печать" появится ее описание, и строка, вызвавшая сбой, будет отмечена красным. Можно ее просто закомментировать (апостроф в начале строки), сохранить и снова нажать "Печать".

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Сб янв 03, 2015 7:45 pm
sanich42
Версию обновил, все вроде сделал, но в бланке нечего не изменилось

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Сб янв 03, 2015 10:09 pm
sanich42
Сумма аванса выходит на печать, а долг не получается

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Вс янв 04, 2015 2:30 pm
dmitry
sanich42 писал(а):Сумма аванса выходит на печать, а долг не получается

Это по разным покупателям? Если по одному и тому же, то если он внес аванс (предоплату), то долга действительно нет (без учета текущей накладной, которая печатается).

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Вт янв 06, 2015 10:41 pm
sanich42
Это по разным покупателям. Я внес в бланк функцию вывода суммы долга, все сохранил. Создал накладную, провел, вывел на печать, но надпись не появилась

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Ср янв 07, 2015 6:38 am
dmitry
Долг без учета текущей накладной, которая выводится на печать. Иначе в большинстве случаев было бы: "Итого 1000 грн. Долг 1000 грн", что не имеет смысла.

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Ср янв 07, 2015 11:39 am
sanich42
Ну НЕ выводится долг на печать. :( Может это связано с использованием нескольких валют?

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Ср янв 07, 2015 4:03 pm
vik
sanich42 писал(а):Ну НЕ выводится долг на печать. :( Может это связано с использованием нескольких валют?

Во вложении бланк аванс и долг должно выводить

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Чт янв 08, 2015 7:07 am
dmitry
sanich42 писал(а):Может это связано с использованием нескольких валют?

Таки да! Оказалось, что если в Справочники/Валюты отмечен $, то долг вычисляется в $, потом из него вычитается сумма текущей накладной в грн, и остается сумма <0. Исправлю в обновлении, которое выйдет сегодня-завтра.

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Вт янв 30, 2018 9:16 am
amg372
А все три варианта в одном бланке как сделать?

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Вт янв 30, 2018 1:38 pm
dmitry
Одну рамку для текста назвать например Note, вторую - Note2 и изменить это в тексте.

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Пт фев 02, 2018 12:53 pm
Василий
В справочнике "Партнеры" добавили клиентов и добавили
произвольное свойство "Скидка на услугу" тип данных число
(у разных клиентов она своя).
В бланк "Акт выполненных работ" по клиентам мы добавляем вывод
на печать значения данной произвольной скидки
"Заголовок - Кому - Свойство(Скидка)"

Вопрос: можно ли помощи собственной программы в бланке документа
выполнить расчет, чтобы итоговая сумма "=Сумма_ВСЕГО" была уменьшена
на это значение скидки и при печати было видны обе суммы, а в учет
попадала сумма уменьшенная на значение скидки ?

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Пт фев 02, 2018 3:21 pm
dmitry
Зачем так сложно, если персональная скидка предусмотрена как стандартное свойство.

1.png
1.png (11.64 КБ) Просмотров: 2401

Удалите созданное вами, чтобы не путаться. В бланке можно нарисовать рамку и указать данные "Скидка%" (в разделе Итоги/Текст).

2.png
2.png (21.55 КБ) Просмотров: 2401

Главное - скидка будет применяться не при печати, а сразу при заполнении документа. При печати будет конечная сумма с учетом скидки. Можно наоборот добавить начальную без скидки, но нужно ли это, или клиенту достаточно видеть процент скидки и результат?

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Пт фев 02, 2018 4:43 pm
Василий
Спасибо за ответ!
Но при фиксированном проценте значение скидки меняется от стоимости услуги,
можно как-то сделать так, чтобы скидка была фиксированной суммой, не
зависела от стоимости услуги и была разной у разных партнеров

Re: Собственная программа в бланке документа.

СообщениеДобавлено: Сб фев 03, 2018 9:50 am
dmitry
Понял: не процент, а сумма. Можно вписать такую подпрограмму, но не в бланке, а в шаблоне операции "Выполнены работы" (главное - вычисления, а в бланке добавим что угодно). Тогда действительно будет использоваться ваше свойство "Скидка на услугу".
Позвоните в понедельник, подключусь и сделаю.