REW CTRL F9 — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
м
м
Строка 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 )

Смотрите также

Полезные функции

Функции Delphi