PAC

Материал из Фабиус wiki
Версия от 09:58, 30 июня 2016; Hisava (обсуждение | вклад) (PAC5 Расход сырья, материалов и полуфабрикатов)

Перейти к: навигация, поиск

Документ "Отчет смены производственного мастера", таблица DOCP

Для работы необходимо построить индексы справочника R187

PAC1

DATDOC - дата

KREFL1 - R10

KANAL1 - код производства

Умалчиваемое выражение: GetFiltName( 'KANAL1' )  

DREFL1 - R10

DANAL1 - код производства

CATTR9 - код из справочника R160

DSHIFT - Дата и смена ггггммддс

CATTR10 - Табельный номер начальника смены

_TIMEFIRST - Дата и время ввода

_TIMELAST - Время последнего;изменения

AMNT_FLOUR - Выработано;кг из муки

BAD - Признак ошибки

CATTR1 - Наличие отчета движения гот-ой продукции

CATTR2 - Наличие отчета движения сырья

CATTR3 - Время начала работы по счетчику

CATTR9 - Подразделение код

DANAL1 - Код производства копия KREFL1

DANAL3 - Код пользователя

DATDOC - Дата отчета

DREFL1 - Спр-к аналитик копия KREFL1

K1NAME - Наименование производства

KG - кг с PAC4

KSHIFT - Дата / смена

LAST_USER - Автор последнего;изменения

MOL - Мастер

MOL2 - Оператор

NATTR1 - № акта на брак

NATTR11 - Дополн.числовое поле

NATTR2 - Вес яйца

NATTR3 - Явочная численность

NATTR4 - Показания счетчика ИЛИ кг c PAC9

NATTR5 - Показания видеосчетчика

NUMDOC - Номер отчета

PRINTED - Печать

SHIFT - Номер смены

SUBDIV - Подразделение

PAC2 Влажности и бункеры

KREFL2 - R08

KANAL2 - код муки

K2NAME - наименование муки

NATTR1 - влажность муки

KREFL3 - R317

KANAL3 - код бункера

K3NAME - наименование бункера

KSHIFT - смена в формате ггггммддс

NATTR10 - количество по дозатору

PAC3 Замены сырья и материалов

DANAL3 - что заменяем, код

D3NAME - что заменяем, имя

AMNT - количество

KANAL3 - чем заменяем, код

K3NAME - чем заменяем, имя

NATTR3 - коэффициент замены

KANAL2 - второй заменитель, код

K2NAME - второй заменитель, имя

NATTR2 - коэффициент замены

NATTR4 - третий заменитель, код

CATTR1 - третий заменитель, имя

NATTR5 - коэффициент замены

Клавиши

CTRL+F6 - полная замена сырья в текущем отчете

CTRL+F7 - частичная замена сырья

PAC4 Изделия

DATDOC - дата

DSHIFT - ггггммддс

DREFL1 - R10

DANAL1 - код производства

DREFL2 - R11

DANAL2 - код изделия

AMNT - выработка, штук

KG - выработка, кг

CATTR1 - вариант рецептуры

CATTR3 - номер линии

CATTR6 - номер подбригады

CATTR10 - начальник смены, мастер, бригадир ( табельный номер )

NATTR1 - средневзвешенная влажность

NATTR2 - технологический брак в штуках

NATTR3 - брак по вине мастера в штуках

NATTR6 - количество добавок в кг

NATTR8 - выход при влажности муки 14.5%

 round(SeekRef(DREFL2,DANAL2,{||PAC4->(RetIssue2(DANAL2,,val(CATTR1),,KSHIFT,val(CATTR3)))},1,0), prsn_I)

NATTR10 - вес одного изделия

SUM - фонд заработной платы

PAIN_AMNT - расход основного сырья

REJ_SUM2 - Стоимость сырья на брак

EXTSUM сумма по плановой себестоимости

Выражение для расчета

 Round( Round( Prod_Price( DANAL2, DATDOC,,,,,,, 4 ), 2 ) * AMNT, 2 )

_LINE_NUM - имя;печи

_SUBDIV - Подразделение

_TIMEFIRST - Дата и время ввода

_TIMELAST - Время последнего;изменения

AMNT - Выработано (шт)

AMNT_FLOUR - Выработано;кг из муки

AMNT_MEM - Кол-во виновных

BAD - Признак ошибки

BAD2 - Признак ошибки 2

BR_MAST - Брак мастера не перерабатываемый

BR_MAST_KG - Брак мастера не перерабатываемый в кг

BR_PNO - утилизация брака ПНО в штуках

BR_PNO_KG - утилизация брака ПНО в кг

BR_TECH - Брак технологический не перерабатываемый

BR_TECH_KG - Брак технол-ий не перерабатываемый в кг

CATTR1 - N рецептуры

CATTR10 - Мастер

CATTR2 Вариант расценки изделия

CATTR3 - N печи, линии

CATTR4 - Рецептура упакованных изделий

CATTR5 - Рецептура дополн-но изготовленного п/ф

CATTR6 - Технологическая стадия

CATTR7 - Вар-т расценки упаковки

CATTR8 - Вар-т расценки п/ф

CATTR9 - Код упаков-х изд по R11

CHANGEMAT - Ручная корректировка?

D_OPARA - Опара;в дежах

D_TECTO - Тесто в дежах (в пруфере)

D2NAME - Наименование изделия

DANAL1 - Код производства PAC1

DANAL2 - Код изделия

DANAL3 - Код п/ф по R74

DATDOC - Дата отчета PAC1

DEBT - Счет изделия

DREFL1 - Спр-к аналитик PAC1

DREFL2 - Спр-к изделий

DSHIFT - Дата / смена PAC1

FLOUR - Основная мука (код)

FLOUR_AMNT - Основная мука (кол-во)

GIVE_MAT_F - Используется ли давальческое сырье(1-да)

K2NAME - Наименование добавок 1-я добавка

K3NAME - Наименование бункера

KANAL1 - Код производства PAC1

KANAL2 - Код добавок 1-я добавка

 ProdToRej( DANAL2 )  

KANAL3 - Код бункера

KG - Выработано (кг)

KG_MB - Брак по вине мастера (кг)

KG_TB - Технологический брак (кг)

KG_VPO - НЕТ см.NATTR7 Возвр-перераб. отходы (кг)

KOL_MAT - Количество наименований сырья

KREFL1 - Спр-к аналитик PAC1

KREFL2 - Спр-к сырья ( добавка 1)

KREFL3 - Спр-к бункеров

KSHIFT - Дата / смена PAC1

LAST_USER - Автор последнего;изменения

LINE_NUM2 -

MOL - Оператор

NATTR1 - Средневзвешенная влажность

NATTR10 - Вес 1 шт.

NATTR11 - Дополн.числовое поле

NATTR2 - Технологический брак (шт)

NATTR3 - Брак по вине мастера (шт)

NATTR4 - Упаковано (шт)

NATTR5 - Кол-во дополн-но изготовл-го п/ф (кг)

NATTR6 - Кол-во добавок (кг) 1-я добавка

NATTR7 - ВПО (кг)

NATTR8 - Выход при 14.5

NATTR9 - Выход при влажности

NDSSUM - Трудоемкость

NUMDOC - Номер отчета

PAIN_AMNT - Израсходовано муки

PAIN_AMNT2 - Для округления мук по линии

PAIN_PAC5 - Сумма муки с PAC5

PERC_PAIN - Добавки в виде % от муки

PRD_AMNT - Количество переделываемых тортов

PRD_KOD - Код переделываемого изделия

PRD_NAME - Наименование переделываемого изделия

PRIM - Примечание

PRINTED - Печать

RAWSUM - Стоимость сырья основного изделия

REALISSUE - Реальный выход

REASOFORIG - Причина брака

REJ_KOD - Код брака

REJ_NAME - Наименование брака

REJ_REFL - Спр-к брака

REJ_SUM2 - Стоимость сырья на брак

REJECTS - Брак при неисправном оборудовании

REJECTS_KG - Брак при неисправном оборудовании, кг

REJECTV Возвратно-перерабатываемые отходы

REJECTV_KG Возвратно-перерабатываемые отходы, кг

REMREJ_KG - Переработка брака

REMREJ_KOD - Код перерабатываемого брака

REMREJ_VAR - № рецептуры для перерабатываемого брака

REMREJNAME - Наименование перерабатываемого брака

SHIFT - Номер смены PAC1

SUBDIV - Подразделение

SUM - Фонд з/пл

SUM_PACC - Сумма с этажа Си

TYPE_REJ - Признак брака

Проводки

43 40 Возникновение изделия с суммой EXTSUM

PAC5 Расход сырья, материалов и полуфабрикатов

Идентификатор реквизита Выражение для расчета Перечень зависимых реквизитов Умалчиваемое значение Поле справочника Изменяемый реквизит
_TIMEFIRST Date()+' '+Time(true)
_TIMELAST
AMNT local sql, recept, i, r11_precsn, Flour_prec, ind, dough, on_pain

recept := {}

if IsSweetNAK( PAC1->KANAL1 )

 return

endif

if INPUTFLDNAME = 'NATTR8' and Empty( AMNT ) and !WorkAddAll

 AMNT := NATTR8

endif

if FactoryID = 'DED' and Empty( AMNT )

 amnt := NATTR8
 if Empty( amnt )
   amnt := NATTR6
 endif

endif

result := PAC5_Precsn( AMNT, CATTR1, KANAL2, DOCS4->DANAL2, PAC4->CATTR3, val( DOCS4->CATTR1 ) )

if FactoryId = 'DED' and Empty( result )

 result := Round( NATTR8, 3 )
 if Empty( result )
   result := Round( NATTR6, 3 )
 endif

endif

// кроме пекарни Орехово if CATTR1 = 'УЦ' and !( FactoryId = 'OHC' and NrmtId = 2 )

 if FRAC( NATTR8 ) > 0
   result := INT( NATTR8 ) + 1
 else
   result := NATTR8
 endif

endif

if SeekRef( 'R08', KANAL2, 'PRECSN', 1 ) = 9

 result := round( Result, 0 )

endif

// в том числе упакованно ( Ликино ) if Ascan( { 'OHC', 'XHC' }, FactoryId ) > 0

 if DOCS4->NATTR4 > 0 and ( ( 'УП' $ CATTR1 ) or ( 'УЦ' $ CATTR1 ) or ( 'ТА' $ CATTR1 ) )
   sql := [ Select UNIT_AMNT From R71 Where KODPROD = ] + a_s( DOCS4->DANAL2 ) + [ and VAR_NUM = ] + atr( DOCS4->CATTR1 ) + [ and KOD = ] + a_s( KANAL2 )
   recept := SelectSqlToArr( sql, { 'UNIT_AMNT' }, ReflisPath )
   if !Empty( recept )
     result := Round( recept[1,1] * DOCS4->NATTR4, GetPrm( 'PRECSN_M', 'PROD', GetTaskNum( 'PROD', DOCS1->DANAL1 ) ) )
   endif
 endif

endif

// кроме Куровского if Recalc and Ascan( { 'OHC' }, FactoryId ) > 0 and NRMTID <> 4

 Nattr8 := Result

endif

if Recalc and FactoryID = 'OHC' and NRMTID = 4 and CATTR1 <> 'МУ'

 Nattr8 := Result

endif

if Recalc and Ascan( { 'KTV' }, FactoryId ) > 0 and CATTR1 = 'МУ'

 Nattr8 := Result

endif

if Recalc and Ascan( { 'PHC', 'ARX', 'ORN', 'NAY', 'KAZ', 'KLM', 'SHC', 'DED', 'NAH', 'SRG', 'TVR', 'VLG', 'TPS', 'JWR', 'MUR', 'VLK' }, FactoryID ) > 0

 Nattr8 := Result

endif

// кого я "веду" if Ascan( { 'N_AZ', 'DED', 'EHC', 'GHC', 'KLM', 'NHC', 'OHC', 'PHC', 'XHC' }, FactoryId ) != 0

 // если не весовое изделие, округление до целого
 // хотя делаться это должно в PAC5_Precision
 if ( 'ИЗ' $ CATTR1 ) and R11Wght( KANAL2 ) != 1
   result := Round( result, 0 )
 endif

else

 if KREFL2 = 'R11 '
   result := Round( Result, 3 )
   if FactoryId = 'TVR'
     if R11Wght( DANAL2 ) = R11Wght( KANAL2 )
       result := Round( Result, 0 )
     endif
     NATTR6 := result
     NATTR8 := result
   endif
 endif

endif

/// --- Щелково хочет видеть выигрыш в сырье при добавлении брака-мочки --- if FactoryId = 'WHC' and !Empty( DOCS4->NATTR6 ) and !Empty( DOCS4->KG ) and ( Empty( CATTR1 ) or Cattr1 = 'МУ' )

 // Щелково добавки снимает с выработки
 NATTR8 := result * ( DOCS4->KG / ( DOCS4->KG - DOCS4->NATTR6 ) )

endif if FactoryId = 'KRL' or ( FactoryId = 'EHC' and !( 'МУ' $ CATTR1 ) )

 NATTR8 := result

endif

// округление изделий в рецептуре if FactoryId = 'KLM' and KREFL2 = 'R11 '

 result := Round( result, 1 )

endif

if Ascan( { 'DTV', 'ZRS', 'XHC' }, FactoryId ) > 0

 // Владимир попросил, все что меньше 0.001 приравнять 0.001
 if result = 0 and NATTR6 < 0.001 and NATTR6 > 0
   result := 0.001
 endif
 // а если в целых, то 1
 if Cattr1 = 'СЦ' and iif( FactoryId = 'DTV', NATTR6 <= 1, NATTR6 < 1 ) and NATTR6 > 0
   result := 1
 endif

endif

if FactoryId = 'ZRS' and CATTR1 = 'МУ' and !Empty( DOCS4->NATTR6 )

 // округлить муку для Зарайска, при использовании добавок
 result := Round( result )

endif

if FactoryId = 'DTV' and CATTR1 = 'МУ' and result > DOCS4->FLOUR_AMNT

 // записать код основной муки на 4-ый этаж для Дятьково
 DOCS4->FLOUR_AMNT := result
 DOCS4->FLOUR := KANAL2

endif

if FactoryId = 'ZRS' and AMNT = 0 and NATTR8 = 0

 if KANAL2 = 26
   // округление солода при маленьком кол-ве хлеба
   result := Round( NATTR6, 1 )
   Field->NATTR8 := result
 endif
 if KANAL2 = 3 or KANAL2 = 2
   // округление ржанообдирной при маленьком кол-ве хлеба
   result := 1
   Field->NATTR8 := 1
 endif

endif

Transaction() Field->NATTR9 := NATTR8 - Result

if KREFL2 = 'R11 '

 r11_precsn := GetPrm( 'R11_PRECSN', 'PROD', GetTaskNum( 'PROD', DOCS1->DANAL1 ) )
 if !Empty( r11_precsn )
   result := Round( result, r11_precsn )
 else
   result := Round( result, 0 )
 endif

endif

// 2 // Алексей 07.12.2010 KRG if FactoryId = 'KRG'

 // ванилин
 if KANAL2 = 8
   result := Round( result, 0 )
 endif
 // масло в тесто в хлебобулочном производстве
 if KANAL1 = 2 and KANAL2 = 21 and CATTR1 <> 'СМ'
   result := Round( result, 1 )
 endif

endif

if FactoryID = 'ARX' and KSHIFT < '201205011'

 if ( 'УП' $ CATTR1 ) or ( 'УЦ' $ CATTR1 )
   result := 0
 endif

endif

if FactoryID = 'NAK'

 // Брак ржано-пшеничный
 if KREFL2 = 'R08 ' and KANAL2 = 9003
   // индекс номер 6 справочника R71
   ind := Str( DANAL2, 5 ) + Str( val( DOCS4->CATTR1 ), 5 ) + Str( KANAL2, 5 )
   dough := SeekRef( 'R71', ind, 'DOUGH', 6 )
   if !Empty( dough )
     on_pain := SeekRef( 'R71', ind, 'ON_PAIN', 6 )
     if on_pain <> dough
       result := Round( result * dough / on_pain, 2 )
     endif
   endif
 endif

endif

result || NATTR9,SUM,PAIN_PAC5 || || ||

CATTR1 if IsSweetNAK(PAC1->KANAL1)
 Local  arr:=MultyArrElDel(MatPropts(Шаблон:KANAL2,KREFL2), "", .t.)
 if  len(arr)>0;  result:=arr[1];  endif

endif || || || PAC5PROPTS ||

CATTR10 PAC1.CATTR10
CATTR2 'Н' ARYESNO
CATTR3 PAC4.CATTR1
CATTR4 pac4.cattr3
D2NAME RealName(DREFL2,DANAL2) PAC4.D2NAME KOD DANAL2
D3NAME RealName(DREFL3,DANAL3) PAC4.D2NAME KOD DANAL3
DANAL1 PAC4.DANAL1
DANAL2 D2NAME PAC4.DANAL2
DANAL3 D3NAME local a

a:=SeekRef('R74',PAC4.DANAL2,'REALPROD',1) if !Empty(a) and GetPrm('USEMREADY','PROD',ProdNum); a; else; PAC4.DANAL2; endif || ||

DATDOC PAC4.DATDOC
DEBT result:=ProdAcnt(DANAL2,DREFL2)

if FactoryId='NAK' .and. !IsSweetNAK(PAC1->KANAL1); result:='20'; endif || || || ||

DREFL1 PAC4.DREFL1
DREFL2 D2NAME PAC4.DREFL2
DREFL3 PAC4.DREFL2
DSHIFT DToS(DATDOC)+SHIFT PAC4.DSHIFT
GIVE_MAT_F if KRED=GIVE_MAT; 1; endif
K2NAME if FactoryID="KRL" and KREFL2='R08'
 if DANAL2=610
   Field->DANAL2:=135
   Field->DANAL3:=135
 elseif DANAL2=390
   Field->DANAL2:=374  
   Field->DANAL3:=374  
 end

endif

RealName(KREFL2,KANAL2) || || || KOD || KANAL2

K3NAME RealName(KREFL3,KANAL3) KOD KANAL3
KANAL1 PAC4.KANAL1
KANAL2 K2NAME, NATTR1, SUM, KRED, DEBT, KREFL3, KANAL3, UNIT_NAME, CATTR1
KANAL3 // для основного сырья, если Бункеры в R317 (Bunker_R10=False) запишем код бункера

// 05.07.05 Алексей Бункеры прописываются в ReceptToArr // iif(!Bunker_R10.and.IsMainPain(Kanal2),SeekRef('R317',KANAL2,'KOD',3),) || K3NAME,NATTR1 || || ||

KOL_MAT 1
KRED //14.04.2004 а если в рецептуре списывается изделие? SeekRef('R08',M->Kanal2,'Bkacnt',1)

result:=ProdAcnt(KANAL2,KREFL2) if ProdAs20

 result:=ProdAcnt(KANAL1,KREFL1)

endif || GIVE_MAT_F || || BKACNT ||

KREFL1 PAC4.KREFL1
KREFL2 K2NAME,NATTR1,SUM,KRED 'R08 ' R08R11
KREFL3 iif(Bunker_R10,'R10 ','R317') K3NAME,NATTR1 iif(Bunker_R10,'R10 ','R317')
KSHIFT DToS(DATDOC)+SHIFT PAC4.KSHIFT
LAST_USER
MOL userkod userkod

//SeekRef('R126',userKod,'TABNUM',1,0) || KOD ||

NATTR1 if !WorkAddAll // т.е. только для ручной корректировки
 local fw
 if  'МУ' $ CATTR1
   fw:=FindWetns(KANAL2,KANAL3,,KREFL2,KREFL3,WetnsArr)  
   if !Empty(fw)
     result:=fw
   else
     result:=Nattr1
   endif
 endif

endif || NATTR8 || || ||

NATTR10
NATTR2
NATTR3
NATTR4 RawSum
NATTR5
NATTR6 if IsSweetNAK(PAC1->KANAL1); Return; endif

PAC5_Precsn(NATTR6, CATTR1, KANAL2, , PAC4->CATTR3) || || || ||

NATTR7
NATTR8 // PAC5_Precsn(NATTR8, CATTR1, KANAL2, , PAC4->CATTR3) AMNT
NATTR9 if HandFldName='AMNT' or FactoryID='NFM'
 NATTR8-AMNT

endif || || || ||

NDSSUM
NUMDOC DOCS1->NUMDOC
PAIN_PAC5 if CATTR1='МУ'; AMNT; endif
PRIM
RAWSUM // только сырье, списанное на основное изделие

from_pac5:=.f. result:=0 if DANAL2=PAC4->DANAL2 .and. KREFL2='R08'; result:=SUM; endif || NATTR4 || || ||

SHIFT PAC4.SHIFT
SUM if AMNT=0; result:=0; return; endif

// Алексей 21.04.05 Local arr,_KRED,_KREFL1,_KANAL1,_KREFL2,_KANAL2 _KRED:=KRED; _KREFL1:=KREFL1; _KANAL1:=KANAl1; _KREFL2:=KREFL2; _KANAL2:=KANAL2 // для ввода по F6 if KREFL2='R08'

 result:=MTUN->(CalcPriceMT({{'BKACNT',_KRED},{'REFLANAL',_KREFL1},{'ANAL',_KANAL1},{'REFL',_KREFL2},;
   {'KOD',_KANAL2}}))*AMNT
 If Result > 1073741824/2
   Result:=0
 Endif

else

 arr:=PriceOnDate({'SELF_PRICE'}, DATDOC, KANAL2, .f.)
 result:=round(round(arr[1] * R11Wght(KANAL2) / 1000, 2) * AMNT, 2)

endif || RAWSUM || || ||

UNIT_NAME UnitName( KANAL2, KREFL2 )

PAC9 Заказ

DSHIFT - дата и смена ггггммддс

DREFL1 - R10

DANAL1 - код производства

DREFL2 - R11

DANAL2 - код изделия

AMNT - заказ, штук

KG - заказ, кг

_LINE_NUM - имя;печи

_TIMEFIRST - Дата и время ввода

_TIMELAST - Время последнего;изменения

AMNT - Количество (шт)

CATTR1 - Номер рецептуры. От номера рецептуры зависит выход NATTR8

CATTR10 - Мастер

CATTR2 - Признак отпечатанности

CATTR3 - N линии

CATTR4 - Время

D2NAME - Наименование изделия

D3NAME - IsKondEastNAK Ссылка на KSHIFT заказа, из которого автоматически пришла фаза-п/ф

DANAL1 - Код производства PAC1

DANAL2 - Код изделия

DATDOC - Дата отчета PAC1

DREFL1 - Спр-к аналитик PAC1

DREFL2 - Спр-к изделий

DREFL3 - IsKondEastNAK Изделие/полуфабрикат

DSHIFT - Дата / смена PAC1

EXTSUM - Время;изготовления

K1NAME - Хранилище извращений по фруктовым ассорти: 26661код;N3лин;N4кг кодR08;колво кодR08;колво кодR08;колво кодR08;колво

KANAL1 - Код производства PAC1

KG - Выработано (кг)

KREFL1 - Спр-к аналитик PAC1

KSHIFT - Дата / смена PAC1

LAST_USER - Автор последнего;изменения

MOL - Оператор

NATTR1 - Средневзвешенная влажность

NATTR10 - Вес 1 шт.

NATTR2 - Смена

NATTR3 - N печи/группа кондитеров

NATTR4 - Выработано (кг)

NATTR5 - Выполнение заказа

NATTR6 - Дежи

NATTR7 - реальный выход:с учетом округления муки

NATTR8 - Выход при 14.5

NATTR9 - Выход при влажности

ORD_TYPE - Тип заказа

PAIN_AMNT - Мука

SHIFT - Номер смены PAC1

PACA Расход сырья на заказ

KREFL2 - R08

KANAL2 - Код сырья

NATTR8 - расход с учетом влажности

PACD Движение муки в бункерах

DATDOC - дата отчета

DREFL1 - R317

DANAL1 - код бункера

D1NAME - наименование бункера

KREFL2 - R08

KANAL2 - код муки

K2NAME - наименование муки

NATTR1 - входящий остаток

NATTR2 - приход муки

NATTR3 - расход муки

NATTR4 - выходящий остаток

NATTR5 - передача на склад

NATTR6 - зачистка, излишки

NATTR7 - зачистка, недостачи

NATTR8 - передача в другое производство