FILL R473 SB — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м (→Текст) |
||
Строка 2: | Строка 2: | ||
Заполнить справочник R473 для СБ | Заполнить справочник R473 для СБ | ||
= Текст = | = Текст = | ||
+ | local i, sql, fld, _, mm | ||
+ | fld := ' _0,N,1; _1,N,5; _2,D,4; _3,N,14,4; _4,N,14,4; ' | ||
+ | try | ||
+ | _ := CreateTmpFile( fld, '_', ~IsFreeDel := true ) | ||
+ | fld := ' m1,N,5; m2,D,4; ' | ||
+ | mm := CreateTmpFile( fld, 'mm', ~IsFreeDel := true ) | ||
+ | for i := 0 to 0 // за текущий месяц | ||
+ | sql := [ Select DANAL2, DATDOC, ] + SQLFIELD( 'PRICE1' ) + [, ] + SQLFIELD( 'ALLPRICE' ) + [ From DOCS] + RET_F_EXT( DATE(),, -i ) + [ ; | ||
+ | Where KINDDOC = 'UTH' and LVLNUM = '2' and AMNT <> 0 and "SUM" <> 0 and DREFL1 = 'R10 ' and DANAL1 > 0 and DREFL2 = 'R08 ' ] | ||
+ | SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _1, _2, _3, _4 ) ] + sql, OpdataPath ) | ||
+ | next | ||
+ | sql := [ Select _1, MAX( _2 ) From ] + TmpFilePath( _ ) + [ Group by _1 ] // максимальные даты | ||
+ | SimpleSql( [ Insert into ] + TmpFilePath( mm ) + [( m1, m2 ) ] + sql, OpdataPath ) | ||
+ | sql := [ Update _ Set _0 = 1 From ] + TmpFilePath( _ ) + [ _ left outer join ] + TmpFilePath( mm ) + [ ON _1 = m1 and _2 = m2 ; | ||
+ | Where m2 is not null ] | ||
+ | SIMPLESQL( sql, temppath ) // помечаем новое сырье | ||
+ | sql := [ Delete From ] + TmpFilePath( _ ) + [ Where _0 is null ] | ||
+ | SIMPLESQL( sql, temppath ) // удаляем старое сырье | ||
+ | sql := [ UPDATE ] + TmpFilePath( _ ) + [ Set _2 = '] + SQLDATE( BOY( DATE() ) ) + [' ] | ||
+ | SIMPLESQL( sql, temppath ) // надо установить сегодняшнюю дату ( цены устанавливаются сегодня ) | ||
+ | sql := [ UPDATE ] + TmpFilePath( _ ) + [ Set _3 = ROUND( _3 * 101 / 100, 1 ), _4 = ROUND( _4 * 101 / 100, 1 ) ] | ||
+ | SIMPLESQL( sql, temppath ) // увеличиваем цену на 1% | ||
+ | sql := [ UPDATE R473 Set KOD_R10 = 1 From R473 left outer join ] + TmpFilePath( _ ) + [ ; | ||
+ | ON KOD = _1 and VAR_DATE = _2 and PRICE1 = _3 and OTP_PRICE = _4 Where _2 is not null ] | ||
+ | SIMPLESQL( sql, reflispath ) // помечаем старое сырье | ||
+ | sql := [ Delete From R473 Where 'SYSTEM.' = 'SYSTEM.' and KOD_R10 = 1 ] | ||
+ | SIMPLESQL( sql, reflispath ) // удаляем старое сырье | ||
+ | sql := [ Select _1, _2, _3, _4 From ] + TmpFilePath( _ ) | ||
+ | SimpleSql( [ Insert into R473( KOD, VAR_DATE, PRICE1, OTP_PRICE ) ] + sql, reflispath ) | ||
+ | finally | ||
+ | CLOSETABLE( mm ) | ||
+ | CLOSETABLE( _ ) | ||
+ | end | ||
+ | |||
+ | |||
+ | |||
+ | // m1 код | ||
+ | // m2 дата | ||
+ | |||
+ | |||
+ | |||
+ | // _0 максимальная ли дата ( 1 - максимальная ) | ||
+ | // _1 код | ||
+ | // _2 дата | ||
+ | // _3 цены без НДС | ||
+ | // _4 цены с НДС | ||
+ | // _5 | ||
+ | // _6 | ||
+ | // _7 | ||
+ | // _8 | ||
+ | // _9 | ||
+ | |||
+ | // sql := [ Select DISTINCT KOD From MTUN] + RET_F_EXT( DATE(),, -1 ) + [ Where REFL = 'R08 ' ] | ||
= Смотрите также = | = Смотрите также = |
Версия 12:55, 27 июля 2018
FILL_R473_SB - это программа из справочника R266
Заполнить справочник R473 для СБ
Текст
local i, sql, fld, _, mm fld := ' _0,N,1; _1,N,5; _2,D,4; _3,N,14,4; _4,N,14,4; ' try _ := CreateTmpFile( fld, '_', ~IsFreeDel := true ) fld := ' m1,N,5; m2,D,4; ' mm := CreateTmpFile( fld, 'mm', ~IsFreeDel := true ) for i := 0 to 0 // за текущий месяц sql := [ Select DANAL2, DATDOC, ] + SQLFIELD( 'PRICE1' ) + [, ] + SQLFIELD( 'ALLPRICE' ) + [ From DOCS] + RET_F_EXT( DATE(),, -i ) + [ ; Where KINDDOC = 'UTH' and LVLNUM = '2' and AMNT <> 0 and "SUM" <> 0 and DREFL1 = 'R10 ' and DANAL1 > 0 and DREFL2 = 'R08 ' ] SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [( _1, _2, _3, _4 ) ] + sql, OpdataPath ) next sql := [ Select _1, MAX( _2 ) From ] + TmpFilePath( _ ) + [ Group by _1 ] // максимальные даты SimpleSql( [ Insert into ] + TmpFilePath( mm ) + [( m1, m2 ) ] + sql, OpdataPath ) sql := [ Update _ Set _0 = 1 From ] + TmpFilePath( _ ) + [ _ left outer join ] + TmpFilePath( mm ) + [ ON _1 = m1 and _2 = m2 ; Where m2 is not null ] SIMPLESQL( sql, temppath ) // помечаем новое сырье sql := [ Delete From ] + TmpFilePath( _ ) + [ Where _0 is null ] SIMPLESQL( sql, temppath ) // удаляем старое сырье sql := [ UPDATE ] + TmpFilePath( _ ) + [ Set _2 = '] + SQLDATE( BOY( DATE() ) ) + [' ] SIMPLESQL( sql, temppath ) // надо установить сегодняшнюю дату ( цены устанавливаются сегодня ) sql := [ UPDATE ] + TmpFilePath( _ ) + [ Set _3 = ROUND( _3 * 101 / 100, 1 ), _4 = ROUND( _4 * 101 / 100, 1 ) ] SIMPLESQL( sql, temppath ) // увеличиваем цену на 1% sql := [ UPDATE R473 Set KOD_R10 = 1 From R473 left outer join ] + TmpFilePath( _ ) + [ ; ON KOD = _1 and VAR_DATE = _2 and PRICE1 = _3 and OTP_PRICE = _4 Where _2 is not null ] SIMPLESQL( sql, reflispath ) // помечаем старое сырье sql := [ Delete From R473 Where 'SYSTEM.' = 'SYSTEM.' and KOD_R10 = 1 ] SIMPLESQL( sql, reflispath ) // удаляем старое сырье sql := [ Select _1, _2, _3, _4 From ] + TmpFilePath( _ ) SimpleSql( [ Insert into R473( KOD, VAR_DATE, PRICE1, OTP_PRICE ) ] + sql, reflispath ) finally CLOSETABLE( mm ) CLOSETABLE( _ ) end // m1 код // m2 дата // _0 максимальная ли дата ( 1 - максимальная ) // _1 код // _2 дата // _3 цены без НДС // _4 цены с НДС // _5 // _6 // _7 // _8 // _9 // sql := [ Select DISTINCT KOD From MTUN] + RET_F_EXT( DATE(),, -1 ) + [ Where REFL = 'R08 ' ]