-- Шаблон создан мастером бланков
-- 11.09.2008 17:29:44
--
БланкСШаблоном "СЭД";

var Статус:L;
var Путь:S;
var Префикс[]:s;
var Суффикс[]:s;

var Экспорт[]:s;
var Импорт[]:s;
var Имя[]:s;


Sect:Section;

var Sec:Integer;
--
--Процедуры и функции -------------
--
Proc Инициализация;--Инициализация
 ClearVariable(Раб.вспом.СЭД.Экспорт);
 ClearVariable(Раб.вспом.СЭД.Импорт);

 Префикс[1]="Exp";
 Префикс[2]="Imp";
 Суффикс[1]="PP";
 Суффикс[2]="PF";
 Суффикс[3]="ZS";
 Суффикс[4]="ZK";
 Суффикс[5]="SM";
 Суффикс[6]="SK";
 Суффикс[7]="IU";
 Суффикс[8]="RO";
 Суффикс[9]="ZA";
 Суффикс[10]="ZV";
 Суффикс[11]="ZR";
 Суффикс[12]="AP";
 Суффикс[13]="UF";


 Sec=LengthOfArray(Суффикс);

 Имя[1]="Платежные поручения";
 Имя[2]="Платежные поручения (1н)";
 Имя[3]="Заявки на получение наличных денег";
 Имя[4]="Заявления на получение денежных чековых книжек";
 Имя[5]="Смета расходов и доходов внебюджетной деятельности";
 Имя[6]="Сведения о заключенном контракте";
 Имя[7]="Сведения об исполнении (прекращении) контракте";
 Имя[8]="Расходные расписания (РБС)";
 Имя[9]="Запрос на аннулирование заявки";
 Имя[10]="Заявка на возврат";
 Имя[11]="Заявка на кассовый расход";
 Имя[12]="Расходное расписание (2009)";
 Имя[13]="Уведомление об уточнении вида и принадлежности платежа";

end;


Proc Сохранить; --Сохранить данные в Базу
 var owa,oa,j,w:i;
  try
   owa=OpenWorkArea("РПО_СЭД",""); --номер рабочий областиwa
   try
    beginChanging(owa); --Открыть рабочую область
    if Records(owa)<1 then w=InsertRecord(owa); fi;
     oa=OpenArray(owa,1,"Пути",""); --открыть подтаблицу
      try
        for j=1 to LengthOfArray(Суффикс) do --Экспорт
          SetFilter(oa,'Маркер = "'+"Exp"+Суффикс[j]+'"'); --смена фильтра
          if Records(oa)<1 then
            if Экспорт[j]<>"" then
              w=InsertRecord(oa); --создать запись
              w=PutFieldS(oa,1,"Маркер","Exp"+Суффикс[j]); --заполнение поля Маркер
              w=PutFieldS(oa,1,"Знач",Экспорт[j]); --заполнение поля Знач
            fi;
            else
             w=PutFieldS(oa,1,"Знач",Экспорт[j]); --заполнение поля Знач
          fi;
         od;
         for j=1 to LengthOfArray(Суффикс) do --Импорт
          SetFilter(oa,'Маркер = "'+"Imp"+Суффикс[j]+'"'); --смена фильтра
          if Records(oa)<1 then
            if Экспорт[j]<>"" then
              w=InsertRecord(oa); --создать запись
              w=PutFieldS(oa,1,"Маркер","Imp"+Суффикс[j]); --заполнение поля Маркер
              w=PutFieldS(oa,1,"Знач",Импорт[j]); --заполнение поля Знач
             fi;
            else
             w=PutFieldS(oa,1,"Знач",Импорт[j]); --заполнение поля Знач
          fi;
         od;
       Статус=False;
      finally
       CloseWorkArea(OA); --Закрыть подтаблицу
      end;
    endchanging(owa);
   except
    cancelChanging(owa); --закрыть рабочую область
   raise;
   end;
  finally
   CloseWorkArea(owa); --Закрыть Таблицу
  end;
end;

Proc Загрузить; --Загрузка данных из Базы--
var owa,oa,j,w:i;
 try
  owa=OpenWorkArea("РПО_СЭД","");   --номер рабочий областиwa
  try
    oa=OpenArray(owa,1,"Пути",""); --открыть подтаблицу
    try
      for j=1 to LengthOfArray(Суффикс) do --Экспорт
       SetFilter(oa,'Маркер = "'+"Exp"+Суффикс[j]+'"'); --смена фильтра
       if Records(oa)>0 then
        Экспорт[j]=getfields(oa,1,"Знач");
        else
        Экспорт[j]="";
       fi;
      od;
      for j=1 to LengthOfArray(Суффикс) do --Импорт
       SetFilter(oa,'Маркер = "'+"Imp"+Суффикс[j]+'"'); --смена фильтра
       if Records(oa)>0 then
        Импорт[j]=getfields(oa,1,"Знач");
        else
        Импорт[j]="";
       fi;
      od;
      Статус=False;
    finally
     CloseWorkArea(OA); --Закрыть подтаблицу
    end;
  except
   raise;
  end;
 finally
  CloseWorkArea(owa); --Закрыть Таблицу
 end;
end;

Proc ПровБазы; --Сохранить данные в Базу
 var owa,w:i;
  try
   owa=OpenWorkArea("РПО_СЭД",""); --номер рабочий областиwa
   try
    beginChanging(owa); --Открыть рабочую область
     if Records(owa)<1 then w=InsertRecord(owa); fi;
    endchanging(owa);
   except
    cancelChanging(owa); --закрыть рабочую область
   end;
  finally
   CloseWorkArea(owa); --Закрыть Таблицу
  end;
end;

Proc ЗапросСохр; --Запрос Сохранения
if Статус then
    if EnqOkCancel("Сохранить изменения?",mtWarning)=cmOk then Сохранить; else Загрузить; fi;
  fi;
end;

Func ПолучитьПапку(aТип:string; aРежим:string):string; --Получить путь из строки
var i:i;
var Знач:s;
 Инициализация;
 ПровБазы;
 Загрузить;
 if aРежим="Exp" then
   for i=1 to LengthOfArray(Суффикс) do
     if aТип=Суффикс[i] then Знач=Экспорт[i]; fi;
   od;
  else
   for i=1 to LengthOfArray(Суффикс) do
     if aТип=Суффикс[i] then Знач=Импорт[i]; fi;
   od;
 fi;

 if Знач="" then
  if EnqOkCancel("Каталог не задан, "+Chr(13)+"Задать каталог?",mtWarning)=cmOk then OpenBlank("Раб.вспом.СЭД"); fi;
   else
    if Not(ExistsFolder(Знач)) then
     if EnqOkCancel("Каталог '"+Знач+"' не найден,"+Chr(13)+"Задать новый каталог?",mtWarning)=cmOk then OpenBlank("Раб.вспом.СЭД"); fi;
    fi;
 fi;

 if aРежим="Exp" then
   for i=1 to LengthOfArray(Суффикс) do
     if aТип=Суффикс[i] then Return Экспорт[i]; fi;
   od;
  else
   for i=1 to LengthOfArray(Суффикс) do
     if aТип=Суффикс[i] then Return Импорт[i]; fi;
   od;
 fi;
end;
--
--Процедуры и функции -------------                           
--


--
--Обработчики событий полей шаблона-----
--
Func Путь_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 var Tip:S;
 var Kadr:i;
   Template.HideEditor(false);
   Template.Name="Sect";
   Tip=AsString(Template.Field);
   Kadr=AsInteger(Template.Frame);
   Путь=GetVariableS(Tip);
   if ChooseFolder(Путь,"Путь для Экспорта/Импорта")= cmOk then
     if Tip="Экспорт" then Экспорт[Kadr]=Путь;
      else
      Импорт[Kadr]=Путь;
     fi;
     Статус=True;
   fi;
 Return Cur;
end;

Proc Путь_OnExit(FieldName: String; Iter: Integer);
var tmp,Tip:S;
var Kadr:i;
 Статус=True;
 Template.Name="Sect";
 Tip=AsString(Template.Field);
 Kadr=AsInteger(Template.Frame);
 if Tip="Экспорт" then 
   tmp=Экспорт[Kadr];
  else
   tmp=Импорт[Kadr];
 fi;
 if tmp="": exit;
   else
    if Not(ExistsFolder(tmp) )then
       Message("Путь '"+tmp+"' не найден",mtWarning);
    fi;
 fi;
end;
--
--Обработчики событий полей шаблона-----


--Обработчики событий объектов шаблона-----
--
Proc BtnОтменить_OnClick(Sender: String);
  if Статус then
    if EnqOkCancel("Отменить изменения?",mtWarning)=cmOk then Загрузить; fi;
  fi;
end;

Proc btnСохранить_OnClick(Sender: String);
  ЗапросСохр;
end;

Proc BtnЗакрыть_OnClick(Sender: String);
  Close;
end;
--
--Обработчики событий объектов шаблона-----


--Обработчики событий шаблона -----
--
Proc OnOpen(Create: Logical);
  Инициализация;
  ПровБазы;
  Загрузить;
end;
--
--
Proc OnClose(Destroy: Logical);
  ЗапросСохр;
end;
--
--Обработчики событий шаблона -----
--

Конец
