NAT 09 12 — различия между версиями

Материал из Фабиус wiki
Перейти к: навигация, поиск
(Новая страница: «NAT_09_12 - это программа из справочника R266»)
 
м
Строка 1: Строка 1:
 
NAT_09_12 - это программа из справочника [[R266]]
 
NAT_09_12 - это программа из справочника [[R266]]
 +
 +
NAT_09_12( r466_kod,  id,  ga,  numdoc,  docs1_danal1 )
 +
 +
Добавление заказа на перемещение
 +
 +
Вызывается из документа NAT ( уровень 2 ) по CTRL+F10
 +
 +
r466_kod - завод, который производит продукцию
 +
 +
id - дата
 +
 +
ga - область, откуда мы вызываем функцию NAT_09_12
 +
 +
numdoc - номер заказа, если он уже был добавлен ранее
 +
 +
docs1_danal1 - код филиала, который будет отгружать продукцию
 +
 +
= Полный текст программы =
 +
 +
parameters r466_kod, id, ga, numdoc, docs1_danal1
 +
 +
local sql, aa, num, fld, r20_kod, r20_name, ArValues, zak1
 +
 +
r20_kod := SeekRef( 'R466', r466_kod, 'R20_KOD', 1 )
 +
r20_name := RealName( 'R20', r20_kod )
 +
 +
// NAT
 +
sql := [ Select DANAL2, NATTR4 ;
 +
  From DOCS] + Ret_f_ext( ( ga )->DATDOC ) + [ ;
 +
  Where KINDDOC = 'NAT' and LVLNUM = '2' and PARENT = '] + ( ga )->PARENT + [' and ;
 +
    DREFL2 = 'R11 ' and DANAL2 > 0 and DREFL3 = 'R466' and DANAL3 = ] + r466_kod + [ and NATTR4 > 0 ]
 +
aa := SqlToArr( sql, { 'DANAL2', 'NATTR4' } )
 +
if !IsEmpty( aa )
 +
  fld := { 'DATDOC', 'DANAL2', 'D2NAME', 'CATTR6', 'NATTR7' }
 +
  ArValues := {{ id, r20_kod, r20_name, '12.00', docs1_danal1 }}
 +
  if Empty( numdoc )
 +
    // Заказ на перемещение, уровень 1
 +
    num := AddAll( 'ZAK', '1', "",, fld, ArValues, {|| Field->NUMDOC }, ~Year := Year( id ), ~Month := Month( id ), ;
 +
      ~Day := Day( id ), ~NoDependence := { 'NATTR7', 'CATTR6', 'D2NAME' } )
 +
    if !Empty( num )
 +
      numdoc := num[1]
 +
    endif
 +
  endif
 +
  // находим шапку заказа
 +
  zak1 := OpenChildDoc( 'ZAK', '1', ~ParentForm := "", ~Year := Year( id ), ~Month := Month( id ), ~Day := Day( id ) )
 +
  ( zak1 )->( SetFilter( [ KINDDOC = 'ZAK' and LVLNUM = '1' and NUMDOC = '] + padl( numdoc, 10 ) + [' and ;
 +
    DTOS( DATDOC ) = '] + DTOS( id ) + [' and DANAL2 = ] + r20_kod + [ and NATTR7 = ] + docs1_danal1 ) )
 +
  if Empty( ( zak1 )->RGNUM )
 +
    // заказ удален
 +
    fld := { 'DATDOC', 'NUMDOC', 'DANAL2', 'D2NAME', 'CATTR6', 'NATTR7' }
 +
    ArValues := {{ id, padl( numdoc, 10 ), r20_kod, r20_name, '12.00', docs1_danal1 }}
 +
    AddAll( 'ZAK', '1', "",, fld, ArValues, ~Year := Year( id ), ~Month := Month( id ), ~Day := Day( id ), ;
 +
      ~NoDependence := { 'NATTR7', 'CATTR6', 'D2NAME' } )
 +
    ( zak1 )->( DbGoTop() )
 +
  endif
 +
  if !Empty( ( zak1 )->RGNUM )
 +
    AddAll( 'ZAK', '2', ( zak1 )->RGNUM,, { 'KANAL2', 'AMNT' }, aa,, ( zak1 )->( GetForm( GetArea() ) ), ~NoDependence := {'AMNT'} )
 +
  endif
 +
endif
 +
 +
result := numdoc
 +
 +
// ZAK1
 +
// DATDOC - дата
 +
// NUMDOC - номер
 +
// DANAL2 - код магазина из справочника торговых предприятий R20
 +
// D2NAME - наименование магазина
 +
// CATTR6 - время заказа
 +
// NATTR7 - код филиала отгрузки продукции

Версия 13:16, 25 мая 2016

NAT_09_12 - это программа из справочника R266

NAT_09_12( r466_kod, id, ga, numdoc, docs1_danal1 )

Добавление заказа на перемещение

Вызывается из документа NAT ( уровень 2 ) по CTRL+F10

r466_kod - завод, который производит продукцию

id - дата

ga - область, откуда мы вызываем функцию NAT_09_12

numdoc - номер заказа, если он уже был добавлен ранее

docs1_danal1 - код филиала, который будет отгружать продукцию

Полный текст программы

parameters r466_kod, id, ga, numdoc, docs1_danal1

local sql, aa, num, fld, r20_kod, r20_name, ArValues, zak1

r20_kod := SeekRef( 'R466', r466_kod, 'R20_KOD', 1 )
r20_name := RealName( 'R20', r20_kod )

// NAT
sql := [ Select DANAL2, NATTR4 ;
  From DOCS] + Ret_f_ext( ( ga )->DATDOC ) + [ ;
  Where KINDDOC = 'NAT' and LVLNUM = '2' and PARENT = '] + ( ga )->PARENT + [' and ;
    DREFL2 = 'R11 ' and DANAL2 > 0 and DREFL3 = 'R466' and DANAL3 = ] + r466_kod + [ and NATTR4 > 0 ]
aa := SqlToArr( sql, { 'DANAL2', 'NATTR4' } )
if !IsEmpty( aa )
  fld := { 'DATDOC', 'DANAL2', 'D2NAME', 'CATTR6', 'NATTR7' }
  ArValues := Шаблон:Id, r20 kod, r20 name, '12.00', docs1 danal1
  if Empty( numdoc )
    // Заказ на перемещение, уровень 1
    num := AddAll( 'ZAK', '1', "",, fld, ArValues, {|| Field->NUMDOC }, ~Year := Year( id ), ~Month := Month( id ), ;
      ~Day := Day( id ), ~NoDependence := { 'NATTR7', 'CATTR6', 'D2NAME' } )
    if !Empty( num )
      numdoc := num[1]
    endif
  endif
  // находим шапку заказа
  zak1 := OpenChildDoc( 'ZAK', '1', ~ParentForm := "", ~Year := Year( id ), ~Month := Month( id ), ~Day := Day( id ) )
  ( zak1 )->( SetFilter( [ KINDDOC = 'ZAK' and LVLNUM = '1' and NUMDOC = '] + padl( numdoc, 10 ) + [' and ;
    DTOS( DATDOC ) = '] + DTOS( id ) + [' and DANAL2 = ] + r20_kod + [ and NATTR7 = ] + docs1_danal1 ) )
  if Empty( ( zak1 )->RGNUM )
    // заказ удален
    fld := { 'DATDOC', 'NUMDOC', 'DANAL2', 'D2NAME', 'CATTR6', 'NATTR7' }
    ArValues := Шаблон:Id, padl( numdoc, 10 ), r20 kod, r20 name, '12.00', docs1 danal1
    AddAll( 'ZAK', '1', "",, fld, ArValues, ~Year := Year( id ), ~Month := Month( id ), ~Day := Day( id ), ;
      ~NoDependence := { 'NATTR7', 'CATTR6', 'D2NAME' } )
    ( zak1 )->( DbGoTop() )
  endif
  if !Empty( ( zak1 )->RGNUM )
    AddAll( 'ZAK', '2', ( zak1 )->RGNUM,, { 'KANAL2', 'AMNT' }, aa,, ( zak1 )->( GetForm( GetArea() ) ), ~NoDependence := {'AMNT'} )
  endif
endif

result := numdoc

// ZAK1
// DATDOC - дата
// NUMDOC - номер
// DANAL2 - код магазина из справочника торговых предприятий R20
// D2NAME - наименование магазина
// CATTR6 - время заказа
// NATTR7 - код филиала отгрузки продукции