Персональная программа в шаблоне операции
Решение, которое закрывает многолетнюю дискуссию о себестоимости валютного товара при продаже (viewtopic.php?f=1&t=2028&start=15).
Программа вычисляет ее по курсу, который был на момент приобретения, а пользователи считают, что нужно пересчитывать по сегодняшнему курсу.
Чтобы действовал второй вариант: в расходной накладной нажать вверху "Выбор операции" (будет выделена "Продажа"), нажать "Изменить", в шаблоне операции нажать "Программа".
Скопировать и вставить следующий текст:
If Predpr.DataMain.ReportCurrID > 1 Then Exit Sub
Dim Row As Predpr.SubRow, Trans As Predpr.TransRow, TrNum As Integer
If Predpr.DataMain.UseBuhAcc = False Then
TrNum = 2
Else
TrNum = 4
End If
Trans = Op.DocTransCalc(TrNum)
For Each Row In Trans.SubRows.Values
If Row.CurrID > 1 Then
GoTo Start
End If
Next
Exit Sub
Start: Dim TrNew As New Predpr.TransRow(Op, Trans.TransOfficeID, Trans.TransPersonID)
Dim TrTempl As Predpr.TemplRow = Op.Templ.TemplRowsCalc(TrNum)
Dim RowNew As Predpr.SubRow
.Flag = True
.FlagDb = True
.AccDbID = TrTempl.TransRow.AccDbID
For Each Row In Trans.SubRows.Values
RowNew = New Predpr.SubRow(TrNew, Row.ArticleID, Row.Qnt)
RowNew.CurrID = Row.CurrID
RowNew.Price = Row.Price
Row.AccDbID = 0
Next
Trans.AccDbID = 0
Op.DocTransCalc.Add(TrNew.TransNum, TrNew)
Это будет действовать так:
Если среди товаров не было закупки в валюте, при продаже останутся обычные настройки:
Если были валютные, то при проведении документа они изменятся:
Программа вычисляет ее по курсу, который был на момент приобретения, а пользователи считают, что нужно пересчитывать по сегодняшнему курсу.
Чтобы действовал второй вариант: в расходной накладной нажать вверху "Выбор операции" (будет выделена "Продажа"), нажать "Изменить", в шаблоне операции нажать "Программа".
Скопировать и вставить следующий текст:
If Predpr.DataMain.ReportCurrID > 1 Then Exit Sub
Dim Row As Predpr.SubRow, Trans As Predpr.TransRow, TrNum As Integer
If Predpr.DataMain.UseBuhAcc = False Then
TrNum = 2
Else
TrNum = 4
End If
Trans = Op.DocTransCalc(TrNum)
For Each Row In Trans.SubRows.Values
If Row.CurrID > 1 Then
GoTo Start
End If
Next
Exit Sub
Start: Dim TrNew As New Predpr.TransRow(Op, Trans.TransOfficeID, Trans.TransPersonID)
Dim TrTempl As Predpr.TemplRow = Op.Templ.TemplRowsCalc(TrNum)
Dim RowNew As Predpr.SubRow
.Flag = True
.FlagDb = True
.AccDbID = TrTempl.TransRow.AccDbID
For Each Row In Trans.SubRows.Values
RowNew = New Predpr.SubRow(TrNew, Row.ArticleID, Row.Qnt)
RowNew.CurrID = Row.CurrID
RowNew.Price = Row.Price
Row.AccDbID = 0
Next
Trans.AccDbID = 0
Op.DocTransCalc.Add(TrNew.TransNum, TrNew)
Это будет действовать так:
Если среди товаров не было закупки в валюте, при продаже останутся обычные настройки:
Если были валютные, то при проведении документа они изменятся:

