Cp1251
DOC 
foreground = lightgray
document_width = 1000
document_height = 700
document_title = "ZetaSE.Autocomplect/ Аналоги"
preloadscript="
(global.create = 0)
(global.d1 = ('\''+'01.01.2003'+'\'') )
(global.get_num = 0)
(global.cur_id_active = -1)
(global.id_active = -100000)
"

postloadscript="($X
	 	 ($IF (($g.D_HEAD@getvalue 'HEAD.ACCEPT') == 1)
		  ($g.progress@setValue 'Только для чтения')
		 )
		($ret ''))"

{dscollection
   alias = ds
   initQuery = "select head_sq.nextval,sysdate,id_personal from personal where upper(login)=user"
   aliases = "hpk,date,idp"
   seqquery = "select spc_sq.nextval from dual"
   seqnames = "spk"
   initAction ="(global.create = 1)
                (global.get_num = 1)
                ($X ($G.substore@retrieve)
                    ($if (($G.substore@size) !=0)
                      (
		               (sz = ($g.substore@size))
                       (i = 0)
		               ($while (i < sz)
                        (
                         ($g.substore@SetCurRow (i))
                         ($G.d_spc@newrow)
                         (tmp = ($try ($g.substore@getvalue 'SPC.ID_ACTIVE') $catch ('NullException')(0)))
                         ($G.d_spc@setvalue 'SPC.ID_ACTIVE' tmp)
                         (tmp = ($try ($g.substore@getvalue 'ACTIVE.NAME_ACTIVE') $catch ('NullException')(' ')))
                         ($G.d_spc@setvalue 'ACTIVE.NAME_ACTIVE' tmp)
                         (tmp = ($try ($g.substore@getvalue 'SPC.ID_UNIT') $catch ('NullException')(0)))
                         ($G.d_spc@setvalue 'SPC.ID_UNIT' tmp)
                         (tmp = ($try ($g.substore@getvalue 'SPC.Q1_SPC') $catch ('NullException')(0)))
                         ($G.d_spc@setvalue 'SPC.Q1_SPC' tmp)
                         (tmp = ($try ($g.substore@getvalue 'SPC.Q2_SPC') $catch ('NullException')(0)))
                         ($G.d_spc@setvalue 'SPC.Q2_SPC' tmp)
                         (tmp = ($try ($g.substore@getvalue 'SPC.PRICE1_SPC') $catch ('NullException')(0)))
                         ($G.d_spc@setvalue 'SPC.PRICE1_SPC' tmp)
                         (tmp = ($try ($g.substore@getvalue 'SPC.PRICE2_SPC') $catch ('NullException')(0)))
                         ($G.d_spc@setvalue 'SPC.PRICE2_SPC' tmp)
                         (tmp = ($try ($g.substore@getvalue 'ACTIVE_PSEUDO_UNIT.OBOZN') $catch ('NullException')(' ')))
                         ($G.d_spc@setvalue 'ACTIVE_PSEUDO_UNIT.OBOZN' tmp)
                         (tmp = ($try ($g.substore@getvalue 'ACTIVE_TYPE.NAME_TYPE') $catch ('NullException')(' ')))
                         ($G.d_spc@setvalue 'ACTIVE_TYPE.NAME_TYPE' tmp)
                         (i = i + 1)
                        )
                       ) 
                      ) 
                    )
                    ($G.copy@retrieve)
                    ($if (($G.copy@size) !=0)
                      (
                       ($g.copy@SetCurRow (0))
                         (tmp = ($try ($g.copy@getvalue 'HEAD.NUM_PER_SD') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'HEAD.NUM_PER_SD' tmp)  
                         (tmp = ($try ($g.copy@getvalue 'HEAD.DATE_PER_SD') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'HEAD.DATE_PER_SD' tmp)                         
                         (tmp = ($try ($g.copy@getvalue 'HEAD.ID_DEPARTMENT1') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'HEAD.ID_DEPARTMENT1' tmp)                         
                         (tmp = ($try ($g.copy@getvalue 'DEPARTMENT.NAME1_DEP') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'DEPARTMENT.NAME1_DEP' tmp)
                         (tmp = ($try ($g.copy@getvalue 'HEAD.ID_DEPARTMENT2') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'HEAD.ID_DEPARTMENT2' tmp)
                         (tmp = ($try ($g.copy@getvalue 'HEAD.ID_CLIENT1') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'HEAD.ID_CLIENT1' tmp)
                         (tmp = ($try ($g.copy@getvalue 'CLIENT.NAME1_CLIENT') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'CLIENT.NAME1_CLIENT' tmp)
                         (tmp = ($try ($g.copy@getvalue 'HEAD.ID_CLIENT2') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'HEAD.ID_CLIENT2' tmp)
                         (tmp = ($try ($g.copy@getvalue 'CLIENT2.NAME1_CLIENT') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'CLIENT2.NAME1_CLIENT' tmp)
                         (tmp = ($try ($g.copy@getvalue 'HEAD.COMMENT_SD') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'HEAD.COMMENT_SD' tmp)
                         (tmp = ($try ($g.copy@getvalue 'HEAD.ID_CONTRACT') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'HEAD.ID_CONTRACT' tmp)
                         (tmp = ($try ($g.copy@getvalue 'CONTRACT.NAME_CONTRACT') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'CONTRACT.NAME_CONTRACT' tmp)
                         (tmp = ($try ($g.copy@getvalue 'HEAD.PARENT_ID_HEAD') $catch ('NullException')(0)))
                         ($G.d_head@setvalue 'HEAD.PARENT_ID_HEAD' tmp)
                      )
 	                ) 
                ($G.d_spc@notifyviews)
                ($G.d_head@notifyviews)
                ($ret 1)
                )                                    
                "
}
{datastore  alias=doc_num
    query="select num_sd from (select 'АНА-'||(nvl(max(to_number(substr(num_sd, 5))), 0) + 1) num_sd
             from head
            where head.num_sd like 'АНА-%')"
}
{datastore  alias=get_active_type
    query="select active_type.name_type from active,active_type where
            active.id_active = ~global.cur_id_active~ and active.id_type_active = active_type.id_type"
}
{datastore  alias=check1
    query="select count(1) cnt
             from head
            where id_active = ~($try (g.head_id_active) $catch ('NullException')(0))~
              and id_type_doc = 16
                  "
}
{datastore  alias=analog_check
    query="select analog, cnt
             from (
           select analog, (select count(1) from head where head.id_type_doc = 16 and head.id_active = active.id_active) cnt
             from active
            where id_active = ~global.id_active~
                  )
                  "
}
{datastore  alias=analog_doc
    query="select head.num_sd
             from head
            where head.id_active = ~global.id_active~
              and head.id_type_doc = 16
            union
           select head.num_sd
             from head, spc
            where head.id_head = spc.id_head
              and head.id_type_doc = 16
              and spc.id_active = ~global.id_active~"
}

{toolbar   BACKGROUND = "LIGHTGRAY"
{splitpanel   percent=25
{scrollpane 
{form width=780 height=208       bg_color="#c0c0c0"   alias = fm
   {label
       value="N док."       
       left=11    top=8     height=20       width=40
       font_size=12         font_family=0   bg_color="#c0c0c0"
   }  
   {field
       target=head.num_sd   border = box
       left=55     top=8    height=20       width=95
       alias=num_sd         font_size=12    font_family=0    bg_color="#ffffff"
       editable=readonly
   }  
   {label
       value="Дата док."    
       left=160    top=8    height=20       width=50
       font_size=12         font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=head.date_sd  border = box
       left=210    top=8    height=20       width=80
       alias=date_sd        font_size=12    font_family=0    bg_color="#ffffff"
       dep="ficd1"
       editable = no
   }
   {label
       value="Исполнитель"  
       left=310  top=8      height=20       width=70
       font_size=12         font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=personal.fname                border = box
       left=390    top=8    height=20       width=100
       alias=name           font_size=12    font_family=0    bg_color="#ffffff"
       editable = readonly
   }     
   {field 
	   type = string
	   left = 500  width = 70 height=25    
	   alias=ficd1           visible=no
	   exp="(ficd1 = global.d1)"
   }
   {field
       target=head.accept    border = box   visible=no
       left=200   top=83    height=20      width=40
       alias=accept         font_size=12    font_family=0    bg_color="#ffffff"
   }
   {label
       value="Актив"
       left=11    top=40    height=20       width=35
       font_size=12         font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=head.id_active
       editable = no           border = box
       left=50    top=40    height=20       width=60
       alias=head_id_active        font_size=12    font_family=0    bg_color="#ffffff"
   }
   {field
       target=active.name_active                 border = box
       left=120    top=40    height=20       width=400
       alias=head_name_active          font_size=12    font_family=0    bg_color="#ffffff"
       editable=handbook
       edit="opennew find_choose.rml 1, 0"
       editexp="($X
                    (global.id_active = STORE.active.id_active)
                    ($g.analog_check@retrieve)
                    ($if (($g.analog_check@getValue 'ANALOG') == 1)
                      ($if (($g.analog_check@getValue 'CNT') == 0)
                        (
                          ($g.self@sure 'Этот актив помечен как аналог, но в документах Аналог не найден. Это ошибка, обратитесь к программисту.' 1)
                          ($ret '')
                        )
                      )
                    )

                    ($g.analog_doc@retrieve)
                    ($if (($g.analog_doc@size) > 0)
                      (
                        ($g.self@sure 'Этот актив уже присутствует в качестве оригинала или аналога в документе ' + ($g.analog_doc@getValue 'head.num_sd') + '. В текущей версии не допускается создавать цепочки аналогов.' 1)
                        ($ret '')
                      )
                    )
                    (g.head_name_active = STORE.active.name_active)
                    (g.head_id_active = STORE.active.id_active)
                    ($ret '')
                )"
   }
   {label
       value="Ед. изм."
       left=530    top=40    height=20       width=50
       font_size=12         font_family=0   bg_color="#c0c0c0"
   }
   {field
       target=head.id_unit
       editable = no  visible = no          border = box
       left=590    top=40    height=20       width=60
       alias=head_id_unit        font_size=12    font_family=0    bg_color="#ffffff"
   }
   {field
       target=active_pseudo_unit.obozn                 border = box
       left=590    top=40    height=20       width=100
       alias=head_name_unit          font_size=12    font_family=0    bg_color="#ffffff"
       editable=handbook
       edit = "opennew psevdo_units.rml ~($try (head_id_active) $catch ('NullException') (-1) )~"
       editexp = "head_name_unit=STORE.active_pseudo_unit.obozn;head_id_unit=STORE.active_pseudo_unit.id_pseudo_unit"
   }
   {label
       value="Примечание"    
       left=11    top=70     height=20      width=65
       font_size=12          font_family=0  bg_color="#c0c0c0"
   }
   {field
       target=head.comment_sd   border = box
       left=80    top=70    height=20      width=495
       alias=comment_sd         font_size=12   font_family=0    bg_color="#ffffff"
   }
   {label
    alias=progress
    left = 700  top = 8      width = 250     height = 20 
    font_size=17              font_family=1   font_color="#FF0033"
    bg_color="#c0c0c0"        border=none     
   }
{datastore 
        alias = d_head
        query = "select head.id_head,head.id_active,head.id_unit,head.id_type_doc,head.accept,
                        head.num_sd,head.date_sd,
                        head.num_per_sd,head.date_per_sd,
                        head.id_department1,department.name1_dep,head.id_department2,
                        head.id_client1,client.name1_client,
                        head.id_client2,client2.name1_client,
                        head.comment_sd,
                        head.id_contract,contract.name_contract,
                        head.id_personal,personal.fname,
                        head.parent_id_head,
                        active.name_active, active_pseudo_unit.obozn
                   from head,client,client client2,personal,department,contract,active,active_pseudo_unit
                  where head.id_head = ~($try ($if (global.create == 0)
                                                (ARGUMENTS.0)
                                               $else (ds.hpk))
                                         $catch ('any') (-1))~
                   and head.id_client1 = client.id_client (+)
                   and head.id_client2 = client2.id_client (+)
                   and head.id_contract = contract.id_contract (+)
                   and head.id_department1 = department.id_department (+)
                   and head.id_personal = personal.id_personal(+)
                   and head.id_active = active.id_active (+)
                   and head.id_unit = active_pseudo_unit.id_pseudo_unit (+)"
              editable = yes
                  head = yes
                unique = "('head','head.id_head')"
               default = "head.id_head=~ds.hpk~,head.id_type_doc=~16~,
                          head.date_sd=~ds.date~,
                          head.id_personal=~ds.idp~,
                          head.accept=~0~,
                          head.num_sd=~'АНА-'~,
                          head.num_per_sd=~'.'~,head.date_per_sd=~ds.date~,
                          head.id_department1=~0~,
                          head.id_department2=~0~,
                          head.id_contract=~1~,
                          head.id_client1=~1~,
                          client.name1_client=~'ФИРМА'~, 
                          head.id_client2=~1~,
                          client2.name1_client=~'ФИРМА'~"
  	          {datastore
               alias = copy
               query = "select 
                        head.date_sd,
                        head.num_per_sd,head.date_per_sd,
                        head.id_department1,department.name1_dep,head.id_department2,
                        head.id_client1,client.name1_client,
                        head.id_client2,client2.name1_client,
                        head.comment_sd,
                        head.id_contract,contract.name_contract,
                        head.parent_id_head
                   from head,client,client client2,department,contract
                        where head.id_head=~($try ($if ((ARGUMENTS.1) == 'NOTHING') (-1) $else (ARGUMENTS.1)) $catch ('NullException') (-1) )~
                              and head.id_client1 = client.id_client (+)
                   and head.id_client2 = client2.id_client (+)
                   and head.id_contract = contract.id_contract (+)
                   and head.id_department1 = department.id_department (+)"
              }
} // ds

} // form
} // scroll
{tabset labels = "перечень аналогов"
 tabs_on_top=yes
{grid
editable = yes
add="opennew find_choose.rml 1, 0"
alias = GRIDSPC
buttonbar_font_family=0       buttonbar_font_size=12           
buttonbar_size = 30           titlebar_size = 18            rowsize=24     
addexp="($X
           (global.id_active = STORE.active.id_active)
           ($g.analog_doc@retrieve)
           ($if (($g.analog_doc@size) > 0)
             (
                ($g.self@sure 'Этот актив уже присутствует в качестве оригинала или аналога в документе ' + ($g.analog_doc@getValue 'head.num_sd') + '. В текущей версии не допускается создавать цепочки аналогов.' 1)
                ($g.d_spc@delRow ($g.d_spc@size) - 1)
                ($g.d_spc@NotifyViews)
                ($ret '')
             )
           )
          (g.war=store.active.id_active)
          (g.name_w=store.active.name_active)
	  (g.id_un=store.id_pseudo_unit)
          (g.name_un=store.obozn)
          (global.cur_id_active = store.active.id_active)
          ($ret '')
        )"
{menu
   {item label = "Поиск в справочнике" action="opennew find_choose.rml  1, 0"}
   {item label = "-"}
   {item label = "Удалить" action="~($X ($g.d_Spc@DelRow ($g.d_Spc@getCurRow)) ($g.d_Spc@notifyViews) ($ret ''))~"}

}
 {column size=40  
     visible=no
     title="Номер"   
     target=spc.id_spc        title_font_family=2     halignment=left
     font_color="#000000"     font_size=12              font_family=0
 }
 {column size=110 
    visible=no
    title="Номер"   
    target=spc.id_head        title_font_family=2
    font_color="#000000"      font_size = 12            font_family=0
 }
 {column size=45
    title="Код"              font_family=0           editable = readonly 
    target=spc.id_active     title_font_family=2     halignment=left
    alias=war                font_color="#000000"    font_size=12   
 }
 {column size=400       title="Наименование"
    target=active.name_active  title_font_family=2     halignment=left
    font_color="#000000"      font_size=12              font_family=0
    alias=name_w              editable = readonly 
 }
 {column size=40     
    visible=no
    title="Код"              font_family=0
    target=spc.id_unit       title_font_family=2     halignment=left
    alias=id_un                font_color="#000000"     font_size=12
    editexp = "id_un=STORE.active_pseudo_unit.id_pseudo_unit"
 }
 {column size=60       title="Ед. изм."
    target=active_pseudo_unit.obozn  title_font_family=2     halignment=left
    font_color="#000000"      font_size=12              font_family=0
    alias=name_un               
    editable = handbook    
    edit = "opennew psevdo_units.rml ~($try (war) $catch ('NullException') (-1) )~"
    editexp = "name_un=STORE.active_pseudo_unit.obozn"
    dep = "id_un"
 }
 {column size=70       title="Кол-во " 
    target=spc.q1_spc      title_font_family=2      halignment=right
    font_color="#000000"     font_size=12            font_family=0
    editmask = "# #0.00"    alias = q1_spc
 }

 {datastore 
      alias = d_spc
      query = "select spc.id_spc,spc.id_head,spc.id_active,spc.id_unit,
                      spc.q1_spc,spc.q2_spc,spc.price1_spc,spc.price2_spc,
                      active.name_active,active_pseudo_unit.obozn,active_type.name_type,
		      spc.id_nds,nds.proc_nds
                 from spc,active,active_pseudo_unit,nds,active_type
                where spc.id_head = ~($try (d_head.head.id_head) $catch ('NullException') (-1) )~ 
                  and spc.id_active = active.id_active 
                  and spc.id_unit = active_pseudo_unit.id_pseudo_unit 
                  and spc.id_nds = nds.id_nds
                  and active.id_type_active = active_type.id_type
             order by active.name_active"
             editable = yes
               unique = "('spc','spc.id_spc')" 
              default = "spc.id_head=~($try (d_head.head.id_head) $catch ('NullException') (-1) )~,
                         spc.id_spc=~ds.spk~,
                         spc.q1_spc=~1~,spc.q2_spc=~0~,
                         spc.id_nds=~2~,nds.proc_nds=~18~,
                         spc.price1_spc=~0~,spc.price2_spc=~0~"  
			 {datastore
              alias = substore
              query = "select spc.id_active,spc.id_unit,spc.q1_spc,spc.q2_spc,spc.price1_spc,spc.price2_spc,
                              active.name_active,active_pseudo_unit.obozn,active_type.name_type
                       from active,spc,active_pseudo_unit,active_type
                       where spc.id_head=~($try ($if ((ARGUMENTS.1) == 'NOTHING') (-1) $else (ARGUMENTS.1)) $catch ('NullException') (-1) )~
                             and spc.id_active = active.id_active 
                             and spc.id_unit = active_pseudo_unit.id_pseudo_unit (+)
                             and active.id_type_active = active_type.id_type (+)
                       order by spc.id_spc"
             }
} // ds
} // grid1
} // tabset
} // split
{button
  left = 11  width = 50    height = 20
  BACKGROUND = "LIGHTGRAY"    foreground="#000000"
  label = "Сохранить и выйти F3"
  action = "($X
                ($if (($try (g.head_id_active) $catch ('NullException')(0)) == 0)
                  (
                    ($g.self@sure 'Не указан актив.'  1)
                    ($ret '')
                  )
                )
                (sz = ($g.d_spc@size))
                ($if (sz == 0)
                  (
                    ($g.self@sure 'Не указаны аналоги.'  1)
                    ($ret '')
                  )
                )
                (i = 0)
                ($while (i < sz)
                  (
                    ($g.d_spc@setCurRow i)
                    ($if (($g.d_spc@getValue 'spc.id_active') == g.head_id_active)
                      (
                        ($g.self@sure 'Актив, указанный как оригинал, не должен быть в списке аналогов.' 1)
                        ($ret '')
                      )
                    )
                    ($if (($g.d_spc@getValue 'spc.q1_spc') == 0)
                      (
                        ($g.self@sure 'Коэффициент пересчета оригинала в аналог не должен быть равен 0.' 1)
                        ($ret '')
                      )
                    )
                    (i += 1)
                  )
                )
                ($if (global.create == 1)
                  (
                    # проверка на повторение актива в других документах
                    ($g.check1@retrieve)
                    ($if (($g.check1@getValue 'CNT') > 0)
                      (
                        ($g.self@sure 'Для актива ' + g.head_name_active + '  ( ' + g.head_id_active + ' ) уже есть список аналогов.' 1)
                        ($ret '')
                      )
                    )
                  )
                )
                ($if (global.get_num == 1)
                    (
                        ($g.doc_num@retrieve)
                        d_head.head.num_sd = ($try ($g.doc_num@GetValue 'NUM_SD') $catch ('Any')(''))
                        g.num_sd = ($try ($g.doc_num@GetValue 'NUM_SD') $catch ('Any')(''))
                        (global.get_num = 0)
                    )
                )
 		($g.self@actdok)
                ($ret '')
            )"
  shortcut = "F3"
}
{button
  left = 72  width = 50    height = 20
  BACKGROUND = "LIGHTGRAY"    foreground="#000000"
  label = "Отмена ESC"
  action = "($X
             (tmp = 'Вы действительно хотите выйти без сохранения данных' + '')
             (m = ($g.self@sure tmp 0))
               ($if (m == 0)()
               $else ($g.self@actcancel)
               )
             ($ret ''))"
  shortcut = "escape"
}
} // toolbar

