Подсчет суммы из полей датасета в отчете WORD

Добрый день!
Подскажите как реализовать подсчет суммы требуемых полей, вводимых при заполнении
карточки и как поставить полученное значение в следующий документ.(Подсчитать нужно из полей вводимых при заполнении бланка заказа и подставить в акт)

Нравится

6 комментариев

Следует учесть, что Word отчет является пользовательским и позволяет выводить только значения, которые уже записаны в базу.
Для данной реализации Вам необходимо создать дополнительное поле в карточке, куда будут записываться результаты вычислений. Только в таком случае Вы сможете вычислять что-либо и формировать Word-отчет.
В случае если Вам необходимо чтобы расчет проводился непосредственно перед формированием отчета - Вам необходимо создавать отчет FastReport, который позволяет прописать скрипты для вычисления тех или иных полей.

Мы реализовывали это через Macros, который запускался в сформированном отчете. VB смог всё посчитать

Спасибо за информацию.
Если не затруднит, дайте ссылку на простой пример, как правильно создать поле сумма и указать поля для суммирования.Поиск выдает развернутые примеры сложных нестандартных случаев.Заранее благодарен...

Ну вот так подсчитывали сумму в таблице (использовались Nested Tables, то есть таблица в таблице).
То есть, сначала заполнялись ячейки в таблице простым Word-отчетом из TS, а потом Macro считал из этих ячеек другие значения. Возможно, есть более элегантный способ.

--------------

Sub CalcContract()

Dim i As Integer
Dim s As String

Dim TableNr As Integer
Dim NestedTableNr As Integer
Dim Sum As Double

With ActiveDocument

'Deposit Amount. Table Nr 3

Sum = 0
TableNr = 3
NestedTableNr = 2

For i = 2 To .Tables(TableNr).Tables(NestedTableNr).Rows.Count - 1
Sum = Sum + Val(.Tables(TableNr).Tables(NestedTableNr).Cell(i, 4).Range.Text)
Next i

.Tables(TableNr).Tables(NestedTableNr).Cell(.Tables(TableNr).Tables(NestedTableNr).Rows.Count, 4).Range.Text = Sum

' Payment method

NestedTableNr = 1

s = .Tables(TableNr).Tables(NestedTableNr).Cell(1, 1).Range.Text
If Val(Trim(s)) = 1 Then
.Tables(TableNr).Tables(NestedTableNr).Cell(1, 1).Range.Text = ""
.Tables(TableNr).Tables(NestedTableNr).Cell(2, 1).Range.Text = "X"
Else
.Tables(TableNr).Tables(NestedTableNr).Cell(1, 1).Range.Text = "X"
.Tables(TableNr).Tables(NestedTableNr).Cell(2, 1).Range.Text = ""
End If
End With
End Sub

Спасибо за пример, но меня интересовал классический пример подсчета суммы. Есть ли где нибудь информация (для начинающего работу с Теерасофт), где пошагово было бы описанно данное действие?
Не сочтите за назойливость - не могу найти примеров...

Примеры вычислений Вы можете посмотреть в базовой конфигурации. Например - вычисление скидки продукта или вычисление базовой цены в сервисе Цена продукта (scr_OfferingPriceEdit) в функции:
function edtDiscountOnChange() {
var Price = OfferingPriceEdit.Price - edtDiscount.Value;
var BasicPrice = CalcBasicPrice(Price,
OfferingPriceEdit.CurrencyID, OfferingPriceEdit.CurrencyRate);
edtBasicDiscount.Value = OfferingPriceEdit.BasicPrice - BasicPrice;
if (IsZeroValue(OfferingPriceEdit.BasicPrice)) {
edtDiscountPercent.Value = 0
} else {
edtDiscountPercent.Value = RoundFloatValue(edtBasicDiscount.Value * 100 /
OfferingPriceEdit.BasicPrice, 4);
}
FillPriceFields(Price, BasicPrice);
}

Показать все комментарии