Тема: Расчет плановой себестоимости

Доброго дня.

Прошу уточнить, почему в стандартном модуле "Расчет плановой себестоимости" в формуле образования техн. нормы времени не используются параметры Тпз, Кшт, Обьем партии либо ед норм.
В общем случае должно быть так:
"Полное или калькуляционное время выполнения операции Тк при обработке детали определяется по формуле
Т к= Тшт + Тп.з / n,   "
Кшт должно влиять на Тшт

Набор данных эти параметры из таблиц "поднимает", но в скриптовом модуле они не используются (выдержку прилагаю).

Возможно ли добавить недостающие элементы в скриптовый модуль для корректного формирования трудоемкости?

Заранее благодарен.

Виталий

Post's attachments

modul.txt 670 b, 4 скачиваний с 2018-05-20 

You don't have the permssions to download the attachments of this post.

Re: Расчет плановой себестоимости

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

В общем случае, данные модули поставляются в виде скриптов и могут быть настроены/модифицированы пользователем под свои нужды. Мы просто делаем некоторую общую базу для того чтобы показать рабочий вариант, а отталкиваясь от него можно сделать доработку под себя. Заготовка, скажем так. Единственный нюанс после таких доработко - если мы модуль дорабатываем или исправляем ошибки, то эти доработки приходится проносить уже самостоятельно (если они имеют ценность для вас). В любом случае код всегда можно сохранить.

Re: Расчет плановой себестоимости

Благодарю за оперативный, исчерпывающий ответ.

Можете ли Вы в качестве помощи подготовить блок скрипта, касающегося расчета указанных параметров?
К сожалению наши попытки не увенчались успехом.

Заранее благодарен.

С уважением Виталий.

Re: Расчет плановой себестоимости

Ну тут я так быстро не подскажу, так как не всегда одна строчка решает проблему, вполне возможно потом появятся новые проблемы, поэтому надо сначала разбираться.

А в чем сложности возникли?

Re: Расчет плановой себестоимости

Добавить в скрипт недостающие параметры (подобно
T_st = query_TPP.p_TpEquip_TimePerPiece.AsSafeFloat
             If T_st<=0.0 Then
                T_st = 0
                Call AddBadOborData( BadTpNorm, TechId, 0, TpPosCode, LastOperName, nmkName, _
                                    CurNMkId, CurKlas, CurNmkNote, CurNmkName, CurNMkCode, CurKol, _
                                    CurVerId, "ТП", CurTpName, CurTpSt )     
             End If
             RabCnt = TCSApp.StringToIntDef( query_TPP.p_TpEquip_NumOfWorkers.AsSafeString, -1 )
             if RabCnt<=0 then RabCnt = 1)

С этим у нас проблема.

Далее я думаю только формулу модифицировать, что гораздо проще.

Re: Расчет плановой себестоимости

вроде так

Tpz = query_TPP.p_TpEquip_SetupTime.AsSafeFloat
N = query_TPP.p_TpEquip_RunQuantity.AsSafeFloat

но конечный результат не гарантируется, там расчет посложнее будет (не факт что у вас все это используется конечно)

Спасибо сказали: Вит1

Re: Расчет плановой себестоимости

Прошу уточнить, почему в стандартном модуле "Расчет плановой себестоимости" в формуле образования техн. нормы времени не используются параметры Тпз, Кшт, Обьем партии либо ед норм.

Да, совершенно верно, данные параметры в расчете не учитываются. Связано это с тем, что была задача сделать простой пример для конкретного вида производства.
Таким образом для единичного производства данный метод дает вполне адекватные результаты, а для серийного и далее нужно конечно формулу подправить.
Вы это можете вполне сделать сами как указал в предыдущем посту О.Зырянов, только не забудьте сделать проверку что N >=0 (примерно как это сделано для T_st), потому, что технологи его для единиц или маленьких партий часто не указывают, чтобы не получилось деление на 0.

Спасибо сказали: Вит1

Re: Расчет плановой себестоимости

Спасибо за помощь.
В представленном виде при первоначальной аттестации- работает корректно

/" T_st = query_TPP.p_TpEquip_TimePerPiece.AsSafeFloat
             If T_st<=0.0 Then
                T_st = 0
                Call AddBadOborData( BadTpNorm, TechId, 0, TpPosCode, LastOperName, nmkName, _
                                    CurNMkId, CurKlas, CurNmkNote, CurNmkName, CurNMkCode, CurKol, _
                                    CurVerId, "ТП", CurTpName, CurTpSt )     
             End If
             RabCnt = TCSApp.StringToIntDef( query_TPP.p_TpEquip_NumOfWorkers.AsSafeString, -1 )
             if RabCnt<=0 then RabCnt = 1
             Tpz = query_TPP.p_TpEquip_SetupTime.AsSafeFloat
             if Tpz<=0 then Tpz = 1
             N = query_TPP.p_TpEquip_RunQuantity.AsSafeFloat
             if N<=0 then N = 1
             K_st = query_TPP.p_TpEquip_PieceTimeCoeff.AsSafeFloat
             if K_st<=0 then K_st = 1
             Trud_Sum = Trud_Sum + RabCnt * T_st * K_st + Tpz / N
             Trud_Sum_Itog = Trud_Sum_Itog + RabCnt * T_st * CurKol * K_st + Tpz / N
           End If   "/

Один вопрос -в этом же скрипте есть аналогичный блок с параметрами и расчетами по формуле (представлен ниже)- за что он отвечает и требуется ли его модифицировать?

"If Not TPP Is Nothing Then
           TPP.BeginUpdate           
           TPP.First
           While Not TPP.Eof
            Klas = TPP.p_NMK_CLASSIF_TYPE_NOTE.AsSafeString
            KlType = TPP.ClassType
            TechId = TPP.p_ID.AsSafeInteger
            VerId = TPP.p_VER_ID.AsSafeInteger
            OperId = TPP.p_OPER_ID.AsSafeInteger
            NMkId = TPP.p_NMK_ID.AsSafeInteger
            NMkNote = TPP.p_NMK_NOTE.AsSafeString
            NmkName = TPP.p_NMK_NAME.AsSafeString
            NmkCode = TPP.p_NMK_CODE.AsSafeString
            TpPosCode = TPP.p_OPER_POS.AsSafeString + "."
            TrudCalcCounter = TrudCalcCounter + 1
            pbStr = ShowProgressBarNote( pbStr, "ТПП-" & CStr(TrudCalcCounter) & ". " & CurNmkNote & " - " & CurNmkName )
            If KlType=CSDN_Const.ctOborud and Is_Value_InArray( Klas, GetOborClasses() ) Then
                If Is_Value_InArray( NMkName, GetCooperOborNames() ) Then 'Смежники
                    Call AddCooperData( CooperData, TechId, TPP.TpVariantId, TpPosCode, LastOperName, LastOperCode, OperId,  TechId, NMKId, _
                                        CurNMkId, CurKlas, CurNmkNote, CurNmkName, CurNMkCode, CurKol, _
                                        VerId, "ТТП", "-", "<типовой>" )
                Else
                    T_st = 0
                    RabCnt = 0
                    Set chldAt = TPP.Properties("TechnologyAttributes").AsIDispatch
                    'Dim chldAt as IGModule
                    if Not chldAt Is Nothing Then
                      T_st = chldAt.p_TimePerPiece.AsSafeFloat
                      RabCnt = TCSApp.StringToIntDef( chldAt.p_NumberOfWorkers.AsSafeString, -1 )                             
                    End If
                    If T_st<=0.0 Then
                        T_st = 0
                        Call AddBadOborData( BadTpNorm, TechId, TPP.TpVariantId, TpPosCode, LastOperName, nmkName, _
                                              CurNMkId, CurKlas, CurNmkNote, CurNmkName, CurNMkCode, CurKol, _
                                              VerId, "ТТП", "-", "-" )     
                       
                    End If
                    if RabCnt<=0 then RabCnt = 1
                    Trud_Sum = Trud_Sum + RabCnt * T_st
                    Trud_Sum_Itog = Trud_Sum_Itog + RabCnt * T_st * CurKol
                End If 
"

Re: Расчет плановой себестоимости

If Not TPP Is Nothing Then

Здесь обрабатываются типовые техпроцессы. По идее аналогично

Спасибо сказали: Вит1

Re: Расчет плановой себестоимости

Доработали, спасибо.

Кстати выявили небольшую ошибку (нашу).
Для корректного просчета при нулевом Тпз должно быть так:
if Tpz<0 then Tpz = 0

В итоге получили полнофункциональный метод определения Ткальк., удобный при расчете как при грубом, так и при полном оформлении.
Я думаю Вам стоит также модифицировать существующий скрипт для общего применения.