Добавлено: Чт Сен 24, 2009 8:57 am Заголовок сообщения: Неправильный расчет аммортизации после перемещения ОС.
Здравствуйте. Пожалуйста, подскажите куда копать.
На предприятии система Акцент 7.0 Build 0482, Акцент-администратор (SQL) 7.0 0480, VBS 5.6 build 6914. Есть рабочая форма по расчету аммортизации основных средств прямолинейным методом скорее всего самописная (досталась в тяжелое наследство). Аммортизация считается правильно до тех пор пока пока по ОС не было перемещений. Как только было перемещение с одного материально ответственного лица на другое МОЛ аммортизация начинает расчитываться заново по этому ОС. В самой форме обращение по сумме аммортизации идет к AmSum соответственно такие вопросы:
1) Где можно посмотреть процедуру или функцию расчета AmSum?
2) Можно ли безболезненно подключить стандартную форму для расчета аммортизации?
Добавлено: Чт Сен 24, 2009 10:24 am Заголовок сообщения: Re: Неправильный расчет аммортизации после перемещения ОС.
Roman писал(а):
Здравствуйте. Пожалуйста, подскажите куда копать.
На предприятии система Акцент 7.0 Build 0482, Акцент-администратор (SQL) 7.0 0480, VBS 5.6 build 6914. Есть рабочая форма по расчету аммортизации основных средств прямолинейным методом скорее всего самописная (досталась в тяжелое наследство). Аммортизация считается правильно до тех пор пока пока по ОС не было перемещений. Как только было перемещение с одного материально ответственного лица на другое МОЛ аммортизация начинает расчитываться заново по этому ОС. В самой форме обращение по сумме аммортизации идет к AmSum соответственно такие вопросы:
1) Где можно посмотреть процедуру или функцию расчета AmSum?
2) Можно ли безболезненно подключить стандартную форму для расчета аммортизации?
Если расчет в форме, то процедура либо внутри его, либо во внешнем файле, см. '#include <имя файла>
А проблема скорее всего в том, что при перемещении не передается начисленная аммортизация. Она должна быть в отдельной проводке с тем же ОС и м/о лицом.
Добавлено: Чт Сен 24, 2009 10:25 am Заголовок сообщения:
Sergio писал(а):
А можно увидеть код формы?
Вот он
Код:
Option Explicit
'#include "b_UsrFunc.avb"
'#include "tm_usrfunc.avb"
'----------------------------------------------------
' Константы сообщений
Const msgSaveDoc = "Документ был изменен. Сохранить?"
Const msgDocNotInPeriod = "Дата документа не в рабочем периоде. После сохранения документ не будет виден в папке и в журнале. Продолжать?"
Const strSavePrompt = "Операция была изменена. Сохранить?"
Const strFillDoc = "Заполнить документ?"
'---------------------------------------------------
' Вызывается после загрузки формы
'----------------------------------------------------
Sub Form_OnLoad
Dim My
Dim FrmName
Dim i
If Not WorkArea.Params.Exists(DBpnKoeficient) Then
WorkArea.Params.Create vbCurrency , DBpnKoeficient
End If
If IsNull(Workarea.Params(DBpnKoeficient).Value) Then
MsgBox "В свойствах базы данных установите значение параметра " + vbLf + _
DBpnKoeficient, vbOKOnly, "Внимание!"
ParDBpnKoeficient = 1
Else
ParDBpnKoeficient = Workarea.Params(DBpnKoeficient).Value
End If
Set proc = New StoredProcedure
proc.Name = "tm_OpAverLeavAsset"
proc.Parameter("@pAccIDB").Value = Workarea.Template(Op.TemplateID).Params(BaseAccOS).Value
proc.Parameter("@pAccIDA").Value = Op.Trans(1).AccCrId
proc.Parameter("@pDocId").Value = Op.Id
proc.Parameter("@pOnDate").Value = Op.Date
Set AccLst = proc.Execute
'установим инвентарные номера
If Not AccLst.EOF Then
i = 1
While Not AccLst.EOF
If Op.Trans(1,i).EntId <0> 0 Then
Op.Trans(1,i).EntId = AccLst.Fields("EntId").Value
Op.Trans(1,i).AgFromID = AccLst.Fields("AgId").Value
Op.Trans(1,i).AgToID = Workarea.MyCompany.ID
If Not IsNull(AccLst.Fields("AccId").Value) Then
If j = 0 Then
j = 1
Curr = 0
AccList(0) = AccLst.Fields("AccId").Value
AccListInd(0) = 0
End If
If AccList(Curr) <> AccLst.Fields("AccId").Value Then
For Curr = 0 To j-1
If AccList(Curr) = AccLst.Fields("AccId").Value Then
Exit For
End If
Next
If Curr = j Then
j = j + 1
ReDim Preserve AccList(j)
ReDim Preserve AccListInd(j)
AccList(Curr) = AccLst.Fields("AccId").Value
AccListInd(Curr) = 0
End If
End If
AccListInd(Curr) = AccListInd(Curr) + 1
If AccListInd(Curr) = 1 Then
Op.TransCount = Op.TransCount + 1
Op.Trans(Curr + 2, 1).AccCrId = Op.Trans(1, 1).AccDbId
'If IsNull(AccLst.Fields("AccId").Value) Then
' Op.Trans(Curr + 2, 1).AccDbId = 591
'Else
Op.Trans(Curr + 2, 1).AccDbId = AccList(Curr)
'End If
End If
'------------------------------------------------
' Процедура обработки события "Сохранить"
'------------------------------------------------
Sub Op_SaveOperation
Dim i
Op.LockDate = True
Op.Done = True
With Op
If (.Date <WorkArea> WorkArea.Period.End) Then
If MsgBox(msgDocNotInPeriod, vbQuestion + vbYesNo) = vbNo Then Exit Sub
End If
.Save
End With
Form.ReCalc
Op.Done = True
If Op.done = False Then
MsgBox "Не определены счета отнесения затрат", vbOKOnly, vbCritical
End If
End Sub
'------------------------------------------------
' Процедура обработки события "Выбрать шаблон"
'------------------------------------------------
Sub Op_SelectTemplate
Dim NewTmlID
With Op
NewTmlID = WorkArea.Browse(acTemplate, .TemplateID, .FormID, 2)
If NewTmlID <> 0 Then
Op_Init
.TemplateID = NewTmlID
Set TmlInv = .TemplateInvoker(NewTmlID)
If Not TmlInv Is Nothing Then
TmlInv.FireOnApply
End If
End If
End With
Op.Modified = False
Recalc
End Sub
'---------------------------------------------------------
' Процедура выполняется после выбора пункта из выпадающего
' меню
'---------------------------------------------------------
Sub Form_OnPopup(Command)
If Command = 1 Then Op_New
If Command = 2 Then Op_SaveOperation
If Command = 10 Then Op_SelectTemplate
If Command = 12 Then FillAccets(1)
If Command = 13 Then FillAccets(2)
If Command = 14 Then FillAccets(3)
' If Command >=900 And Command < 905 Then frm_DoContMnuCommand Form, Op, Command
Добавлено: Чт Сен 24, 2009 10:58 am Заголовок сообщения: Re: Неправильный расчет аммортизации после перемещения ОС.
olimp писал(а):
Если расчет в форме, то процедура либо внутри его, либо во внешнем файле, см. '#include <имя файла>
А проблема скорее всего в том, что при перемещении не передается начисленная аммортизация. Она должна быть в отдельной проводке с тем же ОС и м/о лицом.
Спасибо, сейчас посмотрю внешние модули.
При перемещении вроде бы выполняются две проводки, например, по 103 счету первоначальная стоимость и по 1313 сумма износа (аммортизации). Сейчас бухгалтер проверит передались ли они по 1313 счету.
Добавлено: Чт Сен 24, 2009 1:30 pm Заголовок сообщения: Re: Неправильный расчет аммортизации после перемещения ОС.
Посмотрела бухгалтер. Проводки переноса амортизации с лица на лицо происходят правильно. Скорее всего дело в подключаемых модулях.
Вот tm_usrfunc.avb
Код:
Option Explicit
'#include "tm_global.avb"
'---------------------------------------------
' факты ОС
Const groupOS = "Группа ОС"
Const typeOS = "Вид ОС"
Const accountOS = "Счет отнесения затрат"
Const LikvidPriceOS = "Ликвидационная стоимость"
Const propertiOS = "Госимущество"
Const enterOS = "Производственное ОС"
Const stateOS = "Состояние ОС"
'факты ГП
'----------------------------------------------
Const FPCostprice = "Фактическая себестоимость"
Const FPExpense = "Материальные затраты по ГП"
'----------------------------------------------
'параметры БД
Const pnStateOS = "Папка для состояний ОС"
Const pnGroupOS = "Папка для групп ОС"
Const pnMetal = "Папка для драгметаллов"
Const pnTypeOS = "Папка для вида ОС"
Const pnSAcc = "Счет учета ОС"
Const pnAmAcc = "Счет учета амортизации"
Const pnMEP = "Папка с МОЛ"
Const pnCapInvest = "Счет капитальные инвестиции"
Const pnFPRealizAcc = "Счет реализации ГП"
Const pnFPAcc = "Счет готовая продукция"
Const pnFinRezAcc = "Счет себестоимость релизованной ГП"
Const pnFPOutAcc = "Счет возврат ГП"
Const pnFPPriceList = "Прайс-лист внутренний"
Const pnFPExpense = "Прайс-лист налоговый"
Const pnAccBuyer = "Счет расчеты с покупателями"
Const pnFPFld = "Папка Готовая продукция"
Const pnPrdAcc = "Счет - <Const> 1 Then
iMiscId = .Trans(4, 1).MiscId(iMiscNo)
If iMiscId > 0 Then
For i = 2 To .TransCount
With .TransList(i)
If .Item(1).AccDbId = iAccID Or .Item(1).AccCrId = iAccID Then .SetMisc iMiscNo, iMiscId
End With
Next
End If
End If
End With
End Sub
'-------------------------------------------------------------
'получаем группу налогового учета
'------------------------------------------------------------
Function tmusr_TaxGroup (EntId, OnDate, ByRef GroupId)
'Dim IdAmAcc
With WorkArea.Entity(EntId)
If Not .Facts.Exists(GroupOS)Then .Facts.CreateRef GroupOS, acMisc
GroupId = .Facts(GroupOS).Value2
If AmAcc = 0 Then
MsgBox "Введите значение параметра " & pnAmAcc & " для счета " & WorkArea.Account(OSAcc).Code , vbOKOnly + vbCritical, "Настройка приложения"
End If
End With
End Function
и tm_global.avb
Код:
Option Explicit
'--------------------------------------------------------------------------
Class StoredProcedure
Private f_cmd
Private cnn
Public Property Get Name
Name = f_cmd.CommandText
End Property
Public Property Let Name( value)
Set cnn = WorkArea.AdoConnection
cnn.Execute "set nocount on"
cnn.CommandTimeOut = 10000
Set f_cmd = CreateObject("ADODB.Command")
f_cmd.ActiveConnection = cnn
f_cmd.CommandType = 4
f_cmd.CommandText = value
f_cmd.CommandTimeOut = 10000
f_cmd.Parameters.Refresh
End Property
Public Property Get Parameter( ParamName)
Set Parameter = f_cmd.Parameters( ParamName)
End Property
Public Property Get Execute
Set Execute = f_cmd.Execute
End Property
Public Sub Help
Dim HelpText
HelpText = _
"Name - имя процедуры" & Chr(13) & Chr(10) &_
"Parameters('<имя параметра>').Value - присвоить значение параметра" & Chr(13) & Chr(10) &_
"Set r = Execute - выполнить" & Chr(13) & Chr(10) & _
"Help - вывести это сообщение" & Chr(13) & Chr(10) & Chr(13) & Chr(10)
If Not IsEmpty( f_cmd) Then
HelpText = HelpText & "Параметры текущей SQL процедуры : " & Chr(13) & Chr(10)
For Each p In f_cmd.Parameters
HelpText = HelpText & _
p.Name & Chr(13) & Chr(10)
Next
End If
MsgBox HelpText,,"Help for class StoredProcedure"
End Sub
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах