REW CTRL F9 — различия между версиями
Материал из Фабиус wiki
Hisava (обсуждение | вклад) м |
Hisava (обсуждение | вклад) м |
||
| Строка 1: | Строка 1: | ||
[[REW_CTRL_F9]] - это программа из справочника [[R266]] | [[REW_CTRL_F9]] - это программа из справочника [[R266]] | ||
Вызывается по CTRL+F9 из документа "Пересортица", этаж 2 | Вызывается по CTRL+F9 из документа "Пересортица", этаж 2 | ||
| + | = Текст = | ||
| + | local fld, _, _2, sql, DescFld, DescHK, DescTbl, prog1, sr, ind | ||
| + | |||
| + | fld := ' _1,N,1; _2,C,4; _3,N,5; _4,N,14,4; _5,N,14,4; _6,N,14,4; _7,N,5;; | ||
| + | _8,C,10; _9,C,50; ' | ||
| + | |||
| + | if Empty( AUTOID ) | ||
| + | return | ||
| + | endif | ||
| + | |||
| + | prog1 := GetProgText( '_5_PostBlk' ) | ||
| + | |||
| + | sql := [ Select REFL2, ANAL2, EAMNT, ESUM ; | ||
| + | From REPS] + Ret_f_ext() + [ ; | ||
| + | Where SHIFT = '] + DOCS1->DSHIFT + [' and REFL1 = '] + DOCS1->DREFL1 + [' and ; | ||
| + | ANAL1 = ] + DOCS1->DANAL1 + [ and ANAL2 <> 0 and EAMNT <> 0 ] | ||
| + | |||
| + | try | ||
| + | _ := CreateTmpFile( fld, '_' , ~IsFreeDel := true ) | ||
| + | _2 := CreateTmpFile( fld, '_2', ~IsFreeDel := true ) | ||
| + | |||
| + | SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _2, _3, ; | ||
| + | _5, _6 ) ] + sql, OpdataPath ) | ||
| + | |||
| + | // r08 | ||
| + | sql := [ Update _2 ; | ||
| + | Set _9 = Left( PNAME, 50 ), _7 = KODED ; | ||
| + | From ] + TmpFilePath( _2 ) + [ _2 ; | ||
| + | left outer join R08 ON _3 = KOD ; | ||
| + | Where _2 = 'R08 ' ] | ||
| + | SimpleSql( sql, ReflisPath ) | ||
| + | |||
| + | // r11 | ||
| + | sql := [ Update _2 ; | ||
| + | Set _9 = Left( PNAME, 50 ), _7 = KODED ; | ||
| + | From ] + TmpFilePath( _2 ) + [ _2 ; | ||
| + | left outer join R11 ON _3 = KOD ; | ||
| + | Where _2 = 'R11 ' ] | ||
| + | SimpleSql( sql, ReflisPath ) | ||
| + | |||
| + | sql := [ Update _2 ; | ||
| + | Set _4 = Round( _6 / _5, 2 ) ; | ||
| + | From ] + TmpFilePath( _2 ) + [ _2 ] | ||
| + | SimpleSql( sql, TempPath ) | ||
| + | |||
| + | // _2 -> _ | ||
| + | sql := [ Select TOP 100 PERCENT * ; | ||
| + | From ] + TmpFilePath( _2 ) + [ ; | ||
| + | Order by _4 ] | ||
| + | SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [ ] + sql, OpdataPath ) | ||
| + | |||
| + | // r09 | ||
| + | sql := [ Update _ ; | ||
| + | Set _8 = PNAME ; | ||
| + | From ] + TmpFilePath( _ ) + [ _ ; | ||
| + | left outer join R09 ON _7 = KOD ] | ||
| + | SimpleSql( sql, ReflisPath ) | ||
| + | |||
| + | ( _ )->( DbGoTop() ) | ||
| + | |||
| + | ind := CreateIndex( _, '_9', '_9' ) | ||
| + | ( _ )->( OrdSetFocus( '_9' ) ) | ||
| + | |||
| + | DescFld := { ; | ||
| + | { { 'FldName', '_3' }, { 'FldTitl', 'Код' }, { 'PreBlk', false } }, ; | ||
| + | { { 'FldName', '_9' }, { 'FldTitl', 'Наименование' }, { 'PreBlk', false } }, ; | ||
| + | { { 'FldName', '_8' }, { 'FldTitl', 'ед.изм.' }, { 'PreBlk', false } }, ; | ||
| + | { { 'FldName', '_5' }, { 'FldTitl', 'Количество' }, { 'PostBlk', prog1 } }, ; | ||
| + | { { 'FldName', '_4' }, { 'FldTitl', 'Цена' }, { 'PreBlk', false } }, ; | ||
| + | { { 'FldName', '_6' }, { 'FldTitl', 'Сумма' }, { 'PreBlk', false } } ; | ||
| + | } | ||
| + | |||
| + | DescHK := { ; | ||
| + | { ; | ||
| + | { 'KeyName', 'F7' }, ; | ||
| + | { 'TEXT' , 'В накл.' }, ; | ||
| + | { 'BLK', 'CloseForm( GetForm(), false ), SetProperty( "ModalResult", 1, GetForm() )' } ; | ||
| + | }, ; | ||
| + | { { 'KeyName', 'F6' } }, ; | ||
| + | { { 'KeyName', 'F8' } }, ; | ||
| + | { { 'KeyName', 'Enter' }, ; | ||
| + | { 'TEXT' , 'Оборот' }, ; | ||
| + | { 'BLK' , 'gridedit(true)' } ; | ||
| + | } ; | ||
| + | } | ||
| + | |||
| + | DescTbl := { ; | ||
| + | { 'Title', 'Выберите одну номенклатуру по Alt+F1 ( или измените количество ) и нажмите F7' },; | ||
| + | { 'ResultExpr', 'SelRows()' }, ; | ||
| + | { 'CurLineStr', 'RealName( _2, _3, true )' }, ; | ||
| + | { 'ShowType' , 2 } ; | ||
| + | } | ||
| + | |||
| + | sr := MyGrid( _, DescTbl, DescFld, DescHK, ~Modal := true ) | ||
| + | |||
| + | if !Empty( sr ) | ||
| + | ( _ )->( DbGoTo( sr[1] ) ) | ||
| + | ( _ )->_1 := 1 | ||
| + | |||
| + | // KREFL2 - справочник | ||
| + | // KANAL2 - код | ||
| + | // NATTR1 - количество | ||
| + | KREFL2 := ( _ )->_2 | ||
| + | KANAL2 := ( _ )->_3 | ||
| + | NATTR1 := ( _ )->_5 | ||
| + | endif | ||
| + | |||
| + | finally | ||
| + | DeleteTmpIndex( _, ind ) | ||
| + | CloseTable( _ ) | ||
| + | CloseTable( _2 ) | ||
| + | end | ||
| + | |||
| + | // _1 - признак выбора | ||
| + | // _2 - справочник | ||
| + | // _3 - код | ||
| + | // _4 - цена | ||
| + | // _5 - количество | ||
| + | // _6 - сумма | ||
| + | // _7 - единица измерения, код | ||
| + | // _8 - единица измерения, наименование | ||
| + | // _9 - наименование | ||
| + | |||
| + | <_5_PostBlk> | ||
| + | |||
| + | if NewValue <> OldValue | ||
| + | _6 := Round( val( NewValue ) * _4, 2 ) | ||
| + | endif | ||
| + | |||
| + | SetSelRows( Recno(), true ) | ||
= Смотрите также = | = Смотрите также = | ||
[[Полезные функции]] | [[Полезные функции]] | ||
[[Функции Delphi]] | [[Функции Delphi]] | ||
Версия 12:50, 25 августа 2017
REW_CTRL_F9 - это программа из справочника R266
Вызывается по CTRL+F9 из документа "Пересортица", этаж 2
Текст
local fld, _, _2, sql, DescFld, DescHK, DescTbl, prog1, sr, ind
fld := ' _1,N,1; _2,C,4; _3,N,5; _4,N,14,4; _5,N,14,4; _6,N,14,4; _7,N,5;;
_8,C,10; _9,C,50; '
if Empty( AUTOID )
return
endif
prog1 := GetProgText( '_5_PostBlk' )
sql := [ Select REFL2, ANAL2, EAMNT, ESUM ;
From REPS] + Ret_f_ext() + [ ;
Where SHIFT = '] + DOCS1->DSHIFT + [' and REFL1 = '] + DOCS1->DREFL1 + [' and ;
ANAL1 = ] + DOCS1->DANAL1 + [ and ANAL2 <> 0 and EAMNT <> 0 ]
try
_ := CreateTmpFile( fld, '_' , ~IsFreeDel := true )
_2 := CreateTmpFile( fld, '_2', ~IsFreeDel := true )
SimpleSql( [ Insert into ] + TmpFilePath( _2 ) + [( _2, _3, ;
_5, _6 ) ] + sql, OpdataPath )
// r08
sql := [ Update _2 ;
Set _9 = Left( PNAME, 50 ), _7 = KODED ;
From ] + TmpFilePath( _2 ) + [ _2 ;
left outer join R08 ON _3 = KOD ;
Where _2 = 'R08 ' ]
SimpleSql( sql, ReflisPath )
// r11
sql := [ Update _2 ;
Set _9 = Left( PNAME, 50 ), _7 = KODED ;
From ] + TmpFilePath( _2 ) + [ _2 ;
left outer join R11 ON _3 = KOD ;
Where _2 = 'R11 ' ]
SimpleSql( sql, ReflisPath )
sql := [ Update _2 ;
Set _4 = Round( _6 / _5, 2 ) ;
From ] + TmpFilePath( _2 ) + [ _2 ]
SimpleSql( sql, TempPath )
// _2 -> _
sql := [ Select TOP 100 PERCENT * ;
From ] + TmpFilePath( _2 ) + [ ;
Order by _4 ]
SimpleSql( [ Insert into ] + TmpFilePath( _ ) + [ ] + sql, OpdataPath )
// r09
sql := [ Update _ ;
Set _8 = PNAME ;
From ] + TmpFilePath( _ ) + [ _ ;
left outer join R09 ON _7 = KOD ]
SimpleSql( sql, ReflisPath )
( _ )->( DbGoTop() )
ind := CreateIndex( _, '_9', '_9' )
( _ )->( OrdSetFocus( '_9' ) )
DescFld := { ;
{ { 'FldName', '_3' }, { 'FldTitl', 'Код' }, { 'PreBlk', false } }, ;
{ { 'FldName', '_9' }, { 'FldTitl', 'Наименование' }, { 'PreBlk', false } }, ;
{ { 'FldName', '_8' }, { 'FldTitl', 'ед.изм.' }, { 'PreBlk', false } }, ;
{ { 'FldName', '_5' }, { 'FldTitl', 'Количество' }, { 'PostBlk', prog1 } }, ;
{ { 'FldName', '_4' }, { 'FldTitl', 'Цена' }, { 'PreBlk', false } }, ;
{ { 'FldName', '_6' }, { 'FldTitl', 'Сумма' }, { 'PreBlk', false } } ;
}
DescHK := { ;
{ ;
{ 'KeyName', 'F7' }, ;
{ 'TEXT' , 'В накл.' }, ;
{ 'BLK', 'CloseForm( GetForm(), false ), SetProperty( "ModalResult", 1, GetForm() )' } ;
}, ;
{ { 'KeyName', 'F6' } }, ;
{ { 'KeyName', 'F8' } }, ;
{ { 'KeyName', 'Enter' }, ;
{ 'TEXT' , 'Оборот' }, ;
{ 'BLK' , 'gridedit(true)' } ;
} ;
}
DescTbl := { ;
{ 'Title', 'Выберите одну номенклатуру по Alt+F1 ( или измените количество ) и нажмите F7' },;
{ 'ResultExpr', 'SelRows()' }, ;
{ 'CurLineStr', 'RealName( _2, _3, true )' }, ;
{ 'ShowType' , 2 } ;
}
sr := MyGrid( _, DescTbl, DescFld, DescHK, ~Modal := true )
if !Empty( sr )
( _ )->( DbGoTo( sr[1] ) )
( _ )->_1 := 1
// KREFL2 - справочник
// KANAL2 - код
// NATTR1 - количество
KREFL2 := ( _ )->_2
KANAL2 := ( _ )->_3
NATTR1 := ( _ )->_5
endif
finally
DeleteTmpIndex( _, ind )
CloseTable( _ )
CloseTable( _2 )
end
// _1 - признак выбора
// _2 - справочник
// _3 - код
// _4 - цена
// _5 - количество
// _6 - сумма
// _7 - единица измерения, код
// _8 - единица измерения, наименование
// _9 - наименование
<_5_PostBlk>
if NewValue <> OldValue
_6 := Round( val( NewValue ) * _4, 2 )
endif
SetSelRows( Recno(), true )