EHC 020315 — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) (Новая страница: «EHC_020315 - это программа из справочника R266») |
Hisava (обсуждение | вклад) м |
||
Строка 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