ORL 170922 — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) (Новая страница: «ORL_170922 - это сведения из справочника R238 = Смотрите также = R238») |
Hisava (обсуждение | вклад) м (→Условие отбора) |
||
(не показана одна промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
[[ORL_170922]] - это сведения из справочника [[R238]] | [[ORL_170922]] - это сведения из справочника [[R238]] | ||
+ | Движение по товарам | ||
+ | [[Магазин]] - Сведения - Движение товаров с начала месяца по дату | ||
+ | = Условие отбора = | ||
+ | public aa40, aa70 | ||
+ | local r20_kod, id, fld, sql, _, _2, msg, aa, am, i, ii | ||
+ | id := InputDate() | ||
+ | if Empty( id ) | ||
+ | return | ||
+ | endif | ||
+ | r20_kod := GETPARAM( 'TASKANAL' ) | ||
+ | M->QwrTitle := ' ( ' + BOM( id ) + ' - ' + id + ' ) ' + RealName( 'R20', r20_kod ) + ' ( ' + r20_kod + ' )' | ||
+ | aa40 := 'Остаток;на утро;' + BOM( id ) | ||
+ | aa70 := 'Остаток;на вечер;' + id | ||
+ | try | ||
+ | WaitMsg( 'Подготовка данных', msg ) | ||
+ | fld := ' _0,C,10; _1,C,4; _2,N,5; _3,C,40; _4,N,14,4; _5,N,14,4; _6,N,14,4; _7,N,14,4; _8,C,40; _9,C,40; ' | ||
+ | _ := CreateTmpFile( fld, '_', ~IsFreeDel := true, ~Own := Self ) | ||
+ | _2 := CreateTmpFile( fld, '_2', ~IsFreeDel := true, ~Own := Self ) | ||
+ | // _4 остаток на начала месяца | ||
+ | sql := [ Select REFL, KOD, BAMNT From MTUN] + Ret_f_ext( id ) + [ Where BKACNT = '41.2 ' and REFLANAL = 'R20 ' and ; | ||
+ | ANAL = ] + r20_kod + [ and KOD > 0 and BAMNT <> 0 ] | ||
+ | SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _1, _2, _4 ) ] + sql, OpdataPath ) | ||
+ | // _5 приход | ||
+ | sql := [ Select DREFL2, DANAL2, AMNT From PRVS] + Ret_f_ext( id ) + [ Where DEBT = '41.2 ' and DREFL1 = 'R20 ' and ; | ||
+ | DANAL1 = ] + r20_kod + [ AND DANAL2 > 0 and AMNT <> 0 and DATDOC <= '] + SqlDate( id ) + [' ] | ||
+ | SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _1, _2, _5 ) ] + sql, OpdataPath ) | ||
+ | // _6 расход | ||
+ | sql := [ Select KREFL2, KANAL2, AMNT From PRVS] + Ret_f_ext( id ) + [ Where KRED = '41.2 ' and KREFL1 = 'R20 ' and ; | ||
+ | KANAL1 = ] + r20_kod + [ AND KANAL2 > 0 and AMNT <> 0 and DATDOC <= '] + SqlDate( id ) + [' ] | ||
+ | SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _1, _2, _6 ) ] + sql, OpdataPath ) | ||
+ | // r08 | ||
+ | sql := [ Delete From ] + TmpFilePath( _2 ) + [ Where _1 = 'R11 ' ] | ||
+ | SimpleSql( sql, TempPath ) | ||
+ | // _2 -> _ | ||
+ | sql := [ Select _2, Sum( _4 ), Sum( _5 ), Sum( _6 ) From ] + TmpFilePath( _2 ) + [ Group by _2 ] | ||
+ | SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _2, _4, _5, _6 ) ] + sql, TempPath ) | ||
+ | // _7 остаток на дату | ||
+ | sql := [ Update ] + TmpFilePath( _ ) + [ Set _7 = _4 + _5 - _6 ] | ||
+ | SimpleSql( sql, TempPath ) | ||
+ | // r08 | ||
+ | sql := [ Update _ Set _0 = CODEGROUP, _3 = Left( PNAME, 40 ) From ] + TmpFilePath( _ ) + [ _ left outer join R08 ON _2 = KOD ] | ||
+ | SimpleSql( sql, ReflisPath ) | ||
+ | ( _ )->( DbGoTop() ) | ||
+ | while !( _ )->( eof() ) | ||
+ | ( _ )->_8 := Left( FULLNAMEGROUP2( 'R08', ( _ )->_0, 3 ), 40 ) | ||
+ | ( _ )->_9 := Left( FULLNAMEGROUP2( 'R08', ( _ )->_0, 4 ), 40 ) | ||
+ | ( _ )->( DbSkip() ) | ||
+ | end | ||
+ | ( _ )->( DbGoTop() ) | ||
+ | sql := [ Select DISTINCT _8 From ] + TmpFilePath( _ ) + [ Order by _8 ] | ||
+ | aa := SqlToArr( sql, { '_8' } ) | ||
+ | if !Empty( aa ) | ||
+ | aa := PrepareArr( aa ) | ||
+ | endif | ||
+ | finally | ||
+ | HideMsg( msg ) | ||
+ | end | ||
+ | am := {} | ||
+ | AcMenu( 'Выберите группы', aa, ~IsMultiChoice := true, ~ArChoice := am ) | ||
+ | if !Empty( am ) | ||
+ | for i := 1 to len( am ) | ||
+ | ii := am[i] + 1 | ||
+ | aa[ii] := 'zz' | ||
+ | next | ||
+ | for i := 1 to len( aa ) | ||
+ | sql := [ Delete From ] + TmpFilePath( _ ) + [ Where _8 = '] + aa[i] + [' ] | ||
+ | SimpleSql( sql, TempPath ) | ||
+ | next | ||
+ | endif | ||
+ | result := _ | ||
+ | // _0 группа | ||
+ | // _1 справочник | ||
+ | // _2 код | ||
+ | // _3 наименование | ||
+ | // _4 остаток на начала месяца | ||
+ | // _5 приход | ||
+ | // _6 расход | ||
+ | // _7 остаток на дату | ||
+ | // _8 группа, уровень 3 | ||
+ | // _9 группа, уровень 4 | ||
+ | |||
= Смотрите также = | = Смотрите также = | ||
[[R238]] | [[R238]] |
Текущая версия на 15:08, 3 октября 2017
ORL_170922 - это сведения из справочника R238
Движение по товарам
Магазин - Сведения - Движение товаров с начала месяца по дату
Условие отбора
public aa40, aa70 local r20_kod, id, fld, sql, _, _2, msg, aa, am, i, ii id := InputDate() if Empty( id ) return endif r20_kod := GETPARAM( 'TASKANAL' ) M->QwrTitle := ' ( ' + BOM( id ) + ' - ' + id + ' ) ' + RealName( 'R20', r20_kod ) + ' ( ' + r20_kod + ' )' aa40 := 'Остаток;на утро;' + BOM( id ) aa70 := 'Остаток;на вечер;' + id try WaitMsg( 'Подготовка данных', msg ) fld := ' _0,C,10; _1,C,4; _2,N,5; _3,C,40; _4,N,14,4; _5,N,14,4; _6,N,14,4; _7,N,14,4; _8,C,40; _9,C,40; ' _ := CreateTmpFile( fld, '_', ~IsFreeDel := true, ~Own := Self ) _2 := CreateTmpFile( fld, '_2', ~IsFreeDel := true, ~Own := Self ) // _4 остаток на начала месяца sql := [ Select REFL, KOD, BAMNT From MTUN] + Ret_f_ext( id ) + [ Where BKACNT = '41.2 ' and REFLANAL = 'R20 ' and ; ANAL = ] + r20_kod + [ and KOD > 0 and BAMNT <> 0 ] SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _1, _2, _4 ) ] + sql, OpdataPath ) // _5 приход sql := [ Select DREFL2, DANAL2, AMNT From PRVS] + Ret_f_ext( id ) + [ Where DEBT = '41.2 ' and DREFL1 = 'R20 ' and ; DANAL1 = ] + r20_kod + [ AND DANAL2 > 0 and AMNT <> 0 and DATDOC <= '] + SqlDate( id ) + [' ] SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _1, _2, _5 ) ] + sql, OpdataPath ) // _6 расход sql := [ Select KREFL2, KANAL2, AMNT From PRVS] + Ret_f_ext( id ) + [ Where KRED = '41.2 ' and KREFL1 = 'R20 ' and ; KANAL1 = ] + r20_kod + [ AND KANAL2 > 0 and AMNT <> 0 and DATDOC <= '] + SqlDate( id ) + [' ] SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _1, _2, _6 ) ] + sql, OpdataPath ) // r08 sql := [ Delete From ] + TmpFilePath( _2 ) + [ Where _1 = 'R11 ' ] SimpleSql( sql, TempPath ) // _2 -> _ sql := [ Select _2, Sum( _4 ), Sum( _5 ), Sum( _6 ) From ] + TmpFilePath( _2 ) + [ Group by _2 ] SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _2, _4, _5, _6 ) ] + sql, TempPath ) // _7 остаток на дату sql := [ Update ] + TmpFilePath( _ ) + [ Set _7 = _4 + _5 - _6 ] SimpleSql( sql, TempPath ) // r08 sql := [ Update _ Set _0 = CODEGROUP, _3 = Left( PNAME, 40 ) From ] + TmpFilePath( _ ) + [ _ left outer join R08 ON _2 = KOD ] SimpleSql( sql, ReflisPath ) ( _ )->( DbGoTop() ) while !( _ )->( eof() ) ( _ )->_8 := Left( FULLNAMEGROUP2( 'R08', ( _ )->_0, 3 ), 40 ) ( _ )->_9 := Left( FULLNAMEGROUP2( 'R08', ( _ )->_0, 4 ), 40 ) ( _ )->( DbSkip() ) end ( _ )->( DbGoTop() ) sql := [ Select DISTINCT _8 From ] + TmpFilePath( _ ) + [ Order by _8 ] aa := SqlToArr( sql, { '_8' } ) if !Empty( aa ) aa := PrepareArr( aa ) endif finally HideMsg( msg ) end am := {} AcMenu( 'Выберите группы', aa, ~IsMultiChoice := true, ~ArChoice := am ) if !Empty( am ) for i := 1 to len( am ) ii := am[i] + 1 aa[ii] := 'zz' next for i := 1 to len( aa ) sql := [ Delete From ] + TmpFilePath( _ ) + [ Where _8 = '] + aa[i] + [' ] SimpleSql( sql, TempPath ) next endif result := _ // _0 группа // _1 справочник // _2 код // _3 наименование // _4 остаток на начала месяца // _5 приход // _6 расход // _7 остаток на дату // _8 группа, уровень 3 // _9 группа, уровень 4