REW CTRL F9
Материал из Фабиус wiki
Версия от 12:50, 25 августа 2017; Hisava (обсуждение | вклад)
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 )