Расширенные возможности бланков

Расширенные возможности бланков

Сообщение ruslabigboy » Пт фев 08, 2019 11:50 am

Доброго времени суток!
Понадобилось сделать расширенную таблицу, а вернее несколько таблиц в одном бланке. Возник вопрос - для чего нужна строка "Формула"? И какие возможности и функции можно там применить? Если там используются какие-то формулы - каков синтаксис?
Вложения
Формула.png
Скриншот окна
Формула.png (21.09 КБ) Просмотров: 117
ruslabigboy
 
Сообщения: 58
Зарегистрирован: Чт май 12, 2011 9:03 pm

Re: Расширенные возможности бланков

Сообщение dmitry » Пт фев 08, 2019 12:14 pm

Обычно это умножение или сложение других столбцов. Синтаксис - в квадратных скобках без знака "=".
Например, количество умножить на вес:

1.png
1.png (11.74 КБ) Просмотров: 115
dmitry
Разработчик
 
Сообщения: 3016
Зарегистрирован: Чт янв 27, 2011 3:43 pm

Re: Расширенные возможности бланков

Сообщение ruslabigboy » Пт фев 08, 2019 8:13 pm

Спасибо! А можно в них использовать переменные из программы бланка?
ruslabigboy
 
Сообщения: 58
Зарегистрирован: Чт май 12, 2011 9:03 pm

Re: Расширенные возможности бланков

Сообщение dmitry » Пт фев 08, 2019 10:21 pm

Можно. Но нужно понять, что требуется получить, наверняка есть более простое решение.
dmitry
Разработчик
 
Сообщения: 3016
Зарегистрирован: Чт янв 27, 2011 3:43 pm

Re: Расширенные возможности бланков

Сообщение ruslabigboy » Сб фев 09, 2019 6:51 am

Смотрите, задача следующая. В бланке счета создается договор на обслуживание клиента. Существует единичная расценка за услугу, количество услуг и срок договора. Напрмер, услуга -"обслуживание компьютерной техники", стоимость - 20 грн/ед, всего 100 компьютеров, договор на год. В итоге я создаю счет с позицией - "обслуживание компьютерной техники", количество - "1200" (100*12), цена за ед - 20 грн, сумма - 24 000 грн. Получаю суммарную годовую стоимость договора, потом (в течение года) делаю акты выполненных работ помесячно, закрывая стоимость договора.
Теперь задача. Клиенту необходим развернутый расчет стоимости. Для этого в бланке договора (счета) необходимо создать две таблицы:
1. Расчет единичной стоимости за месяц
2. Расчет годовой стоимости.
Срок действия договора - тоже вопрос - я могу ввести произвольное свойство и заполнить его - в виде числового значения. Хотя удобнее было бы его вычислить. В произвольных свойствах документа есть даты - начало действия и срок окончания действия - можно ли как-то получить разницу из них? В месяцах?
Вложения
Додаток.png
Додаток.png (50.65 КБ) Просмотров: 105
ruslabigboy
 
Сообщения: 58
Зарегистрирован: Чт май 12, 2011 9:03 pm

Re: Расширенные возможности бланков

Сообщение dmitry » Сб фев 09, 2019 8:25 am

Вариант решения: заполнять в счете 2 позиции с разным типом (например одно - "Услуга", другое - "Изделие в ремонте").
В бланке две таблицы будут отличаться свойством "Фильтр" (по типу объекта учета).

Вот заполнение:

1.png
1.png (12.49 КБ) Просмотров: 103

Вот бланк:

2.png
2.png (20.6 КБ) Просмотров: 103

Прикрепил его ниже (по расширению фалов позволяет только архивы), извлечь в PrintForm.
Вложения
Дог.rar
(1011 байт) Скачиваний: 2
dmitry
Разработчик
 
Сообщения: 3016
Зарегистрирован: Чт янв 27, 2011 3:43 pm

Re: Расширенные возможности бланков

Сообщение ruslabigboy » Сб фев 09, 2019 3:06 pm

Так тоже пробовал, но не подходит.
1. Во-первых - теряется сумма договора.
В вашем варианте получается три разные суммы: первая - сумма "Услуг", вторая - сумма "Изделий в ремонте" и третья - общая сумма документа. Из них мне нужны первые две. Третья вообще не нужна. Насколько я понимаю - первые две суммы есть только в итогах таблицы - вычленить я их не могу в виде поля или переменных?
2. Во-вторых - желательно обе суммы иметь в виде расшифровки суммы прописью (или хотя бы одну). В вашем варианте я буду иметь возможность получить прописью только общую сумму документа, которая мне не нужна.
3. Кроме того, эти суммы фигурируют и по тексту документа - в текстовых вставках. Как эти суммы мне вычленить (в виде переменной или еще как-то)? Я не придумал.
Вот вкратце так.

Как я сделал сейчас.
1. Я заполняю полностью правильно документ - правильные позиции, количество (за год) и стоимость. Имею верную сумму договора, которую могу применять везде по тексту, в том числе и получить ее прописью.
2. Вставляю таблицу. Колонку количество (где содержится годовое количество) делаю нулевой ширины. Колонку месячного количества вычисляю, разделив колонку Количества за год на 12. Колонку стоимость - как обычно, и колонку сумма - перемножаю месячное количество и стоимость.
3. При этом эти же цифры я могу получить параллельно в программе бланка, разделив сумму договора и количество на 12 - и дальше применять везде где мне надо.
4. Вторую таблицу сделал в виде текстовых полей с границами, подогнал одно к другому. В текстовом поле документа (примечание, текст или другом) прописываю - как называется Месячная услуга. В одно поле "таблицы" вставляю примечание, во второе - "12", в третье - месячную стоимость, в 4 - сумму. Внизу в тексте получаю сумму цифрами и прописью.
В принципе - разово такое решение устраивает.
Но! Есть ряд партнеров, где договор не на год... А, например, на первый квартал и на 2-4 кварталы, или на 4 месяца... По логике - можно сделать разные бланки - на месяц,два и т.д., но хотелось бы универсальнее...
Вот если бы можно было значение столбца таблицы делить на переменную из программы или на произвольное свойство - вот тогда бы вообще было бы круто, и все бы автоматизировалось. И если бы можно было бы одну дату документа вычесть из другой даты и получить количество месяцев - еще автоматизированнее.
ruslabigboy
 
Сообщения: 58
Зарегистрирован: Чт май 12, 2011 9:03 pm

Re: Расширенные возможности бланков

Сообщение dmitry » Сб фев 09, 2019 10:16 pm

Переменная, означающая число месяцев от этого документа до конца года (вставить в программу бланка):
Код: Выделить всё
Dim Op As Predpr.Doc = Frm.Op

Dim DtMax as New System.DateTime(Op.DocDate.Year,12,31)

Dim Days as Integer = DtMax.Subtract(Op.DocDate).Days

Dim Monts as Integer = Days/30

Microsoft.VisualBasic.Msgbox ("Месяцев = " & Monts)

(Потом закомментировать или удалить Microsoft.VisualBasic.Msgbox).
dmitry
Разработчик
 
Сообщения: 3016
Зарегистрирован: Чт янв 27, 2011 3:43 pm

Re: Расширенные возможности бланков

Сообщение ruslabigboy » Вс фев 10, 2019 4:28 pm

Спасибо, Дмитрий!
Уточнение - а можно взять два произвольных свойства документа (начало действия и конец действия) и получить разницу между ними?
И еще - как в формулах таблицы использовать переменные и/или данные произвольных свойств?
ruslabigboy
 
Сообщения: 58
Зарегистрирован: Чт май 12, 2011 9:03 pm

Re: Расширенные возможности бланков

Сообщение ruslabigboy » Пн фев 11, 2019 11:37 am

А вот так тоже будет правильно? Нету здесь подвохов:
Код: Выделить всё
Dim PeriodTest as Integer

PeriodTest = Microsoft.VisualBasic.DateDiff("m", Op.Params("Начало_действия"), Op.Params("Срок_действия"))+1

Microsoft.VisualBasic.Msgbox ("Месяцев = " & PeriodTest)

При этом понимается, что свойства документа "Начало_действия" и "Срок_действия" - имеют формат даты.
Вроде выдает правильно. Теперь осталось разобраться, как применить переменную в формуле таблицы
ruslabigboy
 
Сообщения: 58
Зарегистрирован: Чт май 12, 2011 9:03 pm

Re: Расширенные возможности бланков

Сообщение dmitry » Пн фев 11, 2019 3:18 pm

Добавить строку:

Код: Выделить всё
GCol1_x.Formula="[n] * " & PeriodTest

Где x - номер столбца, в который вставить формулу, n - номер столбца, который умножить на число месяцев.
Например, в столбце 5 умножить столбец 4 на число месяцев: GCol1_5.Formula="[4] * " & PeriodTest

Если что-то не получится, пришлите файл бланка на pr-4@ukr.net
dmitry
Разработчик
 
Сообщения: 3016
Зарегистрирован: Чт янв 27, 2011 3:43 pm

Re: Расширенные возможности бланков

Сообщение ruslabigboy » Пн фев 11, 2019 6:06 pm

Я правильно понял - я вставляю не в программу бланка и не в поле формулы ячейки таблицы? А вставляю именно в файл бланка - например открыв его блокнотом?
Grid.png
Grid.png (106.2 КБ) Просмотров: 61

После такой процедуры - бланк блокируется (((
Error.png
Error.png (4.9 КБ) Просмотров: 61

Что-то не так делаю? Или бланк прислать?

И еще нюанс, может будет полезно кому-то. Можно в тексте получить желаемый формат числа (например суммы счета):
Код: Выделить всё
Name.text="     5.4. Загальна сума договору складає " & Microsoft.VisualBasic.FormatNumber(Op.DocSum, -1, 0, 0, -1) & " грн. (ПДВ не передбачений)."

В итоге в поле с именем Name получим готовую фразу: " 5.4. Загальна сума договору складає 24 000,00 грн. (ПДВ не передбачений)." - с дробной частью и разделителем разрядов числа, чего не будет, если просто использовать Op.DocSum...

ПС. Дмитрий - а можно каким-то образом вызвать функцию, которая пропишет прописью произвольное число?
ruslabigboy
 
Сообщения: 58
Зарегистрирован: Чт май 12, 2011 9:03 pm

Re: Расширенные возможности бланков

Сообщение dmitry » Пн фев 11, 2019 7:14 pm

ruslabigboy писал(а):Я правильно понял - я вставляю не в программу бланка и не в поле формулы ячейки таблицы? А вставляю именно в файл бланка - например открыв его блокнотом?

Нет, в тексте программы, после присвоения значения переменной.

Замечание: судя по "не найден ...AppData/Local/Temp" и случайное имя файла - или вы пользуетесь очень старой версией, или нет прав на папку программы. Откомпилированный файл должен появляться в папке Predprinim4/Files/Temp с именем например Договор.dll.


ruslabigboy писал(а):Что-то не так делаю? Или бланк прислать?

Давайте.


ruslabigboy писал(а):ПС. Дмитрий - а можно каким-то образом вызвать функцию, которая пропишет прописью произвольное число?

Для денежных сумм (будет добавлять "грн" "коп"):

Код: Выделить всё
Predpr.SumToText.GetTextFromSum(100.99)

Для количества:

Код: Выделить всё
Predpr.SumToText.GetTextFromQnt(123)
dmitry
Разработчик
 
Сообщения: 3016
Зарегистрирован: Чт янв 27, 2011 3:43 pm

Re: Расширенные возможности бланков

Сообщение ruslabigboy » Пн фев 11, 2019 7:41 pm

Отправил бланк на почту.
Версия программы:
version.png
version.png (5.82 КБ) Просмотров: 56

Права вроде открывал с помощью сервисов в Предпринимателе - кнопочкой "Открыть доступ к папке"

Вот вставлено в программу:
Error.png
Error.png (23.75 КБ) Просмотров: 54
ruslabigboy
 
Сообщения: 58
Зарегистрирован: Чт май 12, 2011 9:03 pm

Re: Расширенные возможности бланков

Сообщение dmitry » Пн фев 11, 2019 9:35 pm

Хотя при нажатии "Тест" говорит, что имя переменной не объявлено (оно не объявлено в этом фрагменте кода, но есть в полном тексте файла), сохраняйте - все будет правильно.
Добавил эту строчку, нажал "Печать" - все работает.

1.png
1.png (36.95 КБ) Просмотров: 41
dmitry
Разработчик
 
Сообщения: 3016
Зарегистрирован: Чт янв 27, 2011 3:43 pm

След.

Вернуться в Использование программы

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 2