Тема: Дополнительный внешний расчетный коэффициент в макросе

Добрый день.

Подскажите, пожалуйста, каким образом можно встроить в макрос ("Расчет плановой себестоимости")дополнительный внешний параметр/коэффициент?
Требуется проводить расчеты с варьируемыми задаваемыми при вызове макроса параметрами.

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

Re: Дополнительный внешний расчетный коэффициент в макросе

Здравствуйте! ну макрос в исходниках, добавить можно конечно. Как правильнее тут сказать сложнее.

Там основной код собирает потребности, он не меняется. Коэффициенты добавить легче.
Наши в таблицах если не ошибаюсь лежат, чтобы их можно было легко поправить, и их там менять можно на лету даже,  на время расчета.

Спасибо сказали: kvand.st1

Re: Дополнительный внешний расчетный коэффициент в макросе

Нам регулярно требуется рассчитывать утв.техпроцесс с учетом партийности (N)
Тпз/N * "var-коэфф."
Как в макрос добавить "var-коэфф.", который задавался бы только при вызове формы(макроса) "Расчет себестоимости"?

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

Re: Дополнительный внешний расчетный коэффициент в макросе

Что то я не уверен что там Тпз учитывается :( Либо я не увидел, но может так и задумано было. Мы в новых версиях в производстве как раз включили в расчет объем производственной партии (это видимо и есть ваш коэффициент партийности) и единицу нормирования, видимо и данный модуль надо пересмотреть.

Насколько понимаю нужно смотреть код возде

If ... CSDN_Const.ctOborud and ... Is_Value_InArray( Klas, GetOborClasses() ) Then

тут идет подсчет трудоемкости.

Спасибо сказали: kvand.st1

Re: Дополнительный внешний расчетный коэффициент в макросе

Текущий модуль имеет все параметры для расчета по ТП, но нам  требуется включить дополнительный коэффициент (неучитываемый в ТП, допустим - "kN")к константе Обьем партии в производстве, задаваемый только при вызове макроса для расчета, либо из текущей справочной таблицы.
В прилагаемом блоке скрипта я указал место коэффициента.
Вопрос - как подключить, чтобы скрипт "подхватывал" ?
       
""       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 = 0
             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
             NoP = query_TPP.p_TpEquip_NumberOfParts.AsSafeFloat
             if NoP<=0 then NoP = 1
             Trud_Sum =  Trud_Sum + ( RabCnt * T_st * K_st / NoP ) + Tpz / N * kN
             Trud_Sum_Itog =  Trud_Sum_Itog + ( RabCnt * T_st * CurKol * K_st / NoP ) + Tpz / N * kN
           End If
""

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

Re: Дополнительный внешний расчетный коэффициент в макросе

Странно. Либо я код не тот смотрел, либо у вас какая то своя версия этого модуля.

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

Это Тпз так понимаю

Tpz = query_TPP.p_TpEquip_SetupTime.AsSafeFloat

А это Объем партии

N = query_TPP.p_TpEquip_RunQuantity.AsSafeFloat
if N<=0 then N = 1

Так что вам по хорошему просто в ТП объем партии задавать правильно надо, и все.
Вы вместо этого зачаем то хотите делать это в расчете

Trud_Sum =  Trud_Sum + ( RabCnt * T_st * K_st / NoP ) + Tpz / N * kN
Trud_Sum_Itog =  Trud_Sum_Itog + ( RabCnt * T_st * CurKol * K_st / NoP ) + Tpz / N * kN

Ну ваше право конечно.  В начале скрипта добавьте строку

Const kN = 100.0

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

Спасибо сказали: kvand.st1

Re: Дополнительный внешний расчетный коэффициент в макросе

Вы правы.-в скрипте формулу модифицировали сами - оригинальная не совсем корректно считает.
Const kN = 100.0 - не совсем понятно (100- это значение?)
Константа должна быть переменная для каждого расчета и допустим прописана будет в справочной таблице.
Подхватит вашим методом?

Re: Дополнительный внешний расчетный коэффициент в макросе

ну с переменной константой не так просто конечно :) ее же как минимум выбирать как то надо.
Хотя можно конечно просто ее запросить на старте https://help.technologics.ru/7.7/TCSAPI … Box_13.htm

Dim Kn

....

Kn = TCSApp.InputBox( "Задайте Kn", "Kn", "100" )

....
Спасибо сказали: kvand.st1

Re: Дополнительный внешний расчетный коэффициент в макросе

Олег Зырянов пишет:

Хотя можно конечно просто ее запросить на старте

-То что нужно.

Можно ли поподробнее (рабочий блок кода и куда вставить)?
Заранее благодарен.

Re: Дополнительный внешний расчетный коэффициент в макросе

Можно ли поподробнее (рабочий блок кода и куда вставить)?

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

Если код совпадает то до или после строки где форма создается

...
Set Form = TCSApp.TCSForm( "CSDN_Form_SelfCost", False )
...
Спасибо сказали: kvand.st1

Re: Дополнительный внешний расчетный коэффициент в макросе

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

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

Re: Дополнительный внешний расчетный коэффициент в макросе

Dim Kn
Спасибо сказали: kvand.st1

Re: Дополнительный внешний расчетный коэффициент в макросе

Странно, все прописываем как Вы рекомендуете, форма активна, но в расчет всегда берется значение по константе -
Const kN = 100.0

Что могли упустить ?
Зарнее благодарен.

Re: Дополнительный внешний расчетный коэффициент в макросе

Не знаю. Но вместо Const kN = 100.0 надо как раз написать Dim Kn. Ну и имена подлиннее дать, чтобы не пересечься с темповыми переменными какими либо.

Спасибо сказали: kvand.st1

Re: Дополнительный внешний расчетный коэффициент в макросе

Долго экспериментировали - в итоге добились желаемого.
Благодарю за содействие и терпение.
Маленькая ремарка - необходимо переменную прописывать (Kn - естесственно - просто жаргонное))) :

Kn = TCSApp.InputBox( "Задайте Коэффициент пересчета", "Коэффициент пересчета", "0,000")

Иначе десятичные значения и значение по умолчанию не воспринимаются.