-- Шаблон создан мастером Йодой
-- Along time ago
-- In a galaxy far, far away...

БланкСШаблоном "Остатки по денежным документам";

sPath          : S = ["c:\TB69Net\RPO\2009_2010"]; -- путь выгрузки
dDatePut       : D = [1.1.2010];                   -- какой датой записывать
sUslSch        : S = ["*.201.35.*|ЗАБ.03!"];       -- условие на счета в цикле проводок
sUslAn         : S = ["ДенДок.*"];                 -- условие на аналитику в цикле проводок
dBeginDate     : D = [1.1.100];                    -- дата начала отчетного периода
dEndDate       : D = [1.1.2010];                   -- дата конца отчетаного периода
bPodrazFlag    : L;                                -- разделение по подразделениям
bShareAnalFlag : L;                                -- разделение по общей аналитике

var sSelfCrd: S = "РПО_ДенДок_Вид";

Var iOwaPrih : I; -- картотека прихода
Var iOaPrih  : I; -- подкартотека прихода
Var iOwaRash : I; -- картотека расхода
Var iOaRash  : I; -- подкартотека расхода

-- переменные для алгоритма Леши, не совсем я понимаю, что они значат :)
Var sDenDokMas[] : S; -- тут по идее массив типов денежных документов
Var sDDNameMas[] : S; -- наименование типа ?
Var sDDCodeMas[] : S; -- код денежного документа ?
Var sDDEdIzmas[] : S; -- какая-то инфа о денежном документе
Var iDDTochMas[] : I; -- какая-то инфа о денежном документе

Var Ключ[]      : S;
Var ДенДок[]    : S; -- аналитика
Var sAnalMas[]  : S; -- общая аналитика
Var sPodrMas[]  : S; -- аналитика подразделения
Var ДенДокТип[] : S;
Var Счет[]      : S;
Var Серия[]     : S;
Var Разм[]      : I;
var Номер[]     : N;
var Кол[]       : N;
var Цена[]      : N;
Var СНПр[]      : S; -- признак серии-номера
Var КолФлаг[]   : L;

Var BufSub[] : S;

Var sCrd    : S; -- картотека - источник проводки
Var sUkey   : S; -- УКЕЙ записи - источника проводки
Var sSchDeb : S; -- счет дебета проводки
Var sSchKre : S; -- счет кредита проводки
Var sAnal   : S; -- аналитика проводки
Var sPodr   : S; -- признак подразделения
Var sDP     : S; -- аналитика + подразделение
Var sDenDok : S; -- аналитика денежного документа
Var dTransDate : D; -- дата проводки
Var nTransSum  : N; -- сумма проводки
Var nTransKol  : N; -- количество в проводке
Var stPriznObsh : S; -- общие признаки записи
Var stPriznPodr : S; -- признак подразделения
Var tСерия      : S;
Var tНомН       : N;
Var tНомК       : N;
Var tРазм       : I;
Var tТип        : I;
Var tСНПр       : S;
Var tКолФлаг    : L;

-- понеслась секция
Var Упр: I; -- результаты
Var НаимДок[]   : S; -- наименование ДенДок                     -- имя ДД +
Var ДенДок2[]   : S; -- тип ДенДок                              -- признак ДД +
Var Аналитика[] : S; -- аналитика                               -- общая аналитика +
Var Подразд[]   : S; -- подразделение                           -- счет +
Var Счет2[]     : S; -- счет                                    -- код ДД +
Var Код[]       : S; -- код ДД                                  -- едизм ДД +
Var ЕдИзм[]     : S; -- единица измерения ДД                    -- серия +
Var Бух_Серия[] : S; -- серия                                   -- номера +
Var Бух_Номер[] : S; -- номер                                   -- цена +
Var Бух_Цена[]  : N; -- цена                                    -- кол-во +
Var Бух_Кол[]   : N; -- кол-во                                  -- признак подразделения +
Var sSNPrizn[]  : S; -- признак серии-номера                    -- признак серии-номера
Var КолФлаг2[]  : L; -- флаг по количеству или серии/номеру
Var ФИО         : S; -- что писать в поле ФИО
Var СуммаЗаписи : N; -- сумма в поле СУМПРИХОД или СУМРАСХОД

Var iUkMin : I;
Var iUkMax : I;

Func ЭкспортКартотекиПоФильтру(vКарт: String; vФильтр: String; vCRD_Файл: String): Logical; -- картотека, фильтр, куда выгружать
var file: String;
var num: Integer;
  if (vКарт = '' or not ExistsCardFile(vКарт)) and vCRD_Файл = ''
  :
     return false;
  fi;
  file = PlanVar('CACHE') + '\' + GetGUID + '.bro';
  num = TextFileCreate(file, false);
  Try
    TextFileWriteLn(num, '[Header]', false);
    TextFileWriteLn(num, '_EnabledFltr=1', false);
    TextFileWriteLn(num, '_Fltr=' + vФильтр, false);
    TextFileWriteLn(num, 'TableName=' + vКарт, false);
  Finally
    TextFileClose(num);
  End;
  ExportCard( ieCRD,    --  Формат CRD
              file,     --  Картотека (браузер)
              vCRD_Файл,--  Файл (путь)
              true,     --  Учитывать фильтр браузера
              false,    --  Выгружать только видимые поля
              false,    --  Выгружать разыменованные поля
              true,     --  Выгружать c UKEY
              false,    --  Указать столбец для EXCEL
              True,     --  Выгружать служебные поля
              false,    --  Выгружать в DOS-кодировке
              false);   --  Выгружать таблицы по ссылкам
  if ExistFile(file)
  :
     DeleteFile(file);
  fi;
  return true;
end;

Func NumToStr(Value: N; Len: I): S;
var Ret: S;
  if Len = 0
  :
     Return "";
  fi;
  Ret = Str(Value);
  Ret = RepStr("0", Len - Length(Ret)) + Ret;
  Return Ret;
end;

Proc ВзятьИзКарт(OWA:I; UKey:S; OA:I; t:i);
var z,n,nn:I;
var FF,НомН_,НомК_,Призн_,ПризнДеб_,ПризнКре_,tmp:S;
var Rec: Record;
  tСерия = "";
  tНомН = 0;
  tНомК = 0;
  tРазм = 0;
  z = GetRecordNumber(OWA, StringToRecord(UKey));
  if not z = 0
  :
     FF = "ДЕНДОКВИД_ПРИЗН='" + sDenDok + "'";
     FF = FF + " and КОЛ=" + Str(nTransKol, TransAccuracy(t));
     FF = FF + " and СУММА=" + Str(nTransSum, Accuracy);
     SetFilter(OA, FF);
     nn = Records(OA);
     if not nn = 0
     :
        tmp = TransSigns(t);
        if Pos("+", tmp) <> 0
        :
           ПризнДеб_ = Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(tmp, " ", "+*", "");
           ПризнДеб_ = Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(SubStr(ПризнДеб_, 2, 255), "+", " ");
        else
           ПризнДеб_ = "";
        fi;
        if Pos("-", tmp) <> 0
        :
           ПризнКре_ = Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(tmp, " ", "-*", "");
           ПризнКре_ = Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(SubStr(ПризнКре_, 2, 255), "-", " ");
        else
           ПризнКре_ = "";
        fi;
        Призн_ = Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(tmp, " ", Trim(GetFieldS(OWA, z, "ОбщПризн") + " " + sDenDok + " " + GetFieldS(OWA, z, "ПризнПодр") + " +* -*"), " ");
        for n = 1 to nn
        do
          Rec = GetRecordKey(OA, n);
          if SearchInArray(BufSub, Str(OWA) + " " + UKey + " " + RecordToString(Rec), True) = -1
          : --проверяем былали обработана запись подтаблицы ранее при совпадении критерия поиска
             if Раб.Бюджет2005.ПроверитьНаборСлов(GetFieldS(OA, n, "ПРИЗН"), " ", Призн_, "|", "") and
                Раб.Бюджет2005.ПроверитьНаборСлов(GetFieldS(OA, n, "ПРИЗНДЕБ"), " ", ПризнДеб_, " ", "") and
                Раб.Бюджет2005.ПроверитьНаборСлов(GetFieldS(OA, n, "ПРИЗНКРЕ"), " ", ПризнКре_, " ", "")
                :
                InsertInArraySort(BufSub, Str(OWA) + " " + UKey + " " + RecordToString(Rec));
                stPriznObsh = GetFieldS(OWA, z, "ОбщПризн");
                stPriznPodr = GetFieldS(OWA, z, "ПризнПодр");
                tСерия = GetFieldS(OA, n, "СерияБум");
                НомН_ = GetFieldS(OA, n, "НомерБум_Н");
                НомК_ = GetFieldS(OA, n, "НомерБум_К");
                tРазм = Max(Length(НомН_), Length(НомК_));
                tНомН = Round(НомН_);
                tНомК = Round(НомК_);
                tСНПр = GetFieldS(OA, n, "ПРИЗН");
                tКолФлаг = GetFieldL(OA, n, "FLAGКОЛ");
                Break;
             fi;
          fi;
        od;
     fi; --if Records(OA)>0:
  fi; --not z=0:
end;

Proc procClear;
  ClearVariable(BufSub);
  ClearVariable(iOwaPrih);
  ClearVariable(iOwaRash);
  ClearVariable(iOaPrih);
  ClearVariable(iOaRash);
  --
  clearVariable(sDenDokMas);
  ClearVariable(sDDNameMas);
  ClearVariable(sDDCodeMas);
  ClearVariable(sDDEdIzmas);
  ClearVariable(iDDTochMas);
  --
  clearVariable(Ключ);
  clearVariable(ДенДок);
  clearVariable(ДенДокТип);
  clearVariable(Счет);
  clearVariable(Серия);
  clearVariable(Разм);
  clearVariable(Номер);
  clearVariable(Кол);
  clearVariable(Цена);
  ClearVariable(sAnalMas);
  ClearVariable(sPodrMas);
  ClearVariable(СНПр);
  ClearVariable(КолФлаг);
  --
  ClearVariable(Упр);
  clearVariable(НаимДок);
  ClearVariable(ДенДок2);
  clearVariable(Аналитика);
  clearVariable(Счет2);
  clearVariable(Код);
  clearVariable(ЕдИзм);
  clearVariable(Бух_Серия);
  clearVariable(Бух_Номер);
  clearVariable(Бух_Цена);
  clearVariable(Бух_Кол);
  clearVariable(Подразд);
  clearVariable(СуммаЗаписи);
  clearVariable(sSNPrizn);
  ClearVariable(КолФлаг2);
End;

Proc procCalcOst(k: I);
var n, nn, p1, z: I;
var Кол_: N;
  nn = LengthOfArray(Ключ);
  ShowProgress(nn * 3, "Расчет...");
  Кол_ = Кол[1];
  p1 = 1;
  for n = 1 to nn
  do
    ProgressPos(nn * k + n);
    if (ДенДок[n] = ДенДок[n + 1] and Счет[n] = Счет[n + 1] and Серия[n] = Серия[n + 1] and Разм[n] = Разм[n + 1] and Кол[n] = Кол[n + 1] and Номер[n] + 1 = Номер[n + 1]) or
       (ДенДок[n] = ДенДок[n + 1] and Счет[n] = Счет[n + 1] and Серия[n] = "" and Серия[n] = Серия[n + 1] and Разм[n] = 0 and Разм[n] = Разм[n + 1])
    :
       Кол_ = Кол_ + Кол[n + 1];
    else
       if Кол_ <> 0
       :
          z = SearchInArray(sDenDokMas, ДенДокТип[n], True);
          InsertFrame(Упр, Упр + 1);
          НаимДок[Упр] = sDDNameMas[z];
          ДенДок2[Упр] = денДокТип[n];
          Код[Упр] = sDDCodeMas[z];
          ЕдИзм[Упр] = sDDEdIzmas[z];
          Аналитика[Упр] = sAnalMas[n];
          Счет2[Упр] = Счет[n] + "510";
          Бух_Серия[Упр] = Серия[n];
          Бух_Номер[Упр] = if(Номер[p1] = Номер[n], NumToStr(Номер[p1], Разм[p1]), NumToStr(Номер[p1], Разм[p1]) + "-" + NumToStr(Номер[n], Разм[n]));
          Бух_Цена[Упр] = Цена[n];
          Бух_Кол[Упр] = Кол_;
          Подразд[Упр] = sPodrMas[n];
          sSNPrizn[Упр] = СНПр[n];
          КолФлаг2[Упр] = КолФлаг[n];
       fi;
       p1 = n + 1;
       Кол_ = Кол[p1];
    fi;
  od;
end;

Proc procCalcProv(iType: Integer; k: Integer);
Var t : I; -- счетчик для цикла по проводкам
Var dBeginDate : D; -- дата начала цикла по проводкам
Var dEndDate   : D; -- дата конца цикла по проводкам
Var sUslSch1   : S; -- расширенное условие на счета
Var z, p : I; -- склад вспомогательных переменных
Var rRec : Record;
Var sKey, sTmp : S;
Var Цена, Номинал, n : N;
  dBeginDate = 1.1.100;
  dEndDate = 1.1.2010;
  if iType =  1
  :
     sUslSch1 = "+" + sUslSch;
  |  iType = -1
  :
     sUslSch1 = "-" + sUslSch;
  fi;
  ShowProgress((dEndDate - dBeginDate) * 3, "Расчет...");
  tТип = iType;
  for Transaction t = sUslSch1 + "{" + sUslAn + "}", dbeginDate, dEndDate -- массив по проводкам денежных документов
  do
    sCrd = TransCardFile(t); -- берем инфу по проводке
    sUKey = RecordToString(TransRecord(t));
    sSchDeb = TransDeb(t);
    sSchKre = TransCre(t);
    sAnal = TransSigns(t);
    sDenDok = Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(sAnal, " ", "ДенДок.*", ""); -- хаваем тип денежного документа
    --
    z = SearchInArray(sDenDokMas, sDenDok, True);
    if z = -1
    :
       z = InsertInArraySort(sDenDokMas, sDenDok);
       InsertInArray(sDDNameMas, z, name_A(sDenDok));
       if sDDNameMas[z] = "" or sDDNameMas[z] = " "
       :
          sDDNameMas[z] = sDenDok;
       fi;
       rRec = SignToRecord(sDenDok, False);
       if rRec <> nil and SignCardFile(sDenDok, False) = sSelfCrd
       :
          InsertInArray(sDDCodeMas, z, GetCardFieldS(sSelfCrd, rRec, "КОД"));
          if sDDCodeMas[z] = ""
          :
             sDDCodeMas[z] = SubStr(sDenDokMas[z], Pos(".", sDenDokMas[z]) + 1, 255);
          fi;
          InsertInArray(sDDEdIzmas, z, GetCardFieldS(sSelfCrd, rRec, "ЕдИзм"));
          InsertInArray(iDDTochMas, z, GetCardFieldI(sSelfCrd, rRec, "Точ"));
       else
          InsertInArray(sDDCodeMas, z, SubStr(sDenDokMas[z], Pos(".", sDenDokMas[z]) + 1, 255));
          InsertInArray(sDDEdIzmas, z, "");
          InsertInArray(iDDTochMas, z, 0);
       fi;
    fi;
    --
    dTransDate = TransDate(t);
    nTransSum = TransSum(t);
    nTransKol = TransSum(t, "Кол");
    p = (dEndDate - dBeginDate) * k + (dTransDate - dBeginDate);
    ProgressPos(p);
    if sCrd = "РПО_ДенДок_Приход" and iOaPrih <> -1
    :
       ВзятьИзКарт(iOwaPrih, sUKey, iOaPrih, t);
    |  sCrd = "РПО_ДенДок_Расход" and iOaRash <> -1
    :
       ВзятьИзКарт(iOwaRash, sUKey, iOaRash, t);
    |  True
    :
       stPriznObsh = "";
       stPriznPodr = "";
       tСерия = "";
       tНомН = 0;
       tНомК = 0;
       tРазм = 0;
    fi;
    --Остатки
    sAnal = stPriznObsh;
    sPodr = stPriznPodr;
    if bShareAnalFlag
    :
       sDP = sAnal;
    else
       sDp = "";
    fi;
    if bPodrazFlag
    :
       if length(sDP) > 0
       :
       sDP = sDP + " ";
       fi;
       sDP = sDP + sPodr;
    fi;
    Цена = Round(nTransSum / nTransKol, Accuracy);
    Номинал = Round(nTransKol / (tНомК - tНомН + 1), iDDTochMas[z]);
    n = tНомН;
    While Round(n) <= Round(tНомК)
    do
      if pos(".201.35.", sSchDeb) > 0
      :
         --sTmp = sSchDeb;
         sTmp = substr(sSchDeb, 1, length(sSchDeb) - 3);
      |  pos(".201.35.", sSchKre) > 0
      :
         --sTmp = sSchKre;
         sTmp = substr(sSchKre, 1, length(sSchKre) - 3);
      |  True
      :
         sTmp = "";
      fi;
      sKey = sDP + " " + sTmp + " " + tСерия + " " + Str16(tРазм) + " " + NumToStr(n, tРазм) + " " + Str(Цена, Accuracy);
      z = SearchInArray(Ключ, sKey, True);
      if z = -1
      :
         z = InsertInArraySort(Ключ, sKey);
         InsertInArray(ДенДок, z, sDP);
         InsertInArray(денДокТип, z, sDenDok);
         InsertInArray(Счет, z, sTmp);
         InsertInArray(Серия, z, tСерия);
         InsertInArray(Разм, z, tРазм);
         InsertInArray(Номер, z, n);
         InsertInArray(Кол, z, Номинал * tТип);
         InsertInArray(Цена, z, Цена);
         InsertInArray(sAnalMas, z, sAnal);
         InsertInArray(sPodrMas, z, sPodr);
         InsertInArray(СНПр, z, tСНПр);
         InsertInArray(КолФлаг, z, tКолФлаг);
      else
         Кол[z] = Кол[z] + (Номинал * tТип);
      fi;
      n = n + 1;
    od;
  od;
End;

Proc procMainFunc;
  procClear;
  Refresh;
  iOwaPrih = OpenWorkArea("РПО_ДенДок_Приход", "");
  Try
    if records(iOwaPrih) > 0
    :
       iOaPrih = OpenArray(iOwaPrih, 1, "Приход", "", "1=0");
    else
       iOaPrih = -1;
    fi;
    iOwaRash = OpenWorkArea("РПО_ДенДок_Расход", "");
    Try
      if Records(iOwaRash) > 0
      :
         iOaRash = OpenArray(iOwaRash, 1, "Расход", "", "1=0");
      else
         iOaRash = -1;
      fi;
      procCalcProv(1, 0);
      procCalcProv(-1, 1);
      procCalcOst(2);
    Finally
      CloseWorkArea(iOwaRash);
    End;
  Finally
    CloseWorkArea(iOwaPrih);
    CloseProgress;
  End;
End;

Proc procExportFunc;
Var i, iOwa, iOa, z, z2, iUk, iTmp1: I;
Var bPodr, bArrayOpened, bPR: L;
Var sTmp1, sTmp2: S;
  iUkMin = 0;
  iUkmax = 0;
  z = -1;
  iOwa = OpenWorkArea("РПО_ДенДок_Приход", "", "");
  bArrayOpened = false;
  --OpenArray
  for i = 1 to Упр
  do
    bPodr = bPodrazFlag AND Подразд[i - 1] <> Подразд[i];
    if Аналитика[i - 1] <> Аналитика[i] OR Счет2[i - 1] <> Счет2[i] or bPodr
    :
       if bArrayOpened
       :
          CloseWorkArea(iOa);
          bArrayOpened = false;
       fi;
       if z > 0
       :
          BeginChanging(iOwa);
          Try
            z = PutFieldN(iOwa, z, "СУМПРИХОД", СуммаЗаписи);
            EndChanging(iOwa);
          Except
            CancelChanging(iowa);
          End;
       fi;
       BeginChanging(iOwa);
       Try
         z = InsertRecord(iOwa);
         iUk = RecordToInteger(GetRecordKey(iowa, z));
         if iUkMin = 0 or iUk < iUkMin
         :
            iUkMin = iUk;
         fi;
         if iUkMax = 0 or iUk > iUkMax
         :
            iUkMax = iUk;
         fi;
         z = PutFieldL(iOwa, z, "ПРОВОДИТЬ", true);
         z = PutFieldI(iOwa, z, "НОМЕР", i);
         z = PutFieldS(iOwa, z, "НОМЕРБУМ", "Остатки" + " " + str(i));
         z = PutFieldD(iOwa, z, "ДАТА", dDatePut);
         z = PutFieldS(iOwa, z, "ФИО", ФИО);
         z = PutFieldS(iOwa, z, "СЧДЕБ", Счет2[i]);
         z = PutFieldS(iOwa, z, "СЧКРЕ", "00");
         z = PutFieldS(iOwa, z, "ОБЩПРИЗН", Аналитика[i]);
         z = PutFieldS(iOwa, z, "ПРИЗНПОДР", Подразд[i]);
         z = PutFieldL(iOwa, z, "CLOSEDMODFOB", False);
         EndChanging(iOwa);
         z = GetRecordNumber(iOwa, IntegerToRecord(iUk));
         iOa = OpenArray(iOwa, z, "Приход", "", "");
         bArrayOpened = true;
         BeginChanging(iOwa);
         Try
           z2 = InsertRecord(iOa);
           z2 = PutFieldR(iOa, z2, "ДЕНДОК_ВИД", SignToRecord(ДенДок2[i]));
           z2 = PutFieldS(iOa, z2, "ДЕНДОКВИД_ПРИЗН", ДенДок2[i]);
           z2 = PutFieldS(iOa, z2, "ДЕНДОКВИД_НАИМ", НаимДок[i]);
           z2 = PutFieldL(iOa, z2, "FLAGКОЛ", КолФлаг2[i]);
           z2 = PutFieldS(iOa, z2, "СЕРИЯБУМ", Бух_Серия[i]);
           iTmp1 = pos("-", Бух_Номер[i]);
           if iTmp1 >= 1
           :
              sTmp1 = ExtractWord(1, Бух_Номер[i], "-");
              sTmp2 = ExtractWord(2, Бух_Номер[i], "-");
           else
              sTmp1 = Бух_Номер[i];
              sTmp2 = Бух_Номер[i];
           fi;
           z2 = PutFieldS(iOa, z2, "НОМЕРБУМ_Н", sTmp1);
           z2 = PutFieldS(iOa, z2, "НОМЕРБУМ_К", sTmp2);
           z2 = PutFieldI(iOa, z2, "КОЛДОК", int(sTmp2) - int(sTmp1) + 1);
           z2 = PutFieldN(iOa, z2, "КОЛ", Бух_Кол[i]);
           z2 = PutFieldN(iOa, z2, "ЦЕНА", Бух_Цена[i]);
           z2 = PutFieldN(iOa, z2, "СУММА", Бух_Кол[i] * Бух_Цена[i]);
           z2 = PutFieldS(iOa, z2, "ПРИЗН", sSNPrizn[i]);
           EndChanging(iOa);
         Except
           CancelChanging(iOa);
         End;
       Except
         CancelChanging(iOwa);
       End;
    else
       СуммаЗаписи = СуммаЗаписи + Бух_Цена[i] * Бух_Кол[i];
       BeginChanging(iOwa);
       Try
         z2 = InsertRecord(iOa);
         z2 = PutFieldR(iOa, z2, "ДЕНДОК_ВИД", SignToRecord(ДенДок2[i]));
         z2 = PutFieldS(iOa, z2, "ДЕНДОКВИД_ПРИЗН", ДенДок2[i]);
         z2 = PutFieldS(iOa, z2, "ДЕНДОКВИД_НАИМ", НаимДок[i]);
         z2 = PutFieldL(iOa, z2, "FLAGКОЛ", КолФлаг2[i]);
         z2 = PutFieldS(iOa, z2, "СЕРИЯБУМ", Бух_Серия[i]);
         iTmp1 = pos("-", Бух_Номер[i]);
         if iTmp1 >= 1
         :
            sTmp1 = ExtractWord(1, Бух_Номер[i], "-");
            sTmp2 = ExtractWord(2, Бух_Номер[i], "-");
         else
            sTmp1 = Бух_Номер[i];
            sTmp2 = Бух_Номер[i];
         fi;
         z2 = PutFieldS(iOa, z2, "НОМЕРБУМ_Н", sTmp1);
         z2 = PutFieldS(iOa, z2, "НОМЕРБУМ_К", sTmp2);
         z2 = PutFieldI(iOa, z2, "КОЛДОК", int(sTmp2) - int(sTmp1) + 1);
         z2 = PutFieldN(iOa, z2, "КОЛ", Бух_Кол[i]);
         z2 = PutFieldN(iOa, z2, "ЦЕНА", Бух_Цена[i]);
         z2 = PutFieldN(iOa, z2, "СУММА", Бух_Кол[i] * Бух_Цена[i]);
         z2 = PutFieldS(iOa, z2, "ПРИЗН", sSNPrizn[i]);
         EndChanging(iOa);
       Except
         CancelChanging(iOa);
       End;
    fi;
  od;
  CloseWorkArea(iOa);
  CloseWorkArea(iOwa);
  sTmp1 = sPath;
  if substr(sTmp1, length(sTmp1), 1) <> "\"
  :
     sTmp1 = sTmp1 + "\";
  fi;
  sTmp1 = sTmp1 + "РПО_ДенДок_Приход";
  sTmp2 = "ДАТА=" + DateToString(dDatePut) + " AND ФИО='" + ФИО + "'";
  ЭкспортКартотекиПоФильтру("РПО_ДенДок_Приход", sTmp2, sTmp1);
  iOwa = OpenWorkArea("РПО_ДенДок_Приход", "", sTmp2);
  BeginChanging(iOwa);
  Try
    DeleteAllRecords(iOwa);
    EndChanging(iOwa);
  Except
    CancelChanging(iOwa);
  End;
  CloseWorkArea(iOwa);
End;

Proc btnMain_OnClick(Sender: String);
  procMainFunc;
end;

Proc btnFinish_ПриНажатии(Отправитель: Строка);
  procExportFunc;
end;

Конец
