EHC 020315 — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
(Новая страница: «EHC_020315 - это программа из справочника R266»)
 
м
Строка 1: Строка 1:
 
EHC_020315 - это программа из справочника [[R266]]
 
EHC_020315 - это программа из справочника [[R266]]
 +
 +
Выполнение производственного заказа
 +
 +
EHC_020315( my, _, pr )
 +
 +
my - дата
 +
 +
_ - таблица
 +
 +
pr - код производства из справочника [[R10]]
 +
 +
= Текст программы =
 +
 +
parameters my, _, pr, _2
 +
 +
local sql, aa
 +
 +
sql := [ Delete From ] + TmpFilePath( _2 )
 +
SimpleSql( sql, TempPath )
 +
 +
// выработка ( упаковка, нарезка )
 +
sql := [ Select pac4.RGNUM, pac4.DANAL2, pac4.AMNT, pac5.KANAL2, pac5.NATTR8, pac4.DSHIFT, pac4.DATDOC ;
 +
  From DOCP] + Ret_f_ext( my ) + [ pac4 ;
 +
    left outer join DOCP] + Ret_f_ext( my ) + [ pac5 ON pac4.RGNUM = pac5.PARENT ;
 +
  Where pac4.KINDDOC = 'PAC' and pac4.LVLNUM = '4' and pac5.KINDDOC = 'PAC' and pac5.LVLNUM = '5' and ;
 +
    pac4.DREFL1 = 'R10 ' and pac4.DANAL1 in ( ] + ArrAsString( pr ) + [ ) and pac4.DREFL2 = 'R11 ' and pac4.AMNT <> 0 and ;
 +
    pac5.KREFL2 = 'R11 ' and pac4.DATDOC = '] + SqlDate( my ) + [' ]
 +
SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _0, _1, _2, _3, _4, _5, _6 ) ] + sql, OpdataPath )
 +
 +
// в массиве aa собираются регистрационные номера изделий, которые не сделаны из сырья ( а сделаны из других изделий )
 +
sql := [ Select _0 From ] + TmpFilePath( _2 )
 +
aa := SelectSqlToArr( sql, { '_0' } )
 +
if !IsEmpty( aa )
 +
  aa := PrepareArr( aa, 1 )
 +
endif
 +
 +
sql := [ Delete From ] + TmpFilePath( _2 )
 +
SimpleSql( sql, TempPath )
 +
 +
// выработка ( лысые, голые, неупакованные изделия )
 +
sql := [ Select RGNUM, DANAL2, AMNT, DSHIFT, DATDOC ;
 +
  From DOCP] + Ret_f_ext( my ) + [ ;
 +
  Where KINDDOC = 'PAC' and LVLNUM = '4' and DREFL1 = 'R10 ' and DANAL1 in ( ] + ArrAsString( pr ) + [ ) and ;
 +
    DREFL2 = 'R11 ' and AMNT <> 0 and DATDOC = '] + SqlDate( my ) + [' and RGNUM not in ( ] + ArrAsString2( aa ) + [ ) ]
 +
SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _0, _1, _2, _5, _6 ) ] + sql, OpdataPath )
 +
 +
// pac9.DANAL2, pac9.AMNT,
 +
// изделия, которые производятся из других изделий
 +
sql := [ Select pac9.RGNUM, paca.KANAL2, paca.NATTR8, pac9.DSHIFT, pac9.DATDOC From DOCP] + Ret_f_ext( my ) + [ pac9 ;
 +
    left outer join DOCP] + Ret_f_ext( my ) + [ paca ON pac9.RGNUM = paca.PARENT ;
 +
  Where pac9.KINDDOC = 'PAC' and pac9.LVLNUM = '9' and paca.KINDDOC = 'PAC' and paca.LVLNUM = 'A' and ;
 +
    pac9.DREFL1 = 'R10 ' and pac9.DANAL1 in ( ] + ArrAsString( pr ) + [ ) and pac9.DREFL2 = 'R11 ' and pac9.AMNT <> 0 and ;
 +
    paca.KREFL2 = 'R11 ' and pac9.DATDOC = '] + SqlDate( my ) + [' ]
 +
SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _0, _3, _4, _5, _6 ) ] + sql, OpdataPath )
 +
 +
// _6 - DATDOC
 +
 +
sql := [ Select _0 From ] + TmpFilePath( _ ) + [ Where _6 = '] + SqlDate( my ) + [' ]
 +
aa := SelectSqlToArr( sql, { '_0' } )
 +
if !IsEmpty( aa )
 +
  aa := PrepareArr( aa, 1 )
 +
endif
 +
 +
if Empty( aa )
 +
  // изделия, которые не производятся из других изделий
 +
  sql := [ Select RGNUM, DANAL2, AMNT, DSHIFT, DATDOC From DOCP] + Ret_f_ext( my ) + [ ;
 +
    Where KINDDOC = 'PAC' and LVLNUM = '9' and DREFL1 = 'R10 ' and DANAL1 in ( ] + ArrAsString( pr ) + [ ) and ;
 +
      DREFL2 = 'R11 ' and AMNT <> 0 and DATDOC = '] + SqlDate( my ) + [' ]
 +
  SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _0, _3, _4, _5, _6 ) ] + sql, OpdataPath )
 +
else
 +
  // изделия, которые не производятся из других изделий
 +
  sql := [ Select RGNUM, DANAL2, AMNT, DSHIFT, DATDOC From DOCP] + Ret_f_ext( my ) + [ ;
 +
    Where KINDDOC = 'PAC' and LVLNUM = '9' and DREFL1 = 'R10 ' and DANAL1 in ( ] + ArrAsString( pr ) + [ ) and ;
 +
      DREFL2 = 'R11 ' and AMNT <> 0 and DATDOC = '] + SqlDate( my ) + [' and RGNUM not in ( ] + ArrAsString2( aa ) + [ ) ]
 +
  SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _0, _3, _4, _5, _6 ) ] + sql, OpdataPath )
 +
endif
 +
 +
// _2 -> _
 +
sql := [ Select _1, _2, _5, _6 From ] + TmpFilePath( _2 )
 +
SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _3, _2, _5, _6 ) ] + sql, OpdataPath )
 +
 +
// заказ
 +
// _0 - RGNUM
 +
// _1 - код изделия
 +
// _2 - количество
 +
// _3 - код изделия - сырья
 +
// _4 - количество
 +
// _5 - dshift
 +
// _6 - datdoc

Версия 11:42, 17 мая 2016

EHC_020315 - это программа из справочника R266

Выполнение производственного заказа

EHC_020315( my, _, pr )

my - дата

_ - таблица

pr - код производства из справочника R10

Текст программы

parameters my, _, pr, _2

local sql, aa

sql := [ Delete From ] + TmpFilePath( _2 )
SimpleSql( sql, TempPath )

// выработка ( упаковка, нарезка )
sql := [ Select pac4.RGNUM, pac4.DANAL2, pac4.AMNT, pac5.KANAL2, pac5.NATTR8, pac4.DSHIFT, pac4.DATDOC ;
  From DOCP] + Ret_f_ext( my ) + [ pac4 ;
    left outer join DOCP] + Ret_f_ext( my ) + [ pac5 ON pac4.RGNUM = pac5.PARENT ;
  Where pac4.KINDDOC = 'PAC' and pac4.LVLNUM = '4' and pac5.KINDDOC = 'PAC' and pac5.LVLNUM = '5' and ;
    pac4.DREFL1 = 'R10 ' and pac4.DANAL1 in ( ] + ArrAsString( pr ) + [ ) and pac4.DREFL2 = 'R11 ' and pac4.AMNT <> 0 and ;
    pac5.KREFL2 = 'R11 ' and pac4.DATDOC = '] + SqlDate( my ) + [' ]
SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _0, _1, _2, _3, _4, _5, _6 ) ] + sql, OpdataPath )

// в массиве aa собираются регистрационные номера изделий, которые не сделаны из сырья ( а сделаны из других изделий )
sql := [ Select _0 From ] + TmpFilePath( _2 )
aa := SelectSqlToArr( sql, { '_0' } )
if !IsEmpty( aa )
  aa := PrepareArr( aa, 1 )
endif

sql := [ Delete From ] + TmpFilePath( _2 )
SimpleSql( sql, TempPath )

// выработка ( лысые, голые, неупакованные изделия )
sql := [ Select RGNUM, DANAL2, AMNT, DSHIFT, DATDOC ;
  From DOCP] + Ret_f_ext( my ) + [ ;
  Where KINDDOC = 'PAC' and LVLNUM = '4' and DREFL1 = 'R10 ' and DANAL1 in ( ] + ArrAsString( pr ) + [ ) and ;
    DREFL2 = 'R11 ' and AMNT <> 0 and DATDOC = '] + SqlDate( my ) + [' and RGNUM not in ( ] + ArrAsString2( aa ) + [ ) ]
SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _0, _1, _2, _5, _6 ) ] + sql, OpdataPath )

// pac9.DANAL2, pac9.AMNT,
// изделия, которые производятся из других изделий
sql := [ Select pac9.RGNUM, paca.KANAL2, paca.NATTR8, pac9.DSHIFT, pac9.DATDOC From DOCP] + Ret_f_ext( my ) + [ pac9 ;
    left outer join DOCP] + Ret_f_ext( my ) + [ paca ON pac9.RGNUM = paca.PARENT ;
  Where pac9.KINDDOC = 'PAC' and pac9.LVLNUM = '9' and paca.KINDDOC = 'PAC' and paca.LVLNUM = 'A' and ;
    pac9.DREFL1 = 'R10 ' and pac9.DANAL1 in ( ] + ArrAsString( pr ) + [ ) and pac9.DREFL2 = 'R11 ' and pac9.AMNT <> 0 and ;
    paca.KREFL2 = 'R11 ' and pac9.DATDOC = '] + SqlDate( my ) + [' ]
SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _0, _3, _4, _5, _6 ) ] + sql, OpdataPath )

// _6 - DATDOC

sql := [ Select _0 From ] + TmpFilePath( _ ) + [ Where _6 = '] + SqlDate( my ) + [' ]
aa := SelectSqlToArr( sql, { '_0' } )
if !IsEmpty( aa )
  aa := PrepareArr( aa, 1 )
endif

if Empty( aa )
  // изделия, которые не производятся из других изделий
  sql := [ Select RGNUM, DANAL2, AMNT, DSHIFT, DATDOC From DOCP] + Ret_f_ext( my ) + [ ;
    Where KINDDOC = 'PAC' and LVLNUM = '9' and DREFL1 = 'R10 ' and DANAL1 in ( ] + ArrAsString( pr ) + [ ) and ;
      DREFL2 = 'R11 ' and AMNT <> 0 and DATDOC = '] + SqlDate( my ) + [' ]
  SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _0, _3, _4, _5, _6 ) ] + sql, OpdataPath )
else
  // изделия, которые не производятся из других изделий
  sql := [ Select RGNUM, DANAL2, AMNT, DSHIFT, DATDOC From DOCP] + Ret_f_ext( my ) + [ ;
    Where KINDDOC = 'PAC' and LVLNUM = '9' and DREFL1 = 'R10 ' and DANAL1 in ( ] + ArrAsString( pr ) + [ ) and ;
      DREFL2 = 'R11 ' and AMNT <> 0 and DATDOC = '] + SqlDate( my ) + [' and RGNUM not in ( ] + ArrAsString2( aa ) + [ ) ]
  SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _0, _3, _4, _5, _6 ) ] + sql, OpdataPath )
endif

// _2 -> _
sql := [ Select _1, _2, _5, _6 From ] + TmpFilePath( _2 )
SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _3, _2, _5, _6 ) ] + sql, OpdataPath )

// заказ
// _0 - RGNUM
// _1 - код изделия
// _2 - количество
// _3 - код изделия - сырья
// _4 - количество
// _5 - dshift
// _6 - datdoc