-- Шаблон создан мастером бланков
-- 09.02.2011 15:05:24
--
БланкСШаблоном "Выписка получателя бюджетных средств", РЕДАКТОР РПО_ВЫПИСКА_ПБС;
-- ИНДЕКСЫ
   -- Ш - переменная шапки;
   -- ОБД - 1.Операции с Бюджетными Данными;
   -- ОБС - 2.Операции с Бюджетными Средствами;
   -- ПДД - 3.операции по Приносящей Доход Деятельности;
   -- ДБФ - 4.операции за счет Дополнительного Бюджетного Финансирования;
   -- ОРД - 5.операции по Оперативно-Розыскной Деятельности;
      --ОЛС - 1,1.Остатки на Лицевом Счете;
      --ДБД - 1,2,1.Доведенные бюджетные данные;
      --ЛБО - 1,2,2.Лимиты бюджетных обязательств;
      --ПОФ - 1,2,3. Предельные объемы финансирования;
      --ДЛО - 1,3,1. Детализированные лимиты бюджетных обязательсв;
      --ТЛО - 1,3,2. Лимиты бюджетных обязательств в текущем году;
      --ИСС - 2,1. Изменение остатков на лицевом счете;
      --ИОД - 3,1. Изменение остатков на лицевом счете;
      --ИОС - 4,1. Изменение остатков на лицевом счете;
      --ИОО - 5,1. Изменение остатков на лицевом счете;
      --ПВР - 2,2. Поступления в валюте Российской Федерации;
      --ПВИ - 2,3. Поступления в иностранной валюте;
      --ВВР - 2,4. Выплаты в валюте Российской Федерации;
      --ВВИ - 2,5. Выплаты в иностранной валюте;
      --УБО - 2,6. Поставленные на учет бюджетные обязательства;
      --СНО - 3,2. Сметные назначения и поставленные на учет бюджетные обязательства;
      --ОСД - 3,3. Операции со Средствами от приносящей Доход деятельности;
      --БДО - 4,2. Бюджетные Данные и бюджетные Обязательства;
      --ОДБ - 4,3. Операции со Средствами за счет Дополнительного бюджетного финансирования;
      --ИДФ - 4,4. Источники Доп. бюдж. Финансирования;
      --ОСО - 5,2. Операции со средствами по оперативно-розыскной деятельности;
	  --БАС - Бюджетные АСсигнования;
	  --ЛБО - Лимиты Бюджетных Обязательств;
	  --ПОФ - Предельные Объемы Финансирования;
	  --ДОК - Документ;
	  --ССК - Сумма за счет Связанных Кредитов;
	  --ВИВ - сумма на Выплаты в Иностранной Валюте;
	  --СУМ,СМ1, СМ2, СМ3 и тд  - Сумма на какой-нибудь год;
	  --ИМП - наИМенование Показателя;
	  --ПУО - Поставленные на Учет бюджетные Обязательства;
	  --ПОС - ПОСтупления в каком-нибудь году;
	  --ВПЛ - ВыПЛаты в каком-нибудь году;
	  --ОКВ - Код валюты по ОКВ;
	  --КРС - КуРС валюты;
	  --СИВ - Сумма в Иностранной Валюте;
	  --ДПП - Документ, подтверждающий проведение операции;
	  --ДПС - Документ получателя бюджетных средств;
	  --УЧН - Учетный Номер;
	  --ОСТ - остатки на счете;
	  --СМН - СМетные Назначения на какой-нибудь год;
	  --ИДФ - Источник Дополнительного бюджетного Финансирования;
	  --БОБ - Бюджетные ОБязательства на какой-нибудь год;
	  --ДАД - Документ Администратора Доходов Бюджета;
	      --Н - остатки на начало дня;
	      --К - остатки на конец дня;
	      --И - итого;
	      --В - всего;
	      --  - год;
	      --0 - массив;
  --К платежкам
      --ГУИД - гуид операции;
      --КОНТ - контрагент;
      --НАЗ - назначение платежа;
      --ИНН
      --КПП
      --ПДН - показатель номера документа;
      --ПДД - показатель даты документа;
      --ТПЛ - тип платежа;
      --РСЧ - расчетный счет;
      --БИК - БИК банка;
      --ИМБ - наименование банка;
      --КСБ - коррсчет банка;
      --КБК - код бюджетной классификации;
      --ОКТ - код ОКАТО;
      --ПОП - показатель основания платежа;
      --ПНП - показатель налогового периода/кода таможенного органа;
	--ПЛ - плательщик;
      --РПЛ - расшифровка платежного поручения;
      --ТКБК - тип КБК;
      --НПЛ - направление платежа;
      --КОМ - резервное поле, комментарий;
--ИНДЕКСЫ конец

var fСкрытие:L=[True];
var fСкрытие_:S=if(fСкрытие,"Отображать № приложения","Не отображать № приложения");
var fДопИнфа:L=[True];
var fДопИнфа_:S=if(fДопИнфа,"Отображать доп. информацию","Не отображать доп. информацию");


var FMT_VER:S; --Версия формата
var VP_GUID:S; --Идентификатор выписки

var Ш_ДатаПред:D;
var Ш_КОФК:S;
var Ш_ОрФК:S;
--var Ш_СводР:S;
var Ш_ГлБК:S;
var Ш_Получ:S;--=РеквНаше.ПолнИмя+РеквНаше.РПО_ПолнИмя2;
var Ш_Распр:S;
var Ш_ИмяБюдж:S;--=БанкНаше.РПО_НаимБюдж+БанкНаше.РПО_НаимБюдж2;
var Ш_ФинОрг:S;--=БанкНаше.РПО_ФО_Наим1+БанкНаше.РПО_ФО_Наим2;
var Ш_ДолОтИсп:S;
var Ш_ФИООтИсп:S;
var Ш_ТелОтИсп:S;
var Ш_ДФорм:D; --день, месяц и год даты формирования выписки;
var УпрШапк:L;
var УпрНастр:L=[False];
var УпрПуть:L=[True];
var Пос2Кр:S;
var Пос3Кр:S;
var Пос2Дб:S;
var Пос3Дб:S;
var GUID[]:S;
---
var ПолучБС:S;
var МаскаСчДеб:S=["???.01.05.02.*.?.201.01.510|???.01.05.02.*.?.201.02.510|???.01.05.02.*.?.201.07.510|*.?.304.05.*"];
var hСчКре:S;
---
--var СЧДЕБ22[]:S=if(ИМЯСЕКЦИИ[$].ПЛАТЕЖКА.РПО_РАСШИФР=1,ИМЯСЕКЦИИ[$].ПЛАТЕЖКА.РПО_РАСШИФР[1].СЧДЕБ,"");
--для сверки остатков
--Фильтр:S=["*.?.201.11.*"];--3 раздел всего
var БАСН0:n;  var ЛБОН0:n;  var ПОФН0:n;
var БАСК0:n;  var ЛБОК0:n;  var ПОФК0:n;
var БАСНД:n=if(БАСН0<>0,БАСН1-БАСН0,0);
var ЛБОНД:n=if(ЛБОН0<>0,ЛБОН1-ЛБОН0,0);  
var ПОФНД:n=if(ПОФН0<>0,ПОФН1-ПОФН0,0);
var БАСКД:n=if(БАСК0<>0,БАСК1-БАСК0,0);
var ЛБОКД:n=if(ЛБОК0<>0,ЛБОК1-ЛБОК0,0);
var ПОФКД:n=if(ПОФК0<>0,ПОФК1-ПОФК0,0);
var ИССПУОН0:n;   var ИССВПЛН0:n;    var ИОДОСТН3:n;	 var ИОДПОСН0:n;
var ИССПУОК0:n;   var ИССВПЛК0:n;    var ИОДОСТК3:n;	 var ИОДПОСК0:n;
var ИССПОСН0:n;   var ИОДОСТН0:n;    var ИОДПУОН0:n;	 var ИОДВПЛН0:n;
var ИССПОСК0:n;   var ИОДОСТК0:n;    var ИОДПУОК0:n;	 var ИОДВПЛК0:n;
var ИОСИДФН0:n;   var ИОСЛБОН0:n;    var ИОСПОФН0:n;	 var ИОСБОБН0:n;
var ИОСИДФК0:n;   var ИОСЛБОК0:n;    var ИОСПОФК0:n;	 var ИОСБОБК0:n;
var ИОСПОСН0:n;   var ИОСВПЛН0:n;    var ИООПОСН0:n;	 var ИОООСТН0:n;
var ИОСПОСК0:n;   var ИОСВПЛК0:n;    var ИООПОСК0:n;	 var ИОООСТК0:n;
var ИССПУОНД:n=if(ИССПУОН0<>0,ИССПУОН1-ИССПУОН0,0);    var ИССВПЛНД:n=if(ИССВПЛН0<>0,ИССВПЛН1-ИССВПЛН0,0);
var ИОДОСТНД3:n=if(ИОДОСТН3<>0,ИОДОСТН2-ИОДОСТН3,0);   var ИОДПОСНД:n=if(ИОДПОСН0<>0,ИОДПОСН1-ИОДПОСН0,0);
var ИССПУОКД:n=if(ИССПУОК0<>0,ИССПУОК1-ИССПУОК0,0);    var ИССВПЛКД:n=if(ИССВПЛК0<>0,ИССВПЛК1-ИССВПЛК0,0);
var ИОДОСТКД3:n=if(ИОДОСТК3<>0,ИОДОСТК2-ИОДОСТК3,0);   var ИОДПОСКД:n=if(ИОДПОСК0<>0,ИОДПОСК1-ИОДПОСК0,0);
var ИССПОСНД:n=if(ИССПОСН0<>0,ИССПОСН1-ИССПОСН0,0);    var ИОДОСТНД:n=if(ИОДОСТН0<>0,ИОДОСТН1-ИОДОСТН0,0);
var ИОДПУОНД:n=if(ИОДПУОН0<>0,ИОДПУОН1-ИОДПУОН0,0);    var ИОДВПЛНД:n=if(ИОДВПЛН0<>0,ИОДВПЛН1-ИОДВПЛН0,0);
var ИССПОСКД:n=if(ИССПОСК0<>0,ИССПОСК1-ИССПОСК0,0);    var ИОДОСТКД:n=if(ИОДОСТК0<>0,ИОДОСТК1-ИОДОСТК0,0);
var ИОДПУОКД:n=if(ИОДПУОК0<>0,ИОДПУОК1-ИОДПУОК0,0);    var ИОДВПЛКД:n=if(ИОДВПЛК0<>0,ИОДВПЛК1-ИОДВПЛК0,0);
var ИОСИДФНД:n=if(ИОСИДФН0<>0,ИОСИДФН1-ИОСИДФН0,0);    var ИОСЛБОНД:n=if(ИОСЛБОН0<>0,ИОСЛБОН1-ИОСЛБОН0,0);
var ИОСПОФНД:n=if(ИОСПОФН0<>0,ИОСПОФН1-ИОСПОФН0,0);    var ИОСБОБНД:n=if(ИОСБОБН0<>0,ИОСБОБН1-ИОСБОБН0,0);
var ИОСИДФКД:n=if(ИОСИДФК0<>0,ИОСИДФК1-ИОСИДФК0,0);    var ИОСЛБОКД:n=if(ИОСЛБОК0<>0,ИОСЛБОК1-ИОСЛБОК0,0);
var ИОСПОФКД:n=if(ИОСПОФК0<>0,ИОСПОФК1-ИОСПОФК0,0);    var ИОСБОБКД:n=if(ИОСБОБК0<>0,ИОСБОБК1-ИОСБОБК0,0);
var ИОСПОСНД:n=if(ИОСПОСН0<>0,ИОСПОСН1-ИОСПОСН0,0);    var ИОСВПЛНД:n=if(ИОСВПЛН0<>0,ИОСВПЛН1-ИОСВПЛН0,0);
var ИООПОСНД:n=if(ИООПОСН0<>0,ИООПОСН1-ИООПОСН0,0);    var ИОООСТНД:n=if(ИОООСТН0<>0,ИОООСТН1-ИОООСТН0,0);
var ИОСПОСКД:n=if(ИОСПОСК0<>0,ИОСПОСК1-ИОСПОСК0,0);    var ИОСВПЛКД:n=if(ИОСВПЛК0<>0,ИОСВПЛК1-ИОСВПЛК0,0);
var ИООПОСКД:n=if(ИООПОСК0<>0,ИООПОСК1-ИООПОСК0,0);    var ИОООСТКД:n=if(ИОООСТК0<>0,ИОООСТК1-ИОООСТК0,0);
var ИООВПЛН0:n;   
var ИООВПЛНД:n=if(ИООВПЛН0<>0,ИООВПЛН1-ИООВПЛН0,0);
var ИООВПЛК0:n;   
var ИООВПЛКД:n=if(ИООВПЛК0<>0,ИООВПЛК1-ИООВПЛК0,0);
-- Статус документов
-- 0 - Не найден
-- 1 - Проведен
-- 2 - не проведен
var ВВРСтат[]:I;

--объекты
btnНастройка: Object;
btnЗагрузка : Object;
btnПодЗаяв  : Object;
--btnОбнов    : Object;
--btnЗапПлатежки: Object;
BtnЗакрытие: Object;
--btnПровести: Object;
cbУчитывать: Object;
--боковые секции	     дополнительные секции
scЗаголовТаб22:Section;      scНазвДобТаб22:Section;
scИнфаТаб22   :Section;      scНазвДобТаб23:Section;
scЗаголовТаб23:Section;      scНазвДобТаб33:Section;
scИнфаТаб23   :Section;      scНазвДобТаб43:Section;
scЗаголовТаб24:Section;      scНазвДобТаб44:Section;
scИнфаТаб24   :Section;      scНазвДобТаб52:Section;
scЗаголовТаб25:Section;      scИнфаДобТаб22:Section;
scИнфаТаб25   :Section;      scИнфаДобТаб23:Section;
scЗаголовТаб33:Section;      scИнфаДобТаб33:Section;
scИнфаТаб33   :Section;      scИнфаДобТаб43:Section;
scЗаголовТаб43:Section;      scИнфаДобТаб44:Section;
scИнфаТаб43   :Section;      scИнфаДобТаб52:Section;
scЗаголовТаб44:Section;
scИнфаТаб44   :Section;
scЗаголовТаб52:Section;
scИнфаТаб52   :Section;
----года в заголовках
var ГОД1:I=Год(Дата);	var ГОД2:I=if(ГОД1=0,0,ГОД1+1);   var ГОД3:I=if(ГОД1=0,0,ГОД1+2);   var ГОД4:I=if(ГОД1=0,0,ГОД1+3);
--Временные переменные
var tmpПНД:S;	 var tmpПДД:S;	  var tmpТПЛ:S;    var tmpГУИД:S;
var tmpКОНТ:S;	 var tmpНАЗПЛ:S;  var tmpИННПЛ:S;  var tmpКПППЛ:S;
var tmpРСЧПЛ:S;  var tmpБИКПЛ:S;  var tmpИМБПЛ:S;  var tmpКСБПЛ:S;
var tmpКБК:S;	 var tmpОКТ:S;	  var tmpПОП:S;    var tmpПНП:S;
var tmpНОМ:S;	 var tmpДАТ:D;	  var tmpСУМ:N;    var tmpПОЛУЧ:S;
var tmpИННПО:S;  var tmpКПППО:S;  var tmpОЧЕРПЛ:S; var tmpВИДПЛ: S;

var tmpРСЧПОЛ:S;
var tmpБИКПОЛ:S;
var tmpИМБПОЛ:S;
var tmpКСБПОЛ:S;
--остальное
var FName:S;   var FName1:S;
--var A:S="+";
--var D:S="-";
var SelfBln:S="документы.БАНК.ВЫПИСКА_ПБС";
--остальное
var ЗНалCrd:S="РПО_ЗАЯВКА_НАЛ";
var ЗНалBln:S="ДОКУМЕНТЫ.БАНК.ЗАЯВКА_НАЛ";
var ЗКРCrd:S="РПО_ЗАЯВКА_КР";
var ЗКРBln:S="ДОКУМЕНТЫ.БАНК.ЗАЯВКА_КР";
var ЗВЗCrd:S="РПО_ЗАЯВКА_ВОЗВРАТ";
var ЗВЗBln:S="ДОКУМЕНТЫ.БАНК.ЗАЯВКА_ВОЗВРАТ";
var ПППCrd:S="ПрихПлПоручения";
var ПППBln:S="ДОКУМЕНТЫ.БАНК.ПОРУЧ_ВХ";
var ППCrd:S="Поруч";
var ППBln:S="ДОКУМЕНТЫ.БАНК.ПОРУЧ";

Func Bln4Crd(Crd:S):S;
  if Crd = ЗНалCrd: ^ЗНалBln;
    |Crd = ЗКРCrd: ^ЗКРBln;
    |Crd = ЗВЗCrd: ^ЗВЗBln;
    |Crd = ПППCrd: ^ПППBln;
    |Crd = ППCrd: ^ППBln;
  fi;
end;

var НастрGUID:S;
var UKey[]:Record;
fЗакрытьДок:L;
fУчитывать:L=[true];
Отмена:L=[False];

var создВсеПЛ:L;
var создВсеЗаявки: L;

Proc Обнул;    --обнуление всех переменных, кроме адреса загружаемых файлов.
if НастрGUID="": НастрGUID=GetGUID; fi;
   Раб.Настр.Начать(SelfBln,0,0,"",НастрGUID);
   Раб.Настр.Добавить("FName","S"); --переменная, которую нужно сохранить;
   Раб.Настр.Добавить("FName1","S");
   Раб.Настр.Сохранить;
   ClearBlank(SelfBln,true);
   Раб.Настр.Начать(SelfBln,0,0,"",НастрGUID);
   НастрGUID=Раб.Настр.Загрузить("","");
end;

Proc ЗакрытьНастр;
 УпрНастр=False;
 УпрПуть=True;
 btnНастройка.Visible=True;
 btnПодЗаяв.Visible=True;
 btnЗагрузка.Visible=True;
-- btnОбнов.Visible=True;
 --btnЗапПлатежки.Visible=True;
 btnЗакрытие.Visible=True;
 cbУчитывать.Visible=False;
-- btnПровести.Visible=True;
end;


Proc ОткрытьНастр;
 УпрНастр=True;
 УпрПуть=False;
-- Template.Field="Справ";
-- Template.Field="УслСч";
 btnНастройка.Visible=False;
 btnПодЗаяв.Visible=False;
 btnЗагрузка.Visible=False;
-- btnОбнов.Visible=False;
-- btnЗапПлатежки.Visible=False;
 btnЗакрытие.Visible=False;
 cbУчитывать.Visible=True;
-- btnПровести.Visible=False;
-- cbДок.Visible=False;

end;

Proc БокТаб(Flag:L);
var I:I;
--n=AsInteger(scЗаголовТаб22.ColsCount);
for I=9..14 do
  scЗаголовТаб22.Column(I,ColVisible,Flag);
  scИнфаТаб22.Column(I,ColVisible,Flag);
od;
--n=AsInteger(scЗаголовТаб23.ColsCount);
for I=14..19 do
  scЗаголовТаб23.Column(I,ColVisible,Flag);
  scИнфаТаб23.Column(I,ColVisible,Flag);
  scЗаголовТаб43.Column(I,ColVisible,Flag);
  scИнфаТаб43.Column(I,ColVisible,Flag);
  scЗаголовТаб44.Column(I,ColVisible,Flag);
  scИнфаТаб44.Column(I,ColVisible,Flag);
od;
--scНазвДобТаб22.visible=flag;
--scНазвДобТаб23.visible=flag;
--scНазвДобТаб33.visible=flag;
--scНазвДобТаб43.visible=flag;
--scНазвДобТаб44.visible=flag;
--scНазвДобТаб52.visible=flag;
--scИнфаДобТаб22.visible=flag;
--scИнфаДобТаб23.visible=flag;
--scИнфаДобТаб33.visible=flag;
--scИнфаДобТаб43.visible=flag;
--scИнфаДобТаб44.visible=flag;
--scИнфаДобТаб52.visible=flag;
end;

Func ИмяСекции(Sect:s):s;
var ИмяС:S;
 if Sect="scИнфаТаб22": ИмяС="ПВР";
    |Sect="scИнфаТаб23": ИмяС="ПВИ";
    |Sect="scИнфаТаб24": ИмяС="ВВР";
    |Sect="scИнфаТаб33": ИмяС="ОСД";
    |Sect="scИнфаТаб43": ИмяС="ОДБ";
    |Sect="scИнфаТаб44": ИмяС="ИДФ";
    |Sect="scИнфаТаб52": ИмяС="ОСО";
  fi;
^ИмяС;
end;

Func ВыборКлиента(F:s):record;
var Rec:Record;
Rec=OpenCardFile("Контрагент",F,nil,crdRecordOnly);
^Rec;
end;

Proc Клиент;
 If РеквНаше=nil:
    Ш_Получ="";
    Ш_ИмяБюдж="";
    Ш_ФинОрг="";
    Ш_Распр="";
    Ш_ОрФК="";
    Ш_КОФК="";
    Ш_ГлБК="";
  else
    Ш_Получ=РеквНаше.ПолнИмя+РеквНаше.РПО_ПолнИмя2;
    Ш_ИмяБюдж=БанкНаше.РПО_НаимБюдж+БанкНаше.РПО_НаимБюдж2;
    Ш_ФинОрг=БанкНаше.РПО_ФО_Наим1+БанкНаше.РПО_ФО_Наим2;
    Ш_Распр=Раб.Бюджет.НаимКБК("ППП2006",РеквНаше.РПО_ППП);   --?
    Ш_ОрФК=БанкНаше.РПО_ОФК_Имя;
    Ш_КОФК=БанкНаше.РПО_ОФК_Код;
    Ш_ГлБК=РеквНаше.РПО_ППП;
 fi;

end;

Proc ЗаполнитьКлиента (vRec: Record);
  РеквНаше=vRec;
  БанкНаше=Раб.Бюджет2005.БанкСчет(РеквНаше,False);   --банк указывается для второго раздела, упомянуть об этом. Вообще вынести выбор банковских счетов в отдельную функцию, где прописать: если заполнены все - присваивать шапке второй. Если второй не заполнен, присваивать третий.
  Клиент;
end;

Proc ЗаполнитьШапку(КБП:S);
var F:s;
var Nr,OWA:I;
var Rec:record;
F="НАШЕ and РПО_КБП='"+КБП+"'";
OWA=OpenWorkArea("Контрагент", "", F);
 Try
   nr=Records(OWA);
   if nr=1: Rec=GetRecordKey(OWA, 1);
     |nr>1:
      Message("Выберите получателя бюджетных средств",mtInformation);--если автоматически не вышло, прежде чем выдавать список на выбор, вывести сообщение с необходимыми данными
      Rec=ВыборКлиента(F);
   fi;
   if not Rec=nil:
      ЗаполнитьКлиента(Rec);
   fi;
 Finally
   CloseWorkArea(OWA);
 end;
end;


Func ВыборСчетДб(Field:S):S;
var СчетДб,СчетКр:S;
var tmp,VArCre,Mask:S;
VArCre=Substr(Field,1,4)+"Кр";
СчетКр=GetVAriableS(VarCre);
if Field="Пос2Дб": Mask="*.1.304.05.*";
  |Field="Пос3Дб": Mask="*.2.201.11.510";
fi;
-- if not РПО_ВД="3":
--    Mask=Mask+"&(???.??.*|"+Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","БК",False)+".*."+Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","КОСГУ",False)+")";
-- fi;
-- tmp=AccountElection(Mask,False,tmp);
 --где рпо_вд - вид средств. определяется номером раздела. Для второго раздела - 1, для третьего - 2,
--для четвертого и пятого - 1(?)
--   РПО_ВД="1":"средства бюджета"
--  |РПО_ВД="2":"средства от приносящей доход деятельности"
--  |РПО_ВД="3":"средства, поступающие во временное распоряжение"   --может ли это быть у нас в принципе, учитывать ли такой вариант в дальнейших операциях?
--у нас нет кбк. Пока.
tmp=AccountElection(Mask,False,tmp);  --открывает список счетов.
if not tmp="":
   СчетДб=tmp;
   if not Correspond(СчетДб,СчетКр): СчетКр=""; fi;
--   ОбновитьПризн(Iter);  --??
fi;
^СчетДб;
end;

------------------------------------------------------
------- Настройки ------------------------------------
------------------------------------------------------
Func ВыборСчетКр(Field:S):S;
var tmp:S;
var СчетКр,СчетДб:S;
if Field="Пос2Кр":
   СчетКр=Пос2Кр;
   If Пос2Дб="":      --а надо ли это ограничение?
      Message("Выберите счет дебета для второго раздела.");
      Пос2Дб=ВыборСчетДб(Пос2Дб);
   fi;
  |Field="Пос3Кр":
   СчетКр=Пос3Кр;
   If Пос3Дб="":
      Message("Выберите счет дебета для третьего раздела.");
      ВыборСчетДб(Пос3Дб);
   fi;
fi;
-- if РПО_Расшифр[Iter].КБК="" and not РПО_ВД="3": Message("Заполните код по БК",mtError); Template.Field="КБК"; Template.Frame=Iter; ^False; fi;
-- Раб.КСА.Начать;
-- Раб.КСА.Добавить(РПО_Расшифр[Iter].СчДеб);
-- Раб.КСА.Добавить(РПО_Расшифр[Iter].СчКре);
-- if Раб.КСА.Закончить(True): Message("Добавление новых счетов завершено"); fi;
-- if РПО_Расшифр[Iter].СчКре="":
--    if РПО_ВД="3":
--	 tmp=hСчКре;
--	else
--	 tmp=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","БК",False)+"."+РПО_ВД;
--	 if hСчКре="":
--	    tmp=tmp+".";
--	   else
--	   tmp=tmp+"."+Раб.Бюджет2005.ВзятьКодСчета(hСчКре,"","СЧ8",False);
--	 fi;
--    fi;
--   else
--    tmp=РПО_Расшифр[Iter].СчКре;
-- fi;
 tmp=PickCorrAccount(СчетДб,False,tmp);
-- if not tmp="":
--    РПО_Расшифр[Iter].СчКре=tmp;
--    hСчКре=tmp;
--    ОбновитьПризн(Iter);
-- fi;
-- Return False;
--end;

^СчетКр;
end;

Func ОбновитьПризн(Призн:S;СчКре_:S; СчДеб_:S; КБК_:S;ТипКБК:S):S;
Var ПризнБК,ПризнКОСГУ,tmp:S;
var Справ:S;
  if not Name_S(СчДеб_)=" " and not Name_S(СчКре_)=" ":
     tmp=Раб.Бюджет2005.СписокСправ(СчДеб_+"|"+СчКре_,0,"");
     Призн=Раб.Бюджет2005.ПривестиВСоотвНаборСлов(Призн," ",tmp,"|");
     ---
     RefreshAna;
     if not КБК_="":
	Справ=tmp;
	ПризнБК="";
	if ТипКБК="10":
	   if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","ФКР.*","")="":
	      ПризнБК="ФКР.";
	   fi;
	  |ТипКБК="20":
	   if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","КД.*","")="":
	      ПризнБК="КД.";
	   fi;
	  |ТипКБК="31" or ТипКБК="32":
	   if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","КИФД.*","")="":
	      ПризнБК="КИФД.";
	   fi;
	fi;
	if not ПризнБК="":
	   ПризнБК=ПризнБК+Раб.Бюджет2005.ВзятьКодКБК(КБК_,"","БК",False);
	   Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Призн," ",ПризнБК,"ФКР.*|КД.*|КИФД.*","|");
	fi;
	if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","КОСГУ.*","")="":
	   ПризнКОСГУ="КОСГУ."+Раб.Бюджет2005.ВзятьКодКБК(КБК_,"","КОСГУ",False);
	   tmp=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Призн," ","КОСГУ.*","");
	   if not Match(tmp,ПризнКОСГУ+"!"):
	      Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Призн," ",ПризнКОСГУ,"КОСГУ.*","|");
	   fi;
	fi;
     fi;
  fi;
^Призн;
end;

Proc ПроверСчет;
if Пос2Дб="":
   message("Выберите счет дебета для второго раздела.");
   Пос2Дб=ВыборСчетДб(Пос2Дб);
fi;
if Пос3Дб="":
   message("Выберите счет дебета для третьего раздела.");
   ВыборСчетДб(Пос3Дб);
fi;
end;
------------------------------------------------------
--- КОНЕЦ --------------------------------------------
------- Настройки ------------------------------------
------------------------------------------------------














-----------------------------------------------------
--  Функции разбора файла ---------------------------
-----------------------------------------------------
Proc Заголовок(F:I);	   --на всякий случай. Вызывается при чтении в загружаемом файле абзаца с заголовком.
  FMT_VER = Раб.ИмпортФК.Чит(F);
end;

Proc Получатель(F:I);	   -- вызывается при чтнеии в загружаемом файле абзаца с информацией о получателе.
--var Bur:S;
end;

Proc Отправитель(F:I);	   --аналогично. Инфа об отправителе.
--var Bur:S;
end;

Proc ОбщИнфаВп(F:I); --общая информация и итоговые суммы;
var Bur:S;
var locСводР:S;
  VP_GUID=Раб.ИмпортФК.Чит(F); --GUID;

  НомВып=Раб.ИмпортФК.Чит(F); --номер выписки;
  Дата=Раб.ИмпортФК.ВДату(Раб.ИмпортФК.Чит(F)); --дата выписки;
  Ш_ДатаПред=Раб.ИмпортФК.ВДату(Раб.ИмпортФК.Чит(F)); --дата предыдущей выписки;

  Bur=Раб.ИмпортФК.Чит(F); --вид отчета

  Ш_КОФК=Раб.ИмпортФК.Чит(F);  --Код ОрФК по КОФК;
  Ш_ОрФК=Раб.ИмпортФК.Чит(F);  --наименование территориального органа Федерального казначейства
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ИмяБюдж=Bur; --наименование бюджета;

  Bur=Раб.ИмпортФК.Чит(F);--ОКПО

  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ФинОрг=Bur; --финансовый орган;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ГлБК=Bur;  --Глава по БК;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_Распр=Bur;	--Главный распорядитель бюджетных средств;
  Bur=Раб.ИмпортФК.Чит(F);
  locСводР=Bur;  --Код ПБС по Сводному реестру;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_Получ=Bur;	--Получатель бюджетных средств;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ДолОтИсп=Bur; --Должность ответственного исполнителя ОрФК;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ФИООтИсп=Bur;  --ФИО ответственного исполнителя ОрФК;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ТелОтИсп=Bur;  --Телефон ответственного исполнителя ОрФК;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ДФорм=Раб.ИмпортФК.ВДату(Bur); --дата формирования в ОрФК;
  ЗаполнитьШапку(locСводР);
  --1.1 Операции с бюджетными данными. Остатки на лицевом счете
    --бюджетные ассигнования
  Bur=Раб.ИмпортФК.Чит(F);
  БАСН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  БАСК1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  БАСН2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  БАСК2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  БАСН3=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  БАСК3=Раб.ИмпортФК.ВЧисло(Bur);
    --лимиты бюджетных обязательств
  Bur=Раб.ИмпортФК.Чит(F);
  ЛБОН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ЛБОК1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ЛБОН2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ЛБОК2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ЛБОН3=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ЛБОК3=Раб.ИмпортФК.ВЧисло(Bur);
    --предельные объемы финансирования
  Bur=Раб.ИмпортФК.Чит(F);
  ПОФН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ПОФК1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ПОФН3=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ПОФК3=Раб.ИмпортФК.ВЧисло(Bur);
  --1.2.1.
  Bur=Раб.ИмпортФК.Чит(F);
  ДБДБАСИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ДБДБАСИ2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ДБДБАСИ3=Раб.ИмпортФК.ВЧисло(Bur);
    --лимиты бюджетных обязательств
  Bur=Раб.ИмпортФК.Чит(F);
  ДБДЛБОИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ДБДЛБОИ2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ДБДЛБОИ3=Раб.ИмпортФК.ВЧисло(Bur);
    --предельные объемы финансирования
  Bur=Раб.ИмпортФК.Чит(F);
  ДБДПОФИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ДБДПОФИ3=Раб.ИмпортФК.ВЧисло(Bur);
  --1.2.2.
  Bur=Раб.ИмпортФК.Чит(F);
  ЛБОССКИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ЛБОВИВИ1=Раб.ИмпортФК.ВЧисло(Bur);
  --1.2.3.
  Bur=Раб.ИмпортФК.Чит(F);
  ПОФСУМИ1=Раб.ИмпортФК.ВЧисло(Bur);
  --1.3.1
  Bur=Раб.ИмпортФК.Чит(F);
  ДЛОСУМИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ДЛОСУМИ2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ДЛОСУМИ3=Раб.ИмпортФК.ВЧисло(Bur);
  --1.3.2.
  Bur=Раб.ИмпортФК.Чит(F);
  ТЛОСУМИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ТЛОСУМИ3=Раб.ИмпортФК.ВЧисло(Bur);

  --2.1 Операции с бюджетными средствами. Изменение остатков на лицевом счете
    --Поставленные на учет бюджетные обязательства
  Bur=Раб.ИмпортФК.Чит(F);
  ИССПУОН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИССПУОК1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИССПУОН2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИССПУОК2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИССПУОН3=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИССПУОК3=Раб.ИмпортФК.ВЧисло(Bur);
    --Поступления
  Bur=Раб.ИмпортФК.Чит(F);
  ИССПОСН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИССПОСК1=Раб.ИмпортФК.ВЧисло(Bur);
    --Выплаты
  Bur=Раб.ИмпортФК.Чит(F);
  ИССВПЛН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИССВПЛК1=Раб.ИмпортФК.ВЧисло(Bur);
  --2.2.
  Bur=Раб.ИмпортФК.Чит(F);
  ПВРСУМИ1=Раб.ИмпортФК.ВЧисло(Bur);
  --2.3.
  Bur=Раб.ИмпортФК.Чит(F);
  ПВИСУМВ1=Раб.ИмпортФК.ВЧисло(Bur);
  --2.4.
  Bur=Раб.ИмпортФК.Чит(F);
  ВВРСУМИ1=Раб.ИмпортФК.ВЧисло(Bur);
  --2.5.
  Bur=Раб.ИмпортФК.Чит(F);
  ВВИСУМВ1=Раб.ИмпортФК.ВЧисло(Bur);
  --2.6.
  Bur=Раб.ИмпортФК.Чит(F);
  УБОСУМИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  УБОСУМИ2=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  УБОСУМИ3=Раб.ИмпортФК.ВЧисло(Bur);
  if FMT_VER="TXVP150101":
     Bur=Раб.ИмпортФК.Чит(F);
     Bur=Раб.ИмпортФК.Чит(F);
     Bur=Раб.ИмпортФК.Чит(F);
  fi;
  --3.1. Операции за счет дополнительного бюджетного финансирования. Изменение остатков на лицевом счете
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСИДФН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСИДФК1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСЛБОН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСЛБОК1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСПОФН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСПОФК1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСБОБН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСБОБК1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСПОСН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСПОСК1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСВПЛН1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИОСВПЛК1=Раб.ИмпортФК.ВЧисло(Bur);
  --3.2.
  Bur=Раб.ИмпортФК.Чит(F);
  БДОЛБОИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  БДОПОФИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  БДОПУОИ2=Раб.ИмпортФК.ВЧисло(Bur);
  --3.3.
  Bur=Раб.ИмпортФК.Чит(F);
  ОДБПОСИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ОДБВПЛИ1=Раб.ИмпортФК.ВЧисло(Bur);
  --3.4.
  Bur=Раб.ИмпортФК.Чит(F);
  ИДФПОСИ1=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИДФВПЛИ1=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc ОбщИнфаВпАдм(F:I); --общая информация и итоговые суммы;
var Bur:S;
  Bur=Раб.ИмпортФК.Чит(F); --GUID;
  Bur=Раб.ИмпортФК.Чит(F); --Номер Л/С
  Дата=Раб.ИмпортФК.ВДату(Раб.ИмпортФК.Чит(F)); --дата выписки;
  Ш_ДатаПред=Раб.ИмпортФК.ВДату(Раб.ИмпортФК.Чит(F)); --дата предыдущей выписки;
  ЗаполнитьШапку('');
  Ш_КОФК=Раб.ИмпортФК.Чит(F);  --Код ОрФК по КОФК;
  Ш_ОрФК=Раб.ИмпортФК.Чит(F);  --наименование территориального органа Федерального казначейства
  --!!!!
  Bur=Раб.ИмпортФК.Чит(F); --Код АДБ
  Bur=Раб.ИмпортФК.Чит(F); --АДБ
  Bur=Раб.ИмпортФК.Чит(F); --Код главыДБ
  Bur=Раб.ИмпортФК.Чит(F); --ГАДБ
  Ш_ИмяБюдж=Bur; --наименование бюджета;
  Bur=Раб.ИмпортФК.Чит(F);--ОКПО ФО
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ФинОрг=Bur; --финансовый орган;

--  Bur=Раб.ИмпортФК.Чит(F);
--  Ш_ГлБК=Bur;  --Глава по БК;
--  Bur=Раб.ИмпортФК.Чит(F);
--  Ш_Распр=Bur;  --Главный распорядитель бюджетных средств;
--  Bur=Раб.ИмпортФК.Чит(F);
--  Ш_СводР=Bur;  --Код ПБС по Сводному реестру;
--  Bur=Раб.ИмпортФК.Чит(F);
--  Ш_Получ=Bur;  --Получатель бюджетных средств;

  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ДолОтИсп=Bur; --Должность ответственного исполнителя ОрФК;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ФИООтИсп=Bur;  --ФИО ответственного исполнителя ОрФК;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ТелОтИсп=Bur;  --Телефон ответственного исполнителя ОрФК;
  Bur=Раб.ИмпортФК.Чит(F);
  Ш_ДФорм=Раб.ИмпортФК.ВДату(Bur); --дата формирования в ОрФК;
end;

Proc Раздел121(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ДБД,ДБД+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].ГУИД=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].БАС01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].БАС02=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].БАС03=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].ЛБО01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].ЛБО02=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].ЛБО03=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].ПОФ01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДБД[I].ПОФ03=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел122(F:I);
var Bur:S;
var I:I;
   I=InsertFrame(ЛБО,ЛБО+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ЛБО[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ЛБО[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ЛБО[I].ГУИД=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ЛБО[I].ССК01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ЛБО[I].ВИВ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел123(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ПОФ,ПОФ+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ПОФ[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ПОФ[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ПОФ[I].ГУИД=Bur; --GUID
    Bur=Раб.ИмпортФК.Чит(F);
    ПОФ[I].СУМ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел131(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ДЛО,ДЛО+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ДЛО[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ДЛО[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДЛО[I].ГУИД=Bur; --GUID
    Bur=Раб.ИмпортФК.Чит(F);
    ДЛО[I].СУМ01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДЛО[I].СУМ02=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ДЛО[I].СУМ03=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел132(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ТЛО,ТЛО+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ТЛО[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ТЛО[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ТЛО[I].ГУИД=Bur; --GUID
    Bur=Раб.ИмпортФК.Чит(F);
    ТЛО[I].СУМ01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ТЛО[I].СУМ03=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел22(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ПВР,ПВР+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ПВР[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ПВР[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ПВР[I].ГУИД=Bur; --GUID
    if FMT_VER="TXVP150101":
      Bur=Раб.ИмпортФК.Чит(F); --ФАИП
      Bur=Раб.ИмпортФК.Чит(F); --ДопКл
    fi;
    Bur=Раб.ИмпортФК.Чит(F);
    ПВР[I].СУМ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел23(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ПВИ,ПВИ+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИ[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИ[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИ[I].ГУИД=Bur; --GUID
    if FMT_VER="TXVP150101":
      Bur=Раб.ИмпортФК.Чит(F); --ФАИП
    fi;
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИ[I].ОКВ01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИ[I].СИВ01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИ[I].КРС01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИ[I].СУМ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел23И(F:I);
var Bur:S;
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИОКВИ1=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИСИВИ1=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ПВИСУМИ1=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел24(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ВВР,ВВР+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ВВР[I].ДПП01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВР[I].ДПП02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ВВР[I].ГУИД=Bur; --GUID
--    if FMT_VER="TXVP150101":
--	Bur=Раб.ИмпортФК.Чит(F); --ФАИП
--	Bur=Раб.ИмпортФК.Чит(F); --ДопКл
--    fi;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВР[I].ДПС01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВР[I].ДПС02=Раб.ИмпортФК.ВДату(Bur);
    if FMT_VER="TXVP150101":
      Bur=Раб.ИмпортФК.Чит(F); --ФАИП
      Bur=Раб.ИмпортФК.Чит(F); --ДопКл
    fi;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВР[I].СУМ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел25(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ВВИ,ВВИ+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИ[I].ДПП01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИ[I].ДПП02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИ[I].ГУИД=Bur; --GUID
    if FMT_VER="TXVP150101":
      Bur=Раб.ИмпортФК.Чит(F); --ФАИП
    fi;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИ[I].ДПС01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИ[I].ДПС02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИ[I].ОКВ01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИ[I].СИВ01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИ[I].КРС01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИ[I].СУМ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел25И(F:I);
var Bur:S;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИОКВИ1=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИСИВИ1=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ВВИСУМИ1=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел26(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(УБО,УБО+1);
    Bur=Раб.ИмпортФК.Чит(F);
    УБО[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    УБО[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F); 
    УБО[I].ГУИД=Bur;--GUID
    if FMT_VER="TXVP150101":
      Bur=Раб.ИмпортФК.Чит(F); --ФАИП
    fi;
    Bur=Раб.ИмпортФК.Чит(F);
    УБО[I].УЧН01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    УБО[I].СУМ01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    УБО[I].СУМ02=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    УБО[I].СУМ03=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел32(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(СНО,СНО+1);
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].ГУИД=Bur; --GUID
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].СМН01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].СМН02=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].СМН03=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].ПУО01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].ПУО02=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].ПУО03=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    СНО[I].ПУО04=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел33(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ОСД,ОСД+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ОСД[I].ДПП01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ОСД[I].ДПП02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F); 
    ОСД[I].ГУИД=Bur;--GUID
    Bur=Раб.ИмпортФК.Чит(F);
    ОСД[I].ДПС01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ОСД[I].ДПС02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ОСД[I].ПОС01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ОСД[I].ВПЛ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел42(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(БДО,БДО+1);
    Bur=Раб.ИмпортФК.Чит(F);
    БДО[I].ДОК01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    БДО[I].ДОК02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F); --GUID
    БДО[I].ГУИД=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    БДО[I].ЛБО01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    БДО[I].ПОФ01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    БДО[I].ПУО01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    БДО[I].ПУО02=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел43(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ОДБ,ОДБ+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ОДБ[I].ДПП01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ОДБ[I].ДПП02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ОДБ[I].ГУИД=Bur; --GUID
    Bur=Раб.ИмпортФК.Чит(F);
    ОДБ[I].ДПС01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ОДБ[I].ДПС02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ОДБ[I].ПОС01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ОДБ[I].ВПЛ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел44(F:I);
var Bur:S;
var I:I;
  I=InsertFrame(ИДФ,ИДФ+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ИДФ[I].ДПП01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ИДФ[I].ДПП02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F); --GUID
    ИДФ[I].ГУИД=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ИДФ[I].ДПС01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ИДФ[I].ДПС02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ИДФ[I].ПОС01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ИДФ[I].ВПЛ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc Раздел52(F:I);
var I:I;
var Bur:S;
  I=InsertFrame(ОСО,ОСО+1);
    Bur=Раб.ИмпортФК.Чит(F);
    ОСО[I].ДПП01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ОСО[I].ДПП02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ОСО[I].ГУИД=Bur; --GUID
    Bur=Раб.ИмпортФК.Чит(F);
    ОСО[I].ДПС01=Bur;
    Bur=Раб.ИмпортФК.Чит(F);
    ОСО[I].ДПС02=Раб.ИмпортФК.ВДату(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ОСО[I].ПОС01=Раб.ИмпортФК.ВЧисло(Bur);
    Bur=Раб.ИмпортФК.Чит(F);
    ОСО[I].ВПЛ01=Раб.ИмпортФК.ВЧисло(Bur);
end;

Proc ОбщаяИнфаПл(F:I);	      --Чтение абзаца с общей информацией из файла с подробной информацией о платежках.
--var Bur:S;
end;

Proc ЗаполнитьПВР(F:I;I:I);    --раздел 2.2. из файла с дом. информацией.
  ПВР[I].КОНТ=tmpКОНТ;
  ПВР[I].НАЗПЛ=tmpНАЗПЛ;
  ПВР[I].ПНД=tmpПНД;
  ПВР[I].ПДД=tmpПДД;
  ПВР[I].ТПЛ=tmpТПЛ;
  ПВР[I].ИННПЛ=tmpИННПЛ;
  ПВР[I].КПППЛ=tmpКПППЛ;
  ПВР[I].РСЧПЛ=tmpРСЧПЛ;
  ПВР[I].БИКПЛ=tmpБИКПЛ;
  ПВР[I].ИМБПЛ=tmpИМБПЛ;
  ПВР[I].КСБПЛ=tmpКСБПЛ;
  ПВР[I].КБК=tmpКБК;
  ПВР[I].ОКТ=tmpОКТ;
  ПВР[I].ПОП=tmpПОП;
  ПВР[I].ПНП=tmpПНП;
  ПВР[I].СчДеб=Пос2Дб;
end;

Proc ЗаполнитьПВИ(F:I;I:I);   --раздел 2.3. из файла с дом. информацией.
  ПВИ[I].КОНТ=tmpКОНТ;
  ПВИ[I].НАЗПЛ=tmpНАЗПЛ;
  ПВИ[I].ПНД=tmpПНД;
  ПВИ[I].ПДД=tmpПДД;
  ПВИ[I].ТПЛ=tmpТПЛ;
  ПВИ[I].ИННПЛ=tmpИННПЛ;
  ПВИ[I].КПППЛ=tmpКПППЛ;
  ПВИ[I].РСЧПЛ=tmpРСЧПЛ;
  ПВИ[I].БИКПЛ=tmpБИКПЛ;
  ПВИ[I].ИМБПЛ=tmpИМБПЛ;
  ПВИ[I].КСБПЛ=tmpКСБПЛ;
  ПВИ[I].КБК=tmpКБК;
  ПВИ[I].ОКТ=tmpОКТ;
  ПВИ[I].ПОП=tmpПОП;
  ПВИ[I].ПНП=tmpПНП;
  ПВИ[I].СчДеб=Пос2Дб;
end;





Proc ЗаполнитьОСД(F:I;I:I);  --раздел 3.3. из файла с дом. информацией.
  if ОСД[I].ПОС01<>0 and ОСД[I].ВПЛ01<>0 then
     Message ("В разделе 3.3 документ на поступление и выплату одновременно. Не предусмотренно.",mtError); exit;
  fi;
  if ОСД[I].ПОС01<>0 then  --если это поступление
     ОСД[I].КОНТ=tmpКОНТ;
     ОСД[I].НАЗПЛ=tmpНАЗПЛ;
     ОСД[I].ПНД=tmpПНД;
     ОСД[I].ПДД=tmpПДД;
     ОСД[I].ТПЛ=tmpТПЛ;
     ОСД[I].ИННПЛ=tmpИННПЛ;
     ОСД[I].КПППЛ=tmpКПППЛ;
     ОСД[I].РСЧПЛ=tmpРСЧПЛ;
     ОСД[I].БИКПЛ=tmpБИКПЛ;
     ОСД[I].ИМБПЛ=tmpИМБПЛ;
     ОСД[I].КСБПЛ=tmpКСБПЛ;
     ОСД[I].КБК=tmpКБК;
     ОСД[I].ОКТ=tmpОКТ;
     ОСД[I].ПОП=tmpПОП;
     ОСД[I].ПНП=tmpПНП;
     ОСД[I].СчДеб=Пос3Дб;
  else --иначе это выплаты
     ОСД[I].КОНТ=tmpПОЛУЧ;
     ОСД[I].НАЗПЛ=tmpНАЗПЛ;
     ОСД[I].КБК=tmpКБК;
     ОСД[I].ИННПЛ=tmpИННПО;
     ОСД[I].КПППЛ=tmpКПППО;
  fi;
end;

Proc ЗаполнитьОДБ(F:I;I:I);   --раздел 4.3. из файла с дом. информацией.
  if ОДБ[I].ПОС01<>0 and ОДБ[I].ВПЛ01<>0 then
     Message ("В разделе 4.3 документ на поступление и выплату одновременно. Не предусмотренно.",mtError);  exit;
  fi;
  if ОДБ[I].ПОС01<>0 then  --если это поступление
     ОДБ[I].КОНТ=tmpКОНТ;
     ОДБ[I].НАЗПЛ=tmpНАЗПЛ;
     ОДБ[I].ПНД=tmpПНД;
     ОДБ[I].ПДД=tmpПДД;
     ОДБ[I].ТПЛ=tmpТПЛ;
     ОДБ[I].ИННПЛ=tmpИННПЛ;
     ОДБ[I].КПППЛ=tmpКПППЛ;
     ОДБ[I].РСЧПЛ=tmpРСЧПЛ;
     ОДБ[I].БИКПЛ=tmpБИКПЛ;
     ОДБ[I].ИМБПЛ=tmpИМБПЛ;
     ОДБ[I].КСБПЛ=tmpКСБПЛ;
     ОДБ[I].КБК=tmpКБК;
     ОДБ[I].ОКТ=tmpОКТ;
     ОДБ[I].ПОП=tmpПОП;
     ОДБ[I].ПНП=tmpПНП;
     ОДБ[I].СчДеб=Пос3Дб;
  else --иначе это выплаты
     ОДБ[I].КОНТ=tmpПОЛУЧ;
     ОДБ[I].НАЗПЛ=tmpНАЗПЛ;
     ОДБ[I].КБК=tmpКБК;
     ОДБ[I].ИННПЛ=tmpИННПО;
     ОДБ[I].КПППЛ=tmpКПППО;
  fi;
end;

Proc ЗаполнитьИДФ(F:I;I:I);   --раздел 4.4.  из файла с дом. информацией.
  if ИДФ[I].ПОС01<>0 and ИДФ[I].ВПЛ01<>0 then
     Message ("В разделе 3.4 документ на поступление и выплату одновременно. Не предусмотренно.",mtError); exit;
  fi;
  if ИДФ[I].ПОС01<>0 then  --если это поступление
     ИДФ[I].КОНТ=tmpКОНТ;
     ИДФ[I].НАЗПЛ=tmpНАЗПЛ;
     ИДФ[I].ПНД=tmpПНД;
     ИДФ[I].ПДД=tmpПДД;
     ИДФ[I].ТПЛ=tmpТПЛ;
     ИДФ[I].ИННПЛ=tmpИННПЛ;
     ИДФ[I].КПППЛ=tmpКПППЛ;
     ИДФ[I].РСЧПЛ=tmpРСЧПЛ;
     ИДФ[I].БИКПЛ=tmpБИКПЛ;
     ИДФ[I].ИМБПЛ=tmpИМБПЛ;
     ИДФ[I].КСБПЛ=tmpКСБПЛ;
     ИДФ[I].КБК=tmpКБК;
     ИДФ[I].ОКТ=tmpОКТ;
     ИДФ[I].ПОП=tmpПОП;
     ИДФ[I].ПНП=tmpПНП;
     ИДФ[I].СчДеб=Пос3Дб;
  else --иначе это выплаты
     ИДФ[I].КОНТ=tmpПОЛУЧ;
     ИДФ[I].НАЗПЛ=tmpНАЗПЛ;
     ИДФ[I].КБК=tmpКБК;
     ИДФ[I].ИННПЛ=tmpИННПО;
     ИДФ[I].КПППЛ=tmpКПППО;
  fi;
end;

Proc ЗаполнитьОСО(F:I;I:I);  --раздел 5.2.  из файла с дом. информацией.
  if ОСО[I].ПОС01<>0 and ОСО[I].ВПЛ01<>0 then
     Message ("В разделе 5.2 документ на поступление и выплату одновременно. Не предусмотренно.",mtError); exit;
  fi;
  if ОСО[I].ПОС01<>0 then  --если это поступление
     ОСО[I].КОНТ=tmpКОНТ;
     ОСО[I].НАЗПЛ=tmpНАЗПЛ;
     ОСО[I].ПНД=tmpПНД;
     ОСО[I].ПДД=tmpПДД;
     ОСО[I].ТПЛ=tmpТПЛ;
     ОСО[I].ИННПЛ=tmpИННПЛ;
     ОСО[I].КПППЛ=tmpКПППЛ;
     ОСО[I].РСЧПЛ=tmpРСЧПЛ;
     ОСО[I].БИКПЛ=tmpБИКПЛ;
     ОСО[I].ИМБПЛ=tmpИМБПЛ;
     ОСО[I].КСБПЛ=tmpКСБПЛ;
     ОСО[I].КБК=tmpКБК;
     ОСО[I].ОКТ=tmpОКТ;
     ОСО[I].ПОП=tmpПОП;
     ОСО[I].ПНП=tmpПНП;
     ОСО[I].СчДеб=Пос3Дб;
  else --иначе это выплаты
     ОСО[I].КОНТ=tmpПОЛУЧ;
     ОСО[I].НАЗПЛ=tmpНАЗПЛ;
     ОСО[I].КБК=tmpКБК;
     ОСО[I].ИННПЛ=tmpИННПО;
     ОСО[I].КПППЛ=tmpКПППО;
  fi;
end;


proc заполнитьВВР(F:I;I:I);
     ВВР[I].КОНТ=tmpПОЛУЧ;   --контрагент (получатель)
     ВВР[I].НАЗПЛ=tmpНАЗПЛ;  --назначение платежа
  --   ВВР[I].КБК=tmpКБК;
     ВВР[I].ИННПЛ=tmpИННПО;  --получатель
     ВВР[I].КПППЛ=tmpКПППО;  --получатель
     ВВР[I].РСЧПОЛ=tmpРСЧПОЛ;
     ВВР[I].БИКПОЛ=tmpБИКПОЛ;
     ВВР[I].ИМБПОЛ=tmpИМБПОЛ;
     ВВР[I].КСБПОЛ=tmpКСБПОЛ;
     ВВР[I].ВИДПЛ=tmpВИДПЛ;
     ВВР[I].ОЧРПЛ=tmpОЧЕРПЛ;



end;


Proc РасшПлат22(F:I;I:I);   --расшифровка платежных поручений в таблице 2.2.
var Bur,КБК_:S;
var Iter:I;
  Iter=InsertFrame(ПВРРПЛ,ПВРРПЛ+1);
  ПВРРПЛ[Iter].ГРПЛ=ПВР[I].ГУИД;
  ПВРРПЛ[Iter].НОМДОК=ПВР[I].ДОК01;
  Bur=Раб.ИмпортФК.Чит(F);
  КБК_=Bur;
  Bur=Раб.ИмпортФК.Чит(F);
  ПВРРПЛ[Iter].ТКБК=Bur;
  ПВРРПЛ[Iter].КБКРПЛ = Раб.Бюджет2005.ВзятьКБКФК(КБК_,ПВРРПЛ[Iter].ТКБК,"БК+КОС");
  Bur=Раб.ИмпортФК.Чит(F); --Код цели
  Bur=Раб.ИмпортФК.Чит(F); --Номер бюджетного обязательства
  Bur=Раб.ИмпортФК.Чит(F); --ОКАТО
  Bur=Раб.ИмпортФК.Чит(F);
  ПВРРПЛ[Iter].СУМ=Раб.ИмпортФК.ВЧисло(Bur); --сумма
  Bur=Раб.ИмпортФК.Чит(F);
  ПВРРПЛ[Iter].НПЛ=Bur;
  Bur=Раб.ИмпортФК.Чит(F); --месяц финансирования
  Bur=Раб.ИмпортФК.Чит(F);
  ПВРРПЛ[Iter].КОМ=Bur;
end;

Proc РасшПлат23(F:I;I:I);  --расшифровка платежных поручений в таблице 2.3.
var Bur,КБК_:S;
var Iter:I;
  Iter=InsertFrame(ПВИРПЛ,ПВИРПЛ+1);
  ПВИРПЛ[Iter].ГРПЛ=ПВИ[I].ГУИД;
  ПВИРПЛ[Iter].НОМДОК=ПВИ[I].ДОК01;
  Bur=Раб.ИмпортФК.Чит(F);
  КБК_=Bur;
  Bur=Раб.ИмпортФК.Чит(F);
  ПВИРПЛ[Iter].ТКБК=Bur;
  ПВИРПЛ[Iter].КБКРПЛ=Раб.Бюджет2005.ВзятьКБКФК(КБК_,ПВИРПЛ[Iter].ТКБК,"БК+КОСГУ");
  Bur=Раб.ИмпортФК.Чит(F); --Код цели
  Bur=Раб.ИмпортФК.Чит(F); --Номер бюджетного обязательства
  Bur=Раб.ИмпортФК.Чит(F); --ОКАТО
  Bur=Раб.ИмпортФК.Чит(F);
  ПВИРПЛ[Iter].СУМ=Раб.ИмпортФК.ВЧисло(Bur); --сумма
  Bur=Раб.ИмпортФК.Чит(F);
  ПВИРПЛ[Iter].НПЛ=Bur;
  Bur=Раб.ИмпортФК.Чит(F); --месяц финансирования
  Bur=Раб.ИмпортФК.Чит(F);
  ПВИРПЛ[Iter].КОМ=Bur;
end;

proc РасшПлат24(F:I;I:I);
  var Bur:S;
  --var Iter:I;
  Bur=Раб.ИмпортФК.Чит(F);
  ВВР[I].КБК = Bur;
end;



Proc РасшПлат33(F:I;I:I);   --расшифровка платежных поручений в таблице 3.3.
var Bur,КБК_:S;
var Iter:I;
  Iter=InsertFrame(ОСДРПЛ,ОСДРПЛ+1);
  ОСДРПЛ[Iter].ГРПЛ=ОСД[I].ГУИД;
  ОСДРПЛ[Iter].НОМДОК=ОСД[I].ДПП01;
  Bur=Раб.ИмпортФК.Чит(F);
  КБК_=Bur;
  Bur=Раб.ИмпортФК.Чит(F);
  ОСДРПЛ[Iter].ТКБК=Bur;
  ОСДРПЛ[Iter].КБКРПЛ=Раб.Бюджет2005.ВзятьКБКФК(КБК_,ОСДРПЛ[Iter].ТКБК,"БК+КОСГУ");
  Bur=Раб.ИмпортФК.Чит(F); --Код цели
  Bur=Раб.ИмпортФК.Чит(F); --Номер бюджетного обязательства
  Bur=Раб.ИмпортФК.Чит(F); --ОКАТО
  Bur=Раб.ИмпортФК.Чит(F);
  ОСДРПЛ[Iter].СУМ=Раб.ИмпортФК.ВЧисло(Bur); --сумма
  Bur=Раб.ИмпортФК.Чит(F);
  ОСДРПЛ[Iter].НПЛ=Bur;
  Bur=Раб.ИмпортФК.Чит(F); --месяц финансирования
  Bur=Раб.ИмпортФК.Чит(F);
  ОСДРПЛ[Iter].КОМ=Bur;
end;

Proc РасшПлат43(F:I;I:I);   --расшифровка платежных поручений в таблице 4.3.
var Bur,КБК_:S;
var Iter:I;
  Iter=InsertFrame(ОДБРПЛ,ОДБРПЛ+1);
  ОДБРПЛ[Iter].ГРПЛ=ОДБ[I].ГУИД;
  ОДБРПЛ[Iter].НОМДОК=ОДБ[I].ДПП01;
  Bur=Раб.ИмпортФК.Чит(F);
  КБК_=Bur;
  Bur=Раб.ИмпортФК.Чит(F);
  ОДБРПЛ[Iter].ТКБК=Bur;
  ОДБРПЛ[Iter].КБКРПЛ=Раб.Бюджет2005.ВзятьКБКФК(КБК_,ОДБРПЛ[Iter].ТКБК,"БК+КОСГУ");
  Bur=Раб.ИмпортФК.Чит(F); --Код цели
  Bur=Раб.ИмпортФК.Чит(F); --Номер бюджетного обязательства
  Bur=Раб.ИмпортФК.Чит(F); --ОКАТО
  Bur=Раб.ИмпортФК.Чит(F);
  ОДБРПЛ[Iter].СУМ=Раб.ИмпортФК.ВЧисло(Bur); --сумма
  Bur=Раб.ИмпортФК.Чит(F);
  ОДБРПЛ[Iter].НПЛ=Bur;
  Bur=Раб.ИмпортФК.Чит(F); --месяц финансирования
  Bur=Раб.ИмпортФК.Чит(F);
  ОДБРПЛ[Iter].КОМ=Bur;
end;

Proc РасшПлат44(F:I;I:I);    --расшифровка платежных поручений в таблице 4.4.
var Bur,КБК_:S;
var Iter:I;
  Iter=InsertFrame(ИДФРПЛ,ИДФРПЛ+1);
  ИДФРПЛ[Iter].ГРПЛ=ИДФ[I].ГУИД;
  ИДФРПЛ[Iter].НОМДОК=ИДФ[I].ДПП01;
  Bur=Раб.ИмпортФК.Чит(F);
  КБК_=Bur;
  Bur=Раб.ИмпортФК.Чит(F);
  ИДФРПЛ[Iter].ТКБК=Bur;
  ИДФРПЛ[Iter].КБКРПЛ=Раб.Бюджет2005.ВзятьКБКФК(КБК_,ИДФРПЛ[Iter].ТКБК,"БК+КОСГУ");
  Bur=Раб.ИмпортФК.Чит(F); --Код цели
  Bur=Раб.ИмпортФК.Чит(F); --Номер бюджетного обязательства
  Bur=Раб.ИмпортФК.Чит(F); --ОКАТО
  Bur=Раб.ИмпортФК.Чит(F); --сумма
  ИДФРПЛ[Iter].СУМ=Раб.ИмпортФК.ВЧисло(Bur);
  Bur=Раб.ИмпортФК.Чит(F);
  ИДФРПЛ[Iter].НПЛ=Bur;
  Bur=Раб.ИмпортФК.Чит(F); --месяц финансирования
  Bur=Раб.ИмпортФК.Чит(F);
  ИДФРПЛ[Iter].КОМ=Bur;
end;

Proc РасшПлат52(F:I;I:I);    --расшифровка платежных поручений в таблице 5.2.
var Bur,КБК_:S;
var Iter:I;
  Iter=InsertFrame(ОСОРПЛ,ОСОРПЛ+1);
  ОСОРПЛ[Iter].ГРПЛ=ОСО[I].ГУИД;
  ОСОРПЛ[Iter].НОМДОК=ОСО[I].ДПП01;
  Bur=Раб.ИмпортФК.Чит(F);
  КБК_=Bur;
  Bur=Раб.ИмпортФК.Чит(F);
  ОСОРПЛ[Iter].ТКБК=Bur;
  ОСОРПЛ[Iter].КБКРПЛ=Раб.Бюджет2005.ВзятьКБКФК(КБК_,ОСОРПЛ[Iter].ТКБК,"БК+КОСГУ");
  Bur=Раб.ИмпортФК.Чит(F); --Код цели
  Bur=Раб.ИмпортФК.Чит(F); --Номер бюджетного обязательства
  Bur=Раб.ИмпортФК.Чит(F); --ОКАТО
  Bur=Раб.ИмпортФК.Чит(F);
  ОСОРПЛ[Iter].СУМ=Раб.ИмпортФК.ВЧисло(Bur); --сумма
  Bur=Раб.ИмпортФК.Чит(F);
  ОСОРПЛ[Iter].НПЛ=Bur;
  Bur=Раб.ИмпортФК.Чит(F); --месяц финансирования
  Bur=Раб.ИмпортФК.Чит(F);
  ОСОРПЛ[Iter].КОМ=Bur;
end;

Proc Платежка(ИмяСекции:S;F:I);    --чтение файла с доп. информацией после шапки.
var I,n:I;
var Bur:S;
  While not TextFileEndOfFile(F) do
    if ИмяСекции="BDPD":  --это платежка;
  --чтение строки в поисках ГУИДа;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpНОМ=Bur; --номер документа
       Bur=Раб.ИмпортФК.Чит(F);
       tmpДАТ=Раб.ИмпортФК.ВДату(Bur);	--дата документа
       Bur=Раб.ИмпортФК.Чит(F);
       tmpСУМ=Раб.ИмпортФК.ВЧисло(Bur);  --сумма платежа
       Bur=Раб.ИмпортФК.Чит(F); --вид платежа
       tmpВИДПЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F); --поступило в банк плательщика
       Bur=Раб.ИмпортФК.Чит(F); --дата списания со счета плательщика
       Bur=Раб.ИмпортФК.Чит(F); --вид операции
       Bur=Раб.ИмпортФК.Чит(F);
       tmpИННПЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpКПППЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpКОНТ=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpРСЧПЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpБИКПЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpИМБПЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpКСБПЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpИННПО=Bur; --ИНН получателя
       Bur=Раб.ИмпортФК.Чит(F);
       tmpКПППО=Bur; --КПП получателя
       Bur=Раб.ИмпортФК.Чит(F); 
       tmpПОЛУЧ=Bur; --наименование получателя
       Bur=Раб.ИмпортФК.Чит(F); --расчетный счет получателя
       tmpРСЧПОЛ = bur;
       Bur=Раб.ИмпортФК.Чит(F); --БИК банка получателя
       tmpБИКПОЛ = bur;
       Bur=Раб.ИмпортФК.Чит(F); --наименование банка получателя
       tmpИМБПОЛ = bur;
       Bur=Раб.ИмпортФК.Чит(F); --коррсчет банка получателя в РКЦ
       tmpКСБПОЛ = bur;
       Bur=Раб.ИмпортФК.Чит(F); --срок платежа
       Bur=Раб.ИмпортФК.Чит(F); --очередность платежа
       tmpОЧЕРПЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpНАЗПЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F); --статус составителя расчетного документа
       Bur=Раб.ИмпортФК.Чит(F);
       tmpКБК=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpОКТ=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpПОП=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpПНП=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpПНД=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpПДД=Bur;
       Bur=Раб.ИмпортФК.Чит(F);
       tmpТПЛ=Bur;
       Bur=Раб.ИмпортФК.Чит(F); --номер частичного платежа
       Bur=Раб.ИмпортФК.Чит(F); --шифр платежного документа
       Bur=Раб.ИмпортФК.Чит(F); --номер платежного документа
       Bur=Раб.ИмпортФК.Чит(F); --дата платежного документа
       Bur=Раб.ИмпортФК.Чит(F); --сумма остатка платежа
       Bur=Раб.ИмпортФК.Чит(F); --содержание операции
       Bur=Раб.ИмпортФК.Чит(F); --дата выписки
       Bur=Раб.ИмпортФК.Чит(F);
       tmpГУИД=Bur; --ГУИД найден!
       --поиск массива
       for n=1..6 do
	 if n=1:I=SearchInArray(ПВР[].ГУИД,tmpГУИД);
	   |n=2:I=SearchInArray(ПВИ[].ГУИД,tmpГУИД);
	   |n=3:I=SearchInArray(ВВР[].ГУИД,tmpГУИД);
	   |n=4:I=SearchInArray(ВВИ[].ГУИД,tmpГУИД);
	   |n=5:I=SearchInArray(ОДБ[].ГУИД,tmpГУИД);
	   |n=6:I=SearchInArray(ИДФ[].ГУИД,tmpГУИД);
	    fi;
	 if I<>-1: break; fi;
       od;
       --если не нашлось
       if I=-1: Message ("Совпадений не найдено. Убедитесь, что файл относится к нужной выписке."+tmpГУИД,mtError);
	  exit;
       else  --передача данных в нужную строку нужного массива
	  if n=1: ЗаполнитьПВР(F,I);   --2.2
	    |n=2: ЗаполнитьПВИ(F,I);   --для раздела 2.3.
	    |n=3: ЗаполнитьВВР(F,I);   --для раздела 2.4.
	   -- |n=4: ЗаполнитьВВИ(F,I);	 --для раздела 2.5.
	    |n=5: ЗаполнитьОДБ(F,I);   --для раздела 3.3.
	    |n=6: ЗаполнитьИДФ(F,I);   --для раздела 3.4.
	  fi;
       fi;
    |ИмяСекции="BDPDST":  --расшифровка платежного поручения.
	--у меня есть n и i - номер и строка таблицы.
	if n=1: РасшПлат22(F,I);   --заполнить подтаблицу Расшифровка Платежного Поручения для раздела 2.2.
	  |n=2: РасшПлат23(F,I);   --для раздела 2.3.
	  |n=3: РасшПлат24(F,I);   --для раздела 2.3.
				   --2 5
				   --3 3
				   --3 4

--	    |n=3: РасшПлат33(F,I);   --для раздела 3.3.
--	    |n=4: РасшПлат43(F,I);   --для раздела 4.3.
--	    |n=5: РасшПлат44(F,I);   --для раздела 4.4.
--	    |n=6: РасшПлат52(F,I);   --для раздела 5.2.

	fi;
    else Message ("Ошибка чтения. Не найден нужный абзац.",mtError); exit;
    fi;
    if not TextFileEndOfFile(F):
       Bur=TextFileReadLn(F);
       ИмяСекции=Раб.ИмпортФК.Чит(F);
    else
       break;
    fi;
  od;
end;

Proc ЗагрузитьВыписку;
var ИмяСекции,Bur:S;
var F:I;
  F=TextFileOpenRead(FName);
   Try
    While not TextFileEndOfFile(F) do
    ИмяСекции=Раб.ИмпортФК.Чит(F); --по первому слову абзаца определяем, какую таблицу заполнять
      If ИмяСекции="FK": Заголовок(F);
       | ИмяСекции="FROM": Получатель(F);
       | ИмяСекции="TO": Отправитель(F);
       | ИмяСекции="VP": ОбщИнфаВп(F);
       | ИмяСекции="VT": ОбщИнфаВпАдм(F);
       | ИмяСекции="VPOB": Раздел121(F);
       | ИмяСекции="VPOBCR": Раздел122(F);

       | ИмяСекции="VPOFV": Раздел123(F);
       | ИмяСекции="VPOBD": Раздел131(F);

       | ИмяСекции="VPLOBV": Раздел132(F);
       | ИмяСекции="VPKP": Раздел22(F);

       | ИмяСекции="VPKPV": Раздел23(F);
       | ИмяСекции="VPKPVT": Раздел23И(F);
       | ИмяСекции="VPPP": Раздел24(F);
       | ИмяСекции="VPPPV": Раздел25(F);

       | ИмяСекции="VPPPVT": Раздел25И(F);
       | ИмяСекции="VPPOB": Раздел26(F);
       | ИмяСекции="VPPOBVT": F=F;

       | ИмяСекции="VPAR": Раздел42(F);
       | ИмяСекции="VPARO": Раздел43(F);
       | ИмяСекции="VPDOP": Раздел44(F);

       | ИмяСекции="VPSM":
       | ИмяСекции="VPSMOP": F=F;

      else Message ("Ошибка чтения. Не найден обработчики секции " + ИмяСекции,mtError); exit;
      fi;
    Bur=TextFileReadLn(F);
    od;
   Finally
    TextFileClose(F);
   end;
end;

Proc ЗагрузитьПлатежки;
var ИмяСекции,Bur:S;
var F:I;
  F=TextFileOpenRead(FName1);
   Try
     While not TextFileEndOfFile(F) do
       ИмяСекции=Раб.ИмпортФК.Чит(F); --по первому слову абзаца определяем, какую таблицу заполнять
       If ИмяСекции="FK": Заголовок(F);
	| ИмяСекции="FROM": Получатель(F);
	| ИмяСекции="TO": Отправитель(F);
	| ИмяСекции="BD": ОбщаяИнфаПл(F);
	else Платежка(ИмяСекции,F);
       fi;
       if not TextFileEndOfFile(F):
	 Bur=TextFileReadLn(F);
       else
	 break;
       fi;
     od;
   Finally
    TextFileClose(F);
   end;
end;

-----------------------------------------------------
-- КОНЕЦ --------------------------------------------
--  Функции разбора файла ---------------------------
-----------------------------------------------------




























---------------------------------------------------------------------
--  Функции подбора/проверки при импорте ----------------------------
---НАЧАЛО------------------------------------------------------------
---------------------------------------------------------------------


Func ПоискКонтр(ИмяС:S;I:I;ДОК:S;U:I):Record;  --определить 2 случая: тихий поиск без вопросов и создания нового; вопросы по ненайденным и создание нового.
var OWA, n, nr, iTmp: I;
var КПП, ИНН, КОНТ, НАЗПЛ, F, tmp: S;
var Rec: Record;
Rec=GetvariableR(ИмяС+"["+Str(i)+"].РЕКВ");
КОНТ=GetVariableS(ИмяС+"["+Str(i)+"].КОНТ");
ИНН=GetVariableS(ИмяС+"["+Str(i)+"].ИННПЛ");
КПП=GetVariableS(ИмяС+"["+Str(i)+"].КПППЛ");
НАЗПЛ=GetVariableS(ИмяС+"["+Str(i)+"].НАЗПЛ");
F = "ИНН = '" + ИНН + "' AND КПП='"+КПП+"'";
OWA=OpenWorkArea("Контрагент", "", F);
Try
  if Rec=nil:
     nr=Records(OWA);
     if nr=1:
	Rec=GetRecordKey(OWA, 1);
       |nr>1:
	F=F+" AND ПОЛНИМЯ='"+КОНТ+"'";
	SetFilter(OWA, F);
	nr=Records(OWA);
	Rec=nil;
	if nr=1:
	   Rec=GetRecordKey(OWA, 1);
	  |nr=0:F = "ИНН = '" + ИНН + "' AND КПП='"+КПП+"'";
	fi;
       |True:
	Rec=nil;
     fi;
  fi;
 ---
  if U=2:
     if Rec=nil:
	iTmp=Enquiry("","Выберите контрагента для платежного поручения "+ДОК+". Назначение платежа: "+НАЗПЛ, "Ок;Отмена",mtConfirmation);
	If iTmp=2:
	   Отмена=True;
	   ^nil;
	fi;
	Rec = OpenCardFile("Контрагент", F, nil, crdRecordOnly);
     fi;
     BeginChanging(OWA);  --если контрагент таки не найден, заводим нового. А если найден - сверяем поля.
     Try
       if Rec=nil:
	  n=InsertRecord(OWA);
	  n=PutFieldS(OWA, n, "ПРИЗНАК", Раб.Предм.PtrStr(GetRecordKey(OWA, n), 5));
	  n=PutFieldS(OWA, 1, "КорИмя", КОНТ);
	  n=PutFieldS(OWA, 1, "ПолнИмя", КОНТ);
	  Rec=GetRecordKey(OWA, n);
       fi;
       --
       tmp=GetFieldS(OWA, 1, "ИНН");
       if tmp="":
	  n=PutFieldS(OWA, 1, "ИНН", ИНН);
	 |not tmp=ИНН:
	  iTmp=Enquiry("Внимание!", "ИНН контрагента по базе данных (" + tmp + ") отличается от импортируемых данных (" + ИНН + ")",  "Использовать данные из базы;Обновить данные в базе", mtConfirmation);
	  if iTmp=2:
	     n=PutFieldS(OWA, 1, "ИНН", ИНН);
	  fi;
       fi;
       --
       tmp=GetFieldS(OWA, 1, "КПП");
       if tmp="":
	  n=PutFieldS(OWA, 1, "КПП", КПП);
	 |not tmp=КПП:
	  iTmp=Enquiry("Внимание!", "КПП контрагента по базе данных (" + tmp + ") отличается от импортируемых данных (" + КПП + ")",  "Использовать данные из базы;Обновить данные в базе", mtConfirmation);
	  if iTmp=2:
	    n=PutFieldS(OWA, 1, "КПП", КПП);
	  fi;
       fi;
       --
       EndChanging(OWA);
     Except
       CancelChanging(OWA);
       if not RecordExists("Контрагент", Rec):
	  Rec = nil;
       fi;
     End;
  fi;
Finally
  CloseWorkArea(OWA);
End;
Return Rec;
end;

Func ПоискБанка(ИмяС:S;I:I;ДОК:S;U:I):Record;	--определить 2 случая: тихий поиск без вопросов и создания нового; вопросы по ненайденным и создание нового.
var OWA, OWAb, n, nr, nn, iTmp: I;
var БИК, РСЧ, КОНТ, НАЗПЛ, F, Банк, Город,КСчет: S;
var Rec, РЕКВ, tmp: Record;
Rec=GetvariableR(ИмяС+"["+Str(i)+"].БАНК");
БИК=GetvariableS(ИмяС+"["+Str(i)+"].БИКПЛ");
РСЧ=GetvariableS(ИмяС+"["+Str(i)+"].РСЧПЛ");
РЕКВ=GetvariableR(ИмяС+"["+Str(i)+"].РЕКВ");
КОНТ=GetvariableS(ИмяС+"["+Str(i)+"].КОНТ");
НАЗПЛ=GetvariableS(ИмяС+"["+Str(i)+"].НАЗПЛ");
if not РЕКВ=nil:
--   Rec=Раб.Бюджет2005.БанкСчет(Рекв,False);	     --а может так?
--   If rec=nil:
   F="КОНТРАГЕНТ="+Recordtostring(РЕКВ)+" AND БИК='"+БИК+"' AND РСЧЕТ='"+РСЧ+"'";
   OWA=OpenWorkArea("Банк_Счета", "", F);
   Try
     if Rec=nil:
	nr=Records(OWA);
	if nr=1: Rec=GetRecordKey(OWA, 1);
	  |nr>1:
	   F=F+" AND БАНКИМЯ='"+КОНТ+"'";
	   SetFilter(OWA, F);
	   nr=Records(OWA);
	   Rec=nil;
	   if nr=1: Rec=GetRecordKey(OWA, 1); fi;
	  |True: Rec=nil;
	fi;
     fi;
     --
     if U=2:
	if Rec=nil:
	   F="КОНТРАГЕНТ="+Recordtostring(РЕКВ)+" AND БИК='"+БИК+"' AND РСЧЕТ='"+РСЧ+"'";
	   iTmp=Enquiry("","Выберите банковский счет плательщика для платежного поручения "+ДОК+". Назначение платежа: "+НАЗПЛ, "Ок;Отмена",mtConfirmation);
	   If iTmp=2:
	      Отмена=True;
	      ^nil;
	   fi;
	   tmp=OpenCardFile("Банк_Счета",F,КонтрБанк);
	   Rec=tmp;
	fi;
	if Rec=nil:
	   BeginChanging(OWA);
	   Try
	     n=InsertRecord(OWA);
	     Rec=GetRecordKey(OWA, n);
	     n=PutFieldR(OWA, n, "КОНТРАГЕНТ", РЕКВ);
	     n=PutFieldS(OWA, n, "БАНКИМЯ", КОНТ);
	     n=PutFieldS(OWA, n, "БИК", БИК);
	     n=PutFieldI(OWA, n, "РПО_ТипСчета", 1);

	     --после чего из справочника выгружаем некоторую информацию.
	     OWAb=OpenWorkArea("РПО_BNKSEEK", "NEWNUM");
	     Try
	       nn=Search(OWAb, 1, БИК);
	       if not nn=0:
		  Банк=GetFieldS(OWAb, nn,"NAMEP");
		  n=PutFieldS(OWA, n, "БАНК", Банк);
		--  v1=Раб.Вспом.Справ_БИК.КодВТекст("TNP",GetCardFieldS("РПО_BNKSEEK",Rec,"TNP")); ????
		  Город=GetFieldS(OWAb, nn, "NNP");
		  n=PutFieldS(OWA, n, "ГОРОД", Город);
		  КСчет=GetFieldS(OWAb, nn, "KSNP");
		  n=PutFieldS(OWA, n, "КСЧЕТ", КСчет);
	       fi;
	     Finally
	       CloseWorkArea(OWAb);
	     End;
	     --
	     n=PutFieldS(OWA, n, "РСЧЕТ", РСЧ);
	     EndChanging(OWA);
	   Except
	     CancelChanging(OWA);
	     if not RecordExists("Банк_Счета", Rec):
		Rec = nil;
	     fi;
	   End;
	fi;
     fi;
   Finally
    CloseWorkArea(OWA);
   End;
else Rec=nil;
fi;
Return Rec;
end;

Proc ПроверКонтр(U:I); --к проведению поступивших платежных поручений. Проверяет наличие контрагентов.
var err,n,I:I;
err=0;
Отмена=False;
--
n=ПВР;
for I=1..n do
  ПВР[I].РЕКВ=ПоискКонтр("ПВР",I,ПВР[I].ДОК01,U);
  if ПВР[I].РЕКВ=nil: err=err+1; fi;
  if Отмена=True: exit; fi;
od;
--
n=ПВИ;
for I=1..n do
  ПВИ[I].РЕКВ=ПоискКонтр("ПВИ",I,ПВИ[I].ДОК01,U);
  if ПВИ[I].РЕКВ=nil: err=err+1; fi;
  if Отмена=True: exit; fi;
od;
--
n=ОСД;
for I=1..n do
  if ОСД[I].ПОС01<>0:
     ОСД[I].РЕКВ=ПоискКонтр("ОСД",I,ОСД[I].ДПП01,U);
     if ОСД[I].РЕКВ=nil: err=err+1; fi;
  fi;
  if Отмена=True: exit; fi;
od;
--
n=ОДБ;
for I=1..n do
  if ОДБ[I].ПОС01<>0:
     ОДБ[I].РЕКВ=ПоискКонтр("ОДБ",I,ОДБ[I].ДПП01,U);
     if ОДБ[I].РЕКВ=nil: err=err+1; fi;
  fi;
  if Отмена=True: exit; fi;
od;
--
n=ИДФ;
for I=1..n do
  if ИДФ[I].ПОС01<>0:
     ИДФ[I].РЕКВ=ПоискКонтр("ИДФ",I,ИДФ[I].ДПП01,U);
     if ИДФ[I].РЕКВ=nil: err=err+1; fi;
  fi;
  if Отмена=True: exit; fi;
od;
--
n=ОСО;
for I=1..n do
  if ОСО[I].ПОС01<>0:
     ОСО[I].РЕКВ=ПоискКонтр("ОСО",I,ОСО[I].ДПП01,U);
     if ОСО[I].РЕКВ=nil: err=err+1; fi;
  fi;
  if Отмена=True: exit; fi;
od;

n=ВВР;
for I=1..n do
 -- if ВВР[I].ПОС01<>0:
     ВВР[I].РЕКВ=ПоискКонтр("ВВР",I,ВВР[I].ДПП01,U);
     if ВВР[I].РЕКВ=nil: err=err+1; fi;
--  fi;
  if Отмена=True: exit; fi;
od;
end;

Proc ПроверБанк(U:I); --к проведению поступивших платежных поручений. Проверяет наличие банков.
var n,err,I:I;
--var Rec:Record;
err=0;
Отмена=False;
--
n=ПВР;
for I=1..n do
  ПВР[I].БАНК=ПоискБанка("ПВР",I,ПВР[I].ДОК01,U);
  if ПВР[I].БАНК=nil: err=err+1; fi;
  if Отмена=True: exit; fi;
od;
--
n=ПВИ;
for I=1..n do
  ПВИ[I].БАНК=ПоискБанка("ПВИ",I,ПВИ[I].ДОК01,U);
  if ПВИ[I].БАНК=nil: err=err+1; fi;
  if Отмена=True: exit; fi;
od;
--
n=ОСД;
for I=1..n do
  if ОСД[I].ВПЛ01=0:  --если это поступление
     ОСД[I].БАНК=ПоискБанка("ОСД",I,ОСД[I].ДПП01,U);
     if ОСД[I].БАНК=nil: err=err+1; fi;
  fi; 
  if Отмена=True: exit; fi;
od;
--
n=ОДБ;
for I=1..n do
  if ОДБ[I].ВПЛ01=0:
     ОДБ[I].БАНК=ПоискБанка("ОДБ",I,ОДБ[I].ДПП01,U);
     if ОДБ[I].БАНК=nil: err=err+1; fi;
  fi;
  if Отмена=True: exit; fi;
od;
--
n=ИДФ;
for I=1..n do
  if ИДФ[I].ВПЛ01=0:
     ИДФ[I].БАНК=ПоискБанка("ИДФ",I,ИДФ[I].ДПП01,U);
     if ИДФ[I].БАНК=nil: err=err+1; fi;
  fi;
  if Отмена=True: exit; fi;
od;
--
n=ОСО;
for I=1..n do
  if ОСО[I].ВПЛ01=0:
     ОСО[I].БАНК=ПоискБанка("ОСО",I,ОСО[I].ДПП01,U);
     if ОСО[I].БАНК=nil: err=err+1; fi;
  fi;
  if Отмена=True: exit; fi;
od;
--if err<>0:
--   iTmp=Enquiry("Внимание!", "(" + str(err) + ") платежных поручений не будет проведено, поскольку не найден банк. Продолжить?", "Да;Нет", mtConfirmation);
--else ^2;
--fi;
--^iTmp;
end;

---------------------------------------------------------------------
-- КОНЕЦ ------------------------------------------------------------
--  Функции подбора/проверки при импорте ----------------------------
---------------------------------------------------------------------









---------------------------------------------------------------------
--  Поиск и подтверждение документов --------------------------------
---------------------------------------------------------------------

func НайтиЗаявку(Crd:S;ДПС01:S;ДПС02:D;Сум:N):Record;
var OWA, Nr: Integer;
var rec:Record;
  OWA = OpenWorkArea(Crd,"","Учитывать and НомерДок='"+ДПС01+"' and ДатаДок="+DateToString(ДПС02) + " and Round(Док_Сум,2)="+Str(СУМ,2));
  Rec = nil;
  Try
    Nr=Records(OWA);
    if Nr=1: Rec=GetRecordKey(OWA,1); fi;
  finally
    CloseWorkArea(OWA);
  end;
  ^Rec;
end;

func НайтиЗНал(Crd:S;ДПС01:S;ДПС02:D;Сум:N):Record;
var OWA, Nr: Integer;
var rec:Record;
  OWA = OpenWorkArea(Crd,"","Учитывать and НомерДок='"+ДПС01+"' and ДатаДок="+DateToString(ДПС02) + " and Round(СумДок,2)="+Str(СУМ,2));
  Rec = nil;
  Try
    Nr=Records(OWA);
    if Nr=1: Rec=GetRecordKey(OWA,1); fi;
  finally
    CloseWorkArea(OWA);
  end;
  ^Rec;
end;



Func НайтиДок(БлокВ:S;I:I):S;
--Ищем документ.
-- Возвращает ИмяКартотеки#Ukey
var Crd: String;
var Rec: Record;
  --Быстрая проверка
  Crd = GetvariableS(БлокВ + "[" + Str(I) + "].ДОККАРТ");
  if Crd<>'':
     Rec = IntegerToRecord(GetvariableI(БлокВ + "[" + Str(I) + "].ДОККЛЮЧ"));
  fi;
  if RecordExists(Crd, rec):
    ^Crd + "#" + recordToString(rec);
  fi;

  --Ищем
  if БлокВ = "ВВР":
    --первая гипотеза - ЗКР
    Rec = НайтиЗаявку(ЗКРCrd, ВВР[i].ДПС01, ВВР[i].ДПС02, ВВР[i].Сум01);
    if rec<>nil: ^ЗКРCrd + "#" + recordToString(rec); fi;
    --Вторая гипотеза - ЗВЗ
    Rec = НайтиЗаявку(ЗВЗCrd, ВВР[i].ДПС01, ВВР[i].ДПС02, ВВР[i].Сум01);
    if rec<>nil: ^ЗВЗCrd + "#" + recordToString(rec); fi;
    --Третья гипотеза - Заявка на нал
    Rec = НайтиЗНал(ЗНалCrd, ВВР[i].ДПС01, ВВР[i].ДПС02, ВВР[i].Сум01);
    if rec<>nil: ^ЗНалCrd + "#" + recordToString(rec); fi;
  fi;
  ^""; --ничего не нашли
end;

Func ПодвердитьЗаявку(I:I;ДПС01:S;ДПП01:S;ДПП02:D;Bln:S;Crd:S):I;
var n,OWA,p:I;
var isNet:L;
 isNet=Раб.Бюджет2005.Сетевая;
 ClearTrace(True);
 p=0;
 OWA=OpenWorkArea(Crd,"");
-- ShowProgress(Упр,"Подтверждение заявок....");
 Try
 -- for Iter=1..Упр do
--   ProgressPos(Iter);
   n=GetRecordNumber(OWA,Ukey[I]);
   if n=0: Trace("Заявка с номером "+ДПС01+" не найдена в базе данных");  ^0; fi;
   if GetFieldL(OWA,n,"Проводить"):
      Trace("Позиция="+Str(I)+" Пропущена. Заявка №"+ДПС01+" уже подтверждена");
     else
      OpenBlank(Bln,False,UKey[I]);
      if not ExecuteFuncR(ЗКРBln+".ТекЗапись")=UKey[I]: Trace("Ошибка позиционирования на запись"); ^0; fi;
      PutVariableD(Bln+".ДатаОпер",Дата);
      PutVariableS(Bln+".ДокОперНом",ДПП01);
      PutVariableD(Bln+".ДокОперДат",ДПП02);
      PutVariableL(Bln+".ВБанк",True);
      PutVariableL(Bln+".Проводить",True);
      ExecuteProc(Bln+".cbПроводить_OnChange","");
      if isNet and fЗакрытьДок and GetFieldL(OWA,n,"Проводить"):
	 PutVariableL(Bln+".ClosedModFob",fЗакрытьДок);
	 ExecuteProc(Bln+".cbЗакрытьДок_OnChange","");
      fi;
      Close(Bln);
      if GetFieldL(OWA,n,"Проводить"):
	 p=p+1;  --почему нельзя просто вернуть 1?
	else
	 Trace("Позиция="+Str(I)+". Заявка №"+ДПС01+" ошибка подтверждения");
      fi;
      if isBlankOpen(Bln): Message("Невозможно закрыть открытый бланк заявки ("+Bln+")^MПопробуйте закрыть открытую заявку вручную",mtError); ^0; fi;
   fi;
--  od;
 Finally
  CloseWorkArea(OWA);
--  CloseProgress;
 end;
 ^p;
end;

var УчУслИССПОС:S = "+*.1.304.05.???";
var УчУслИССВПЛ:S = "-*.1.304.05.???";


Proc ОстУч;
var Фильтр:S;
var НачГод:D;
НачГод=Dat(01,01,год(Дата));

IF ИССПУОН1<>0 or ИССПУОК1<>0:	  --поставленные на учет обязательства
   Фильтр="*.1.502.11.*";
   ИССПУОН0=ABS(Saldo(Фильтр,Дата));
   ИССПУОК0=ABS(Saldo(Фильтр,Дата+1));
FI;

IF ИССПОСН1<>0 or ИССПОСК1<>0:
   ИССПОСН0=ABS(turn(УчУслИССПОС,НачГод,Дата));
   ИССПОСК0=ABS(turn(УчУслИССПОС,НачГод,Дата+1));
FI;
IF ИССВПЛН1<>0 or ИССВПЛК1<>0:
   ИССВПЛН0=ABS(turn(УчУслИССВПЛ,НачГод,Дата));
   ИССВПЛК0=ABS(turn(УчУслИССВПЛ,НачГод,Дата+1));
FI;

---
IF ИОДОСТН1<>0 or ИОДОСТК1<>0:
   Фильтр="*.?.201.11.*";
   ИОДОСТН0=ABS(Saldo(Фильтр,Дата));
   ИОДОСТК0=ABS(Saldo(Фильтр,Дата+1));
FI;
IF ИОДОСТН2<>0 or ИОДОСТК2<>0:	      --без права расходования
   Фильтр="*.?.201.11.610/*.2.401.01.180";
   ИОДОСТН3=ABS(turn(Фильтр,НачГод,Дата));
   ИОДОСТК3=ABS(turn(Фильтр,НачГод,Дата+1));
FI;
IF ИОДПУОН1<>0 or ИОДПУОК1<>0:	  --поставленные на учет обязательства
   Фильтр="*.2.502.11.*";
   ИОДПУОН0=ABS(Saldo(Фильтр,Дата));
   ИОДПУОК0=ABS(Saldo(Фильтр,Дата+1));
FI;
IF ИОДПОСН1<>0 or ИОДПОСК1<>0:
   Фильтр="*.?.201.11.510";
   ИОДПОСН0=ABS(Saldo(Фильтр,Дата));
   ИОДПОСК0=ABS(Saldo(Фильтр,Дата+1));
FI;
IF ИОДВПЛН1<>0 or ИОДВПЛК1<>0:
   Фильтр="*.?.201.11.610";
   ИОДВПЛН0=ABS(Saldo(Фильтр,Дата));
   ИОДВПЛК0=ABS(Saldo(Фильтр,Дата+1));
FI;
end;


Func ПодтвТаб(I:I;ДПС01:S;ДПС02:D;СУМ01:N;ДПП01:S;ДПП02:D;Bln:S;Crd:S):I;
var Value:S;
var OWA,nr,p:I;
var Rec: Record;
Value=ДПС01;
OWA=OpenWorkArea(Crd,"","Учитывать and НомерДок='"+Value+"' and ДатаДок="+DateToString(ДПС02));
  Try
   Nr=Records(OWA);
   if Nr=1: Rec=GetRecordKey(OWA,1); fi;
   if Rec<>nil:
      if not GetFieldL(OWA,1,"Проводить"):     --если заявка еще не подтверждена
	 if SearchInArray(UKey,Rec)=-1:   --если не повторный ввод заявки
	    if СУМ01=GetFieldN(OWA,1,"Док_Сум"):
	       Ukey[I]=Rec;
	       if not BlankExist(Bln): Message("Бланк заявки не найден ("+Bln+")",mtError); ^0; fi;
	       if isBlankOpen(Bln): Close(Bln); fi;
	       if isBlankOpen(Bln): Message("Невозможно закрыть открытый бланк заявки ("+Bln+")^MПопробуйте закрыть открытую заявку вручную",mtError); ^0; fi;
	       p=ПодвердитьЗаявку(I,ДПС01,ДПП01,ДПП02,Bln,Crd);
	    fi;
	 fi;
      fi;
   fi;
  Finally
   CloseWorkArea(OWA);
  end;
 ^p;
end;

Func CloseBln(Bln:S):L;
  if not BlankExist(Bln): Message("Бланк заявки не найден ("+Bln+")",mtError); ^false; fi;
  if isBlankOpen(Bln): Close(Bln); fi;
  if isBlankOpen(Bln):
     Message("Невозможно закрыть открытый бланк заявки ("+Bln+")^MПопробуйте закрыть открытую заявку вручную",mtError);
     ^False;
  fi;
  ^True;
end;

func ПодтвердитьДок(ID:S; БлокВ:S; I:I):I;
  var Crd:S;
  var Rec:Record;
  var ДПС01, ДПП01:S;
  var ДПП02:D;
  var OWA, n, p:I;
    Crd = ExtractWord(1, ID, '#');
    Rec = StringToRecord(ExtractWord(2, ID, '#'));
    --Взятие номеров и дат + запись ссылки
    if БлокВ = "ВВР":
       ДПС01 = ВВР[I].ДПС01; ДПП01 = ВВР[I].ДПП01; ДПП02 = ВВР[I].ДПП02;
       ВВР[I].ДОККАРТ = Crd; ВВР[I].ДОККЛЮЧ = RecordToInteger(Rec);
    fi;

    if Crd = ЗКРCrd:
       CloseBln(ЗКРBln);
       Ukey[i] = rec;
       ^ПодвердитьЗаявку(I,ДПС01,ДПП01,ДПП02, ЗКРBln, Crd);
    |Crd = ЗВЗCrd:
       CloseBln(ЗВЗBln);
       Ukey[i] = rec;
       ^ПодвердитьЗаявку(I,ДПС01,ДПП01,ДПП02, ЗВЗBln, Crd);
    |Crd = ЗНалCrd:
     --CloseBln(ЗНалBln);
     p = 0;
     OWA = OpenWorkArea(Crd, "Ukey = "+ExtractWord(2, ID, '#'));
     try
       BeginChanging(OWA);
       try
	 n = GetRecordNumber(OWA, rec);
	 n = PutFieldL(OWA, n, "Проводить", True);
	 n = PutFieldL(OWA, n, "ВБанк", True);
	 n = PutFieldD(OWA, n, "ДатаОпер", Дата);
	 EndChanging(OWA);
	 p = 1;
       except
	 CancelChanging(OWA);
       end;
     finally
       closeWorkArea(OWA);
     end;
     ^p;
    fi;

end;


Func ЗаполнитьПлатежку(ИмяС:S;ДОК01:S;ДОК02:D;I:I;СУМ01:N):I;	--Если поле заполнить не удается, пусть остается пустым, пользователь заполнит.
var OWA,OA,n,nn,m,iTmp,Iter,p,Номер:I;
var tmpR,Rec,Конт:record;
var tmpS,РПО_Призн_К,РПО_Призн_ЛС,ИмяПодС,НАЗПЛ,ТипКБК,Призн,КБК_:S;
var tmpN:N;
Конт=GetVariableR(ИмяС+"["+Str(i)+"].РЕКВ");
НАЗПЛ=GetVariableS(ИмяС+"["+Str(i)+"].НАЗПЛ");
ИмяПодС=ИмяС+"РПЛ";
OWA=OpenWorkArea(ПППCrd,"","НомерБум='"+ДОК01+"' and ДатаДок="+DateToString(ДОК02)+" and СУММА="+Str(СУМ01,2));
   Try
     n=Records(OWA);  --проверка на повторы
     if n<>0:
	Message("Внимание! В базе обнаружено " + str(n) + " платежных поручений под номером "+ДОК01+", сумма и дата проведения которых совпадают с платежным поручением из выписки.");
	Message("Назначение платежа: "+GetVariableS(ИмяС+"["+Str(i)+"].НАЗПЛ"));
	If n=1:
	   iTmp=Enquiry("", "Платежное поручение следует", "Создать новое;Обновить;Пропустить;Отмена", mtConfirmation);
	   if iTmp=3: ^0;
	     |iTmp=2: Rec=GetRecordKey(OWA, 1);
	     |iTmp=4: Отмена=True; ^0;
	   fi;
	  |n>1:
	   iTmp=Enquiry("Вопрос", "Все равно добавить платежное поручение?", "Да;Нет", mtConfirmation);
	   if iTmp=2: ^0; fi;
	fi;
     fi;
     if iTmp=2:
	BeginChanging(OWA);
	Try
	  n=GetRecordNumber(OWA,Rec);
	  n=PutFieldD(OWA, n, "РПО_ДатаОпер", Дата);  --дата выписки
	  n=PutFieldR(OWA, n, "РеквКонтр", Конт);
	  РПО_Призн_К=CardFileRecSign("Контрагент","Признак","К",Конт,"");
	  n=PutFieldS(OWA, n, "РПО_Призн_К", РПО_Призн_К); --аналитический признак плательщика
	  tmpR=getvariableR(ИмяС+"["+Str(i)+"].БАНК");	   --плательщик(контрагент)
	  n=PutFieldR(OWA, n, "КонтрБанк", tmpR);     --банковский счет плательщика
	  n=PutFieldR(OWA, n, "Рекв",РеквНаше); 	     --получатель
	  n=PutFieldR(OWA, n, "РеквБанк",БанкНаше);	     --банковский счет получателя
	  РПО_Призн_ЛС=Раб.Бюджет2005.БанкВПризн(БанкНаше);
	  n=PutFieldS(OWA, n, "РПО_Призн_ЛС",РПО_Призн_ЛС);	 --аналитический признак банковского счета получателя
	  n=PutFieldS(OWA, n, "НазначПлат",НАЗПЛ);   --назначение платежа
	  if not ИмяС="ПВИ": n=PutFieldS(OWA, n, "Валюта","РУБ"); fi;
	  --для 2 раздела - 1, для третьего - 2.
	  if ИмяС="ПВР" or ИмяС="ПВИ":
	     n=PutFieldS(OWA, n, "РПО_ВД","1"); 	   --Наименование вида средств.
	    else
	     n=PutFieldS(OWA, n, "РПО_ВД","2");
	  fi;
   --	    Документы.Банк.Поруч_ВХ.УдалитьПустыеСтроки;
	  OA=OpenArray(OWA,n,"РПО_Расшифр","");
	  Try
	    DeleteAllRecords(OA);
	   -- m=GetVariableI(ИмяПодС); --но так как оно не работает, то
	    if ИмяПодС="ПВРРПЛ": m=ПВРРПЛ;
	      |ИмяПодС="ПВИРПЛ": m=ПВИРПЛ;
	      |ИмяПодС="ОСДРПЛ": m=ОСДРПЛ;
	      |ИмяПодС="ОДБРПЛ": m=ОДБРПЛ;
	      |ИмяПодС="ИДФРПЛ": m=ИДФРПЛ;
	      |ИмяПодС="ОСОРПЛ": m=ОСОРПЛ;
	    fi;
	    --if m<>0 ?
	    for Iter=1..m do
	       if getvariableS(ИмяПодС+"["+Str(Iter)+"].НомДок")=ДОК01:
		  nn=InsertRecord(OA);
		  КБК_=getvariableS(ИмяПодС+"["+Str(Iter)+"].КБКРПЛ");
		  nn=PutFieldS(OA, nn, "КБК", КБК_);
	--	    nn=PutFieldR(OA, nn, "СчДеб", ); --??? Счет дебета
       --	       nn=PutFieldR(OA, nn, "СчКре", );
		  ТипКБК=getvariableS(ИмяПодС+"["+Str(Iter)+"].ТКБК");
		  nn=PutFieldS(OA, nn, "ТипКБК", ТипКБК);
		  tmpN=getvariableN(ИмяПодС+"["+Str(Iter)+"].Сум");
		  nn=PutFieldN(OA, nn, "Сум", tmpN);
		  tmpS=getvariableS(ИмяС+"["+Str(I)+"].СчДеб");
		  if tmpS="":
		     if ИмяС="ПВР" or ИмяС="ПВИ":
			nn=PutFieldS(OA, nn, "СчДеб", Пос2Дб);
		       else
			nn=PutFieldS(OA, nn, "СчДеб", Пос3Дб);
		     fi;
		    else
		     nn=PutFieldS(OA, nn, "СчДеб", tmpS);
		  fi;
		  Призн=GetFieldS(OA,1,"Призн");
		  Призн=ОбновитьПризн(Призн,"",tmpS,КБК_,ТипКБК);
		  nn=PutFieldS(OA,nn,"Призн",Призн);
	       fi;
	    od;
	  Finally
	    CloseWorkArea(OA);
	  end;
   --	дальше кучу всего проверить и заполнить.
   --должна быть проверка НеПустаяТаблица для подтаблице с дебетами и кредитами
	  EndChanging(OWA);
	Except
	  CancelChanging(OWA);
	Raise; --?? а надо ли?
	End;
     else
	BeginChanging(OWA);
	  Try
	    n=InsertRecord(OWA);
	    n=PutFieldS(OWA, n, "НомерБум", ДОК01); --номер документа
	    Номер=Int(ДОК01);
	    If Номер<>0: n=PutFieldI(OWA, n, "Номер", Номер); fi;
	    n=PutFieldD(OWA, n, "ДатаДок", ДОК02);	--дата документа
	    n=PutFieldN(OWA, n, "Сумма",СУМ01);        --сумма документа
	    Rec=GetRecordKey(OWA, n);
	    n=PutFieldD(OWA, n, "РПО_ДатаОпер", Дата);	--дата выписки
	    n=PutFieldR(OWA, n, "РеквКонтр", Конт);
	    РПО_Призн_К=CardFileRecSign("Контрагент","Признак","К",Конт,"");
	    n=PutFieldS(OWA, n, "РПО_Призн_К", РПО_Призн_К); --аналитический признак плательщика
	    tmpR=getvariableR(ИмяС+"["+Str(i)+"].БАНК");     --плательщик(контрагент)
	    n=PutFieldR(OWA, n, "КонтрБанк", tmpR);	--банковский счет плательщика
	    n=PutFieldR(OWA, n, "Рекв",РеквНаше);	       --получатель
	    n=PutFieldR(OWA, n, "РеквБанк",БанкНаше);	       --банковский счет получателя
	    РПО_Призн_ЛС=Раб.Бюджет2005.БанкВПризн(БанкНаше);
	    n=PutFieldS(OWA, n, "РПО_Призн_ЛС",РПО_Призн_ЛС);	   --аналитический признак банковского счета получателя
	    tmpS=getvariableS(ИмяС+"["+Str(i)+"].НАЗПЛ");
	    n=PutFieldS(OWA, n, "НазначПлат",tmpS);   --назначение платежа
	    --для 2 раздела - 1, для третьего - 2.
	    if not ИмяС="ПВИ": n=PutFieldS(OWA, n, "Валюта","РУБ"); fi;
	    if ИмяС="ПВР" or ИмяС="ПВИ":
	     n=PutFieldS(OWA, n, "РПО_ВД","1"); 	   --Наименование вида средств.
	    else
	     n=PutFieldS(OWA, n, "РПО_ВД","2");
	    fi;
     --       Документы.Банк.Поруч_ВХ.УдалитьПустыеСтроки;
	    OA=OpenArray(OWA,n,"РПО_Расшифр","");
	    Try
	      -- m=GetVariableI(ИмяПодС); --но так как оно не работает, то
	       if ИмяПодС="ПВРРПЛ": m=ПВРРПЛ;
		 |ИмяПодС="ПВИРПЛ": m=ПВИРПЛ;
		 |ИмяПодС="ОСДРПЛ": m=ОСДРПЛ;
		 |ИмяПодС="ОДБРПЛ": m=ОДБРПЛ;
		 |ИмяПодС="ИДФРПЛ": m=ИДФРПЛ;
		 |ИмяПодС="ОСОРПЛ": m=ОСОРПЛ;
	       fi;
	       --if m<>0 ?
	       for Iter=1..m do
		  if getvariableS(ИмяПодС+"["+Str(Iter)+"].НомДок")=ДОК01:
		     nn=InsertRecord(OA);
		     КБК_=getvariableS(ИмяПодС+"["+Str(Iter)+"].КБКРПЛ");
		     nn=PutFieldS(OA, nn, "КБК", КБК_);
	   --	       nn=PutFieldR(OA, nn, "СчДеб", ); --??? Счет дебета
	  --		  nn=PutFieldR(OA, nn, "СчКре", );
		     ТипКБК=getvariableS(ИмяПодС+"["+Str(Iter)+"].ТКБК");
		     nn=PutFieldS(OA, nn, "ТипКБК", ТипКБК);
		     tmpN=getvariableN(ИмяПодС+"["+Str(Iter)+"].Сум");
		     nn=PutFieldN(OA, nn, "Сум", tmpN);
		     tmpS=getvariableS(ИмяС+"["+Str(I)+"].СчДеб");
		     if tmpS="":
			if ИмяС="ПВР" or ИмяС="ПВИ":
			   nn=PutFieldS(OA, nn, "СчДеб", Пос2Дб);
			  else
			   nn=PutFieldS(OA, nn, "СчДеб", Пос3Дб);
			fi;
		       else
			nn=PutFieldS(OA, nn, "СчДеб", tmpS);
		     fi;
		     Призн=GetFieldS(OA,1,"Призн");
		     Призн=ОбновитьПризн(Призн,"",tmpS,КБК_,ТипКБК);
		     nn=PutFieldS(OA,nn,"Призн",Призн);
		  fi;
	       od;
	     Finally
	       CloseWorkArea(OA);
	     end;
	  EndChanging(OWA);
	Except
	  CancelChanging(OWA);
	Raise; --?? а надо ли?
	End;
     fi;
   Finally
     CloseWorkArea(OWA);
   end;
if Rec=nil: 
   p=0;
else 
   p=1;
   PutVariableR(ИмяС+"["+Str(I)+"].ПЛАТЕЖКА",Rec);
fi;
^p;
end;

---------------------------------------------------------------------
-- КОНЕЦ ------------------------------------------------------------
--  Поиск и подтверждение документов --------------------------------
---------------------------------------------------------------------





















------------------------------------------------------------------------------
--   Загрузка напрямую в документы -------------------------------------------
------------------------------------------------------------------------------


Proc ОбновитьПлатежку(ИмяС:S;ДОК01:S;ДОК02:D;I:I);
var OWA,n:I;
var РПО_Призн_К:S;
var Конт,Банк:record;
var Rec:record;
Rec=GetvariableR(ИмяС+"["+Str(I)+"].ПЛАТЕЖКА");
Конт=GetVariableR(ИмяС+"["+Str(I)+"].РЕКВ");
Банк=GetVariableR(ИмяС+"["+Str(I)+"].Банк");
OWA=OpenWorkArea(ПППCrd,"","Ukey="+recordToString(Rec));
  Try
    BeginChanging(OWA);
     Try
       n=GetRecordNumber(OWA,Rec);
       n=PutFieldR(OWA, n, "РеквКонтр", Конт);
       РПО_Призн_К=CardFileRecSign("Контрагент","Признак","К",Конт,"");
       n=PutFieldS(OWA, n, "РПО_Призн_К", РПО_Призн_К); --аналитический признак плательщика
       n=PutFieldR(OWA, n, "КонтрБанк", Банк);	   --банковский счет плательщика
      EndChanging(OWA);
    Except
      CancelChanging(OWA);
    Raise;
    End;
  Finally
    CloseWorkArea(OWA);
  end;
end;

Func ЗагрРаздел(N:I;ИмяС:S):I;
var I,p,pp:I;
var Док01:S;
var Док02:D;
var Сум:N;
pp=0;
  for I=1..n do
      if ИмяС="ПВР" or ИмяС="ПВИ":
	 if fУчитывать=true and GetVariableR(ИмяС+"["+Str(I)+"].РЕКВ")=nil and GetVariableR(ИмяС+"["+Str(I)+"].Банк")=nil:
	    ^0;
	   else
	    Док01=GetVariableS(ИмяС+"["+Str(I)+"].ДОК01");
	    Док02=GetVariableD(ИмяС+"["+Str(I)+"].ДОК02");
	    Сум=GetVariableN(ИмяС+"["+Str(I)+"].СУМ01");
	    p=ЗаполнитьПлатежку(ИмяС,ДОК01,ДОК02,I,СУМ);
	    pp=pp+p;
	 fi;
	else
	 if fУчитывать=true and GetVariableR(ИмяС+"["+Str(I)+"].РЕКВ")=nil and GetVariableR(ИмяС+"["+Str(I)+"].Банк")=nil:
	    ^0;
	   else
	    if GetVariableN(ИмяС+"["+Str(I)+"].ПОС01")<>0:
	       Док01=GetVariableS(ИмяС+"["+Str(I)+"].ДПП01");
	       Док02=GetVariableD(ИмяС+"["+Str(I)+"].ДПП02");
	       Сум=GetVariableN(ИмяС+"["+Str(I)+"].ПОС01");
	       p=ЗаполнитьПлатежку(ИмяС,ДОК01,ДОК02,I,СУМ);
	       pp=pp+p;
	    fi;
	 fi;
      fi;
      if Отмена=True: ^0; fi;
  od;
^pp;
end;

Proc ЗагрПоступ;
var p,pp:I;
p=0;
pp=0;
Отмена=False;
if ВЫПИСКА=true and ДОПИНФА=true:     --в принципе проверка дублируется.
   ПроверСчет;
   --проверка заполненности полей счетов кредита и дебета. Если не заполнено, выводить поле для выбора. Причем, желательно сделать так, чтобы поля для пустых таблиц
   -- он не требовал заполнять.
   --как это сделать? Если управляющие переменные всего второго раздела пусты - не нужно.
   p=ЗагрРаздел(ПВР,"ПВР");
   pp=pp+p;
   if Отмена=True: exit; fi;

   p=ЗагрРаздел(ПВИ,"ПВИ");
   pp=pp+p;
   if Отмена=True: exit; fi;

   p=ЗагрРаздел(ОСД,"ОСД");
   pp=pp+p;
   if Отмена=True: exit; fi;

   p=ЗагрРаздел(ОДБ,"ОДБ");
   pp=pp+p;
   if Отмена=True: exit; fi;

   p=ЗагрРаздел(ИДФ,"ИДФ");
   pp=pp+p;
   if Отмена=True: exit; fi;

   p=ЗагрРаздел(ОСО,"ОСО");
   pp=pp+p;
   if Отмена=True: exit; fi;

--   n=ПВР;
--   for I=1..n do
--     ИмяС="ПВР";
--     if ПВР[I].БАНК<>nil and ПВР[I].РЕКВ<>nil:
--	  p=ЗаполнитьПлатежку(ИмяС,ПВР[I].ДОК01,ПВР[I].ДОК02,I,ПВР[I].СУМ01);
--	  pp=pp+p;
--     fi;
--   od;
--   --
--   n=ПВИ;
--   for I=1..n do
--     ИмяС="ПВИ";
--     if ПВИ[I].БАНК<>nil and ПВИ[I].РЕКВ<>nil:
--	  p=ЗаполнитьПлатежку(ИмяС,ПВИ[I].ДОК01,ПВИ[I].ДОК02,I,ПВИ[I].СУМ01);
--	  pp=pp+p;
--     fi;
--     if Отмена=True: exit; fi;
--   od;
--   --
--   n=ОСД;
--   for I=1..n do
--     ИмяС="ОСД";
--     if ОСД[I].БАНК<>nil and ОСД[I].РЕКВ<>nil and ОСД[I].ПОС01<>0:
--	  p=ЗаполнитьПлатежку(ИмяС,ОСД[I].ДПП01,ОСД[I].ДПП02,I,ОСД[I].ПОС01);
--	  pp=pp+p;
--     fi;
--     if Отмена=True: exit; fi;
--   od;
--   --
--   n=ОДБ;
--   for I=1..n do
--     ИмяС="ОДБ";
--     if ОДБ[I].БАНК<>nil and ОДБ[I].РЕКВ<>nil and ОДБ[I].ПОС01<>0:
--	  p=ЗаполнитьПлатежку(ИмяС,ОДБ[I].ДПП01,ОДБ[I].ДПП02,I,ОДБ[I].ПОС01);
--	  pp=pp+p;
--     fi;
--     if Отмена=True: exit; fi;
--   od;
--   --
--   n=ИДФ;
--   for I=1..n do
--     ИмяС="ИДФ";
--     if ИДФ[I].БАНК<>nil and ИДФ[I].РЕКВ<>nil and ИДФ[I].ПОС01<>0:
--	  p=ЗаполнитьПлатежку(ИмяС,ИДФ[I].ДПП01,ИДФ[I].ДПП02,I,ИДФ[I].ПОС01);
--	  pp=pp+p;
--     fi;
--     if Отмена=True: exit; fi;
--   od;
--   --
--   n=ОСО;
--   for I=1..n do
--     ИмяС="ОСО";
--     if ОСО[I].БАНК<>nil and ОСО[I].РЕКВ<>nil and ОСО[I].ПОС01<>0:
--	  p=ЗаполнитьПлатежку(ИмяС,ОСО[I].ДПП01,ОСО[I].ДПП02,I,ОСО[I].ПОС01);
--	  pp=pp+p;
--     fi;
--     if Отмена=True: exit; fi;
--   od;
   --
   Message(str(pp) + " платежных поручений успешно заполнено.");
   --после чего нужно вывести для проверки заполненные платежки, а не заполненные - для заполнения.
   --
else
   Message("Операция не возможна. Загрузите "+if(ВЫПИСКА=true and ДОПИНФА=false:"файл с доп. информацией"|ВЫПИСКА=false and ДОПИНФА=false:"файлы с выпиской и доп. информацией."));
fi;
end;



------------------------------------------------------------------------------
-- КОНЕЦ ---------------------------------------------------------------------
--   Загрузка напрямую в документы -------------------------------------------
------------------------------------------------------------------------------






Proc ОбновСтат(БлокВ:S; I:I);
var n, n1, nn:I;
var ID, Crd, Fld:S;
var Rec:Record;
  if БлокВ="ВВР" or БлокВ="":
     if I=0: n1 = 1; nn = ВВР;
     else n1 = I; nn = I; fi;
     for n = n1 .. nn do
       Hint("Расчет статуса ВВР " + Str(n));
       ID = НайтиДок("ВВР", n);
       if ID = "": ВВРСтат[n] = 0;
       else
	 Crd = ExtractWord(1, ID, '#');
	 Rec = StringToRecord(ExtractWord(2, ID, '#'));
	 Fld = "Проводить";
	 if RecordExists(Crd, rec):
	    if GetCardFieldL(Crd, Rec, Fld):
	       ВВРСтат[n] = 1;
	      else
	       ВВРСтат[n] = 2;
	    fi;
	   else
	    ВВРСтат[n] = 0;
	 fi;
       fi;

     od;
  fi;
end;







Proc btnПодЗаяв_OnClick(Sender: String);    --выгрузка информации в заявки. Касается только наших платежей.
var pp,p,n,I:I;
var ID: String;
if ВЫПИСКА=False: exit; fi;
  pp=0;
  --2.4. Выплаты в валюте Российской Федерации
  for I = 1 .. ВВР do
    ID = НайтиДок("ВВР", I);
    if ID<>"":
      pp = pp + ПодтвердитьДок(ID, "ВВР", I);
    fi;
  od;

--
n=ВВИ;
for I=1..n do
  p=ПодтвТаб(I,ВВИ[I].ДПС01,ВВИ[I].ДПС02,ВВИ[I].СУМ01,ВВИ[I].ДПП01,ВВИ[I].ДПП02,ЗКРBln,ЗКРCrd);
  if p=-1:
     p=ПодтвТаб(I,ВВР[I].ДПС01,ВВР[I].ДПС02,ВВР[I].СУМ01,ВВР[I].ДПП01,ВВР[I].ДПП02,ЗВЗBln,ЗВЗCrd);
  fi;
  pp=pp+p;
od;
--
n=ОСД;
for I=1..n do
  if ОСД[I].ПОС01=0 then  --если это наши выплаты
     p=ПодтвТаб(I,ОСД[I].ДПС01,ОСД[I].ДПС02,ОСД[I].ВПЛ01,ОСД[I].ДПП01,ОСД[I].ДПП02,ЗКРBln,ЗКРCrd);
     if p=-1:
	p=ПодтвТаб(I,ВВР[I].ДПС01,ВВР[I].ДПС02,ВВР[I].СУМ01,ВВР[I].ДПП01,ВВР[I].ДПП02,ЗВЗBln,ЗВЗCrd);
     fi;
     pp=pp+p;
  fi;
od;
--
n=ОДБ;
for I=1..n do
  if ОДБ[I].ПОС01=0 then  --если это наши выплаты
     p=ПодтвТаб(I,ОДБ[I].ДПС01,ОДБ[I].ДПС02,ОДБ[I].ВПЛ01,ОДБ[I].ДПП01,ОДБ[I].ДПП02,ЗКРBln,ЗКРCrd);
     if p=-1:
	p=ПодтвТаб(I,ВВР[I].ДПС01,ВВР[I].ДПС02,ВВР[I].СУМ01,ВВР[I].ДПП01,ВВР[I].ДПП02,ЗВЗBln,ЗВЗCrd);
     fi;
     pp=pp+p;
  fi;
od;
--
n=ИДФ;
for I=1..n do
  if ИДФ[I].ПОС01=0 then  --если это наши выплаты
     p=ПодтвТаб(I,ИДФ[I].ДПС01,ИДФ[I].ДПС02,ИДФ[I].ВПЛ01,ИДФ[I].ДПП01,ИДФ[I].ДПП02,ЗКРBln,ЗКРCrd);
     if p=-1:
	p=ПодтвТаб(I,ВВР[I].ДПС01,ВВР[I].ДПС02,ВВР[I].СУМ01,ВВР[I].ДПП01,ВВР[I].ДПП02,ЗВЗBln,ЗВЗCrd);
     fi;
     pp=pp+p;
  fi;
od;
--
if not pp<0:
   Message("Успешно подтверждено "+Str(pp)+" из "+Str(ВВР+ВВИ+ОСД+ОДБ+ИДФ)+" заявок");
 --сделать передачу информации о непроведенных платежках в бланк отчета
fi;

  ОбновСтат("", 0);
  ОстУч;

end;

Proc Button1_OnClick(Sender: String);
ПроверКонтр(2);
end;


Proc Button2_OnClick(Sender: String);
ПроверБанк(2);
end;


Proc btnНастройка_OnClick(Sender: String);
  ОткрытьНастр;
end;


Proc Закрытьнастройку_OnClick(Row: Integer; Col: Integer; Double: Logical);
  ЗакрытьНастр;
end;

--маски счетов
--Выплаты раздел 2
--Дебет 	    Кредит
--1.206.хх.560	    1.304.05.ххх
--1.208.хх.560
--1.210.03.560
--1.302.хх.830
--1.303.хх.830
--1.304.03.830
--1.304.04.ххх
--1.210.02.ххх

--Выплаты р.3
--Дебет 	    Кредит
--2.206.хх.560	    201.11.610
--2.208.хх.560
--2.210.03.560
--2.302.хх.830
--2.303.хх.830
--2.304.03.830
--2.304.04.ххх
--2.210.02.ххх

--Поступления р.2
--Дебет 	    Кредит
--1.304.05.ххх	    1.206.хх.660
--		    1.208.хх.660
--		    1.210.03.660
--		    1.302.хх.730
--		    1.303.хх.730
--		    1.304.03.730
--		    1.304.04.ххх
--		    1.210.02.ххх
--Поступления р.3
--Дебет 	    Кредит
--2.201.11.510	    2.206.хх.660
--		    2.208.хх.660
--		    2.210.03.660
--		    2.302.хх.730
--		    2.303.хх.730
--		    2.209.хх.660
--		    2.304.04.ххх
--		    2.205.хх.660
--		    2.401.01.1хх

Func ПоискБанкаВВР(ИмяС:S;I:I;ДОК:S;U:I):Record;  --определить 2 случая: тихий поиск без вопросов и создания нового; вопросы по ненайденным и создание нового.
var OWA, OWAb, n, nr, nn, iTmp: I;
var БИК, РСЧ, КОНТ, НАЗПЛ, F, Банк, Город,КСчет: S;
var Rec, РЕКВ, tmp: Record;
Rec=GetvariableR(ИмяС+"["+Str(i)+"].БАНК");
БИК=GetvariableS(ИмяС+"["+Str(i)+"].БИКПОЛ");
РСЧ=GetvariableS(ИмяС+"["+Str(i)+"].РСЧПОЛ");
РЕКВ=GetvariableR(ИмяС+"["+Str(i)+"].РЕКВ");
КОНТ=GetvariableS(ИмяС+"["+Str(i)+"].КОНТ");
НАЗПЛ=GetvariableS(ИмяС+"["+Str(i)+"].НАЗПЛ");
if not РЕКВ=nil:
--   Rec=Раб.Бюджет2005.БанкСчет(Рекв,False);	     --а может так?
--   If rec=nil:
   F="КОНТРАГЕНТ="+Recordtostring(РЕКВ)+" AND БИК='"+БИК+"' AND РСЧЕТ='"+РСЧ+"'";
   OWA=OpenWorkArea("Банк_Счета", "", F);
   Try
     if Rec=nil:
	nr=Records(OWA);
	if nr=1: Rec=GetRecordKey(OWA, 1);
	  |nr>1:
	   F=F+" AND БАНКИМЯ='"+КОНТ+"'";
	   SetFilter(OWA, F);
	   nr=Records(OWA);
	   Rec=nil;
	   if nr=1: Rec=GetRecordKey(OWA, 1); fi;
	  |True: Rec=nil;
	fi;
     fi;
     --
     if U=2:
	if Rec=nil:
	   F="КОНТРАГЕНТ="+Recordtostring(РЕКВ)+" AND БИК='"+БИК+"' AND РСЧЕТ='"+РСЧ+"'";
	   iTmp=Enquiry("","Выберите банковский счет плательщика для платежного поручения "+ДОК+". Назначение платежа: "+НАЗПЛ, "Ок;Отмена",mtConfirmation);
	   If iTmp=2:
	      Отмена=True;
	      ^nil;
	   fi;
	   tmp=OpenCardFile("Банк_Счета",F,КонтрБанк);
	   Rec=tmp;
	fi;
	if Rec=nil:
	   BeginChanging(OWA);
	   Try
	     n=InsertRecord(OWA);
	     Rec=GetRecordKey(OWA, n);
	     n=PutFieldR(OWA, n, "КОНТРАГЕНТ", РЕКВ);
	     n=PutFieldS(OWA, n, "БАНКИМЯ", КОНТ);
	     n=PutFieldS(OWA, n, "БИК", БИК);
	     n=PutFieldI(OWA, n, "РПО_ТипСчета", 1);

	     --после чего из справочника выгружаем некоторую информацию.
	     OWAb=OpenWorkArea("РПО_BNKSEEK", "NEWNUM");
	     Try
	       nn=Search(OWAb, 1, БИК);
	       if not nn=0:
		  Банк=GetFieldS(OWAb, nn,"NAMEP");
		  n=PutFieldS(OWA, n, "БАНК", Банк);
	      --  v1=Раб.Вспом.Справ_БИК.КодВТекст("TNP",GetCardFieldS("РПО_BNKSEEK",Rec,"TNP")); ????
		  Город=GetFieldS(OWAb, nn, "NNP");
		  n=PutFieldS(OWA, n, "ГОРОД", Город);
		  КСчет=GetFieldS(OWAb, nn, "KSNP");
		  n=PutFieldS(OWA, n, "КСЧЕТ", КСчет);
	       fi;
	     Finally
	       CloseWorkArea(OWAb);
	     End;
	     --
	     n=PutFieldS(OWA, n, "РСЧЕТ", РСЧ);
	     EndChanging(OWA);
	   Except
	     CancelChanging(OWA);
	     if not RecordExists("Банк_Счета", Rec):
		Rec = nil;
	     fi;
	   End;
	fi;
     fi;
   Finally
    CloseWorkArea(OWA);
   End;
else Rec=nil;
fi;
Return Rec;
end;


proc ПроверитьБанкиВВР;
var n,err,I:I;
err=0;
Отмена=False;
n=ВВР;
for I=1..n do
 -- if ВВР[I].ВПЛ01=0:
     ВВР[I].БАНК=ПоискБанкаВВР ("ВВР",I,ВВР[I].ДПП01,2);
     if ВВР[I].БАНК=nil: err=err+1; fi;
--  fi;
  if Отмена=True: exit; fi;
od;
end;


proc создатьПлатежку(ИмяС:S;i:I);
  var w: integer;
  var ww: integer;
  var n: integer;
  var ss:integer;
  var sch: string;

ПроверКонтр(2);
if ИмяС = "ВВР": ПроверитьБанкиВВР;  fi;

 w = openworkarea("Поруч","");
 try
-- k = ВВР;
 --  for i=1..k do
    beginchanging(w);
     try
     n = InsertRecord(w);
     n = PutFieldS(w,n,"НомерБум",ВВР[i].ДПП01);
     n = PutFieldD(w,n,"Дата",ВВР[i].ДПП02);
     n = PutFieldD(w,n,"ДатОпер",Дата);
     n = PutFieldR(w,n,"РЕКВ",РеквНаше);
     n = PutFieldR(w,n,"БАНК",БанкНаше);
     n = PutFieldR(w,n,"РЕКВП",ВВР[i].РЕКВ);
     n = PutFieldR(w,n,"БАНКП",ВВР[i].БАНК);
     n = PutFieldN(w,n,"СУММА",ВВР[i].СУМ01);
     n = PutFieldS(w,n,"Т",ВВР[i].НАЗПЛ);

    ww = openarray(w,n,"РПО_СТРОКИ_БК","","");
      ss = InsertRecord(ww);
      ss = PutFieldN(ww,ss,"Сум",ВВР[i].Сум01);
      ss = PutFieldS(ww,ss,"КодГлавы",substr(ВВР[i].КБК,1,3));
      ss = PutFieldS(ww,ss,"КодПРД",substr(ВВР[i].КБК,4,4));
      ss = PutFieldS(ww,ss,"КодЦСТ",substr(ВВР[i].КБК,8,7));
      ss = PutFieldS(ww,ss,"КодВР",substr(ВВР[i].КБК,15,3));
      ss = PutFieldS(ww,ss,"КодЭК",substr(ВВР[i].КБК,18,3));
      ss = PutFieldI(ww,ss,"КИФ",1);
    CloseWorkArea(ww);

      ww = openarray(w,n,"РПО_Позиции","","");
      ss = InsertRecord(ww);
      ss = PutFieldN(ww,ss,"Сум",ВВР[i].Сум01);
      sch = substr(ВВР[i].КБК,1,3)+"."+substr(ВВР[i].КБК,4,4)+"."+substr(ВВР[i].КБК,8,7)+"."+substr(ВВР[i].КБК,15,3)+".1.304.05."+substr(ВВР[i].КБК,18,3);
      ss = PutFieldS(ww,ss,"СЧКРЕ",sch);
--    sch = substr(sch,1,20)+Раб.Бюджет2005.Соотв_КОСГУ_Ан("",substr(ВВР[i].КБК,18,3))+".830";
      sch = substr(ВВР[i].КБК,1,3)+"."+substr(ВВР[i].КБК,4,4)+"."+substr(ВВР[i].КБК,8,7)+"."+substr(ВВР[i].КБК,15,3)+".1.302."+Раб.Бюджет2005.Соотв_КОСГУ_Ан("",substr(ВВР[i].КБК,18,3))+".830";
      ss = PutFieldS(ww,ss,"СЧДЕБ",sch);
      sch = "КОСГУ."+substr(ВВР[i].КБК,18,3);
      sch = Раб.Бюджет2005.Объединить(sch,РАБ.Бюджет2005.БанкВПризн(БанкНаше),' ');
      sch = Раб.Бюджет2005.Объединить(sch,CardFileRecSign("Контрагент","Признак","К",ВВР[i].РЕКВ,""),' ');
      ss = PutFieldS(ww,ss,"ПРИЗНАК",sch);
      ss = PutFieldS(ww,ss,"Кмнт","ПП № "+ВВР[i].ДПП01+ ' от ' + DateToString(ВВР[i].ДПП02) + ' ' + ВВР[i].НАЗПЛ);
    CloseWorkArea(ww);
       endchanging(w);
     Except
       CancelChanging(w);
     Raise;
    end;
--  od;
 Finally
    CloseWorkArea(w);
 end;
end;

Func поискПлатежек(ИмяС:S;I:I):Record;
 var w,n,iTmp: Integer;
 var Ном,f: String;
 var res: Record;
 res = nil;
 if ИмяС = "ВВР":
	Ном = GetVariableS(ИмяС+"["+Str(i)+"].ДПП01");
 fi;

 f = "НомерБум ='"+Ном+"'";
 w = openworkarea("Поруч","",f);
   n = records(w);
   if n=0:	   -- платежка не найдена
       if создВсеПЛ = false:
	 iTmp=Enquiry("Внимание!", "Платежное поручение с номером (" + Ном + ") не найденно. Создать его?", "Да;Нет;Создать все отсутствующие", mtConfirmation);
	 if
		  iTmp = 3:создВсеПЛ = true;
		  создатьПлатежку("ВВР",I);
		  Message("Платежное поручение "+ном+" создано");
	 fi;
       else
	 iTmp = 1;
       fi;
       if iTmp = 1:
	  создатьПлатежку("ВВР",I);
	  Message("Платежное поручение "+ном+" создано");
       fi;
   fi;
   res = GetRecordKey(w, 1);
 closeworkarea(w);
^res;
end;


Func ВыбратьСчет_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Счет:S;
var Field:S;
Template.HideEditor(False);
Field=AsString(Template.Field);
Счет=ВыборСчетДб(Field);
if Field="Пос2Дб": Пос2Дб=Счет;
  |Field="Пос3Дб": Пос3Дб=Счет;
fi;
Return Счет;
end;

Func fДопИнфа__OnEnter(FieldName: String; Iter: Integer): logical;
FieldName=SubStr(FieldName,1,Length(FieldName)-1);
PutVariableL(FieldName,not GetVariableL(FieldName));
if fДопИнфа=true: БокТаб(false); else БокТаб(true); fi;
Return False;
end;

Proc btnЗагрузка_OnClick(Sender: String);
Обнул;
if ChooseFile(Fname,"Выберите файл выписки","Выписка ПБС(*.vp?)|*.vp? ") <> cmOk:
  Exit;
fi;
If FName<>"": 
   ЗагрузитьВыписку;
   ВЫПИСКА=true;
--   If FName1<>"":
--	ЗагрузитьПлатежки;
--	ДОПИНФА=true;
--   else
--	message ("Информация из выписки загружена. Если вы хотите загрузить дополнительную информацию, пожалуйста, укажите путь к обоим файлам.");
--   fi;
else message ("Не указан путь к файлу выписки.",mtError);
fi;
if ДОПИНФА=true:
   ПроверКонтр(1);
   ПроверБанк(1);
--   ЗагрПоступ;
fi;
  ОбновСтат("", 0);
  ОстУч;

ЗакрытьНастр;
УпрПуть=True;
fСкрытие=True;
fДопИнфа=True;
end;

Proc ОткрытьДок_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Sect:S;
var I:I;
var ID, Crd:S;
var Rec: Record;

  Sect=AsString(Template.Name);
  I=AsInteger(template.Frame);
  ID = НайтиДок(ИмяСекции(Sect), I);
  Crd = ExtractWord(1, ID, '#');
  Rec = StringToRecord(ExtractWord(2, ID, '#'));
  OpenBlank(Bln4crd(Crd), true, rec);

--  p=GetvariableR(ИмяСекции(Sect)+"["+Str(I)+"].ПЛАТЕЖКА");
--  if p=nil:
--     message("Платежное проручение отсутствует");
--  else
--     if Sect = 'scИнфаТаб24':
--	 OpenBlank("Документы.Банк.Поруч",true,p); --p - ключ записи getrecordkey;
--     fi;
--  fi;
end;

Proc btnЗапПлатежки_OnClick(Sender: String);
ЗагрПоступ;
end;


Proc btnОбнов_OnClick(Sender: String);
 ОстУч;
end;

Func КонтрИмя_OnEnter(FieldName: String; Iter: Integer): logical;
var Рекв, Банк:record;
var ИНН, Док, ИмяС, F,Sect:s;
var Дата_:D;
  Sect=AsString(Template.Name);
  ИмяС=ИмяСекции(Sect);
  if ИмяС="ПВР" or ИмяС="ПВИ":
     Док=getvariableS(ИмяС+"["+Str(Iter)+"].ДОК01");
     Дата_=getvariableD(ИмяС+"["+Str(Iter)+"].ДОК02");
    else
     Док=getvariableS(ИмяС+"["+Str(Iter)+"].ДПП01");
     Дата_=getvariableD(ИмяС+"["+Str(Iter)+"].ДПП02");
  fi;
  Рекв=ПоискКонтр(ИмяС,Iter,ДОК,1);
  ИНН=GetVariableS(ИмяС+"["+Str(Iter)+"].ИННПЛ");
  F = "ИНН ='" + ИНН + "'";
  Рекв=OpenCardFile("Контрагент", F, Рекв, crdRecordOnly);   --???
  if not Рекв=nil: PutvariableR(ИмяС+"["+Str(Iter)+"].РЕКВ",Рекв); fi;
  Банк=Раб.Бюджет2005.БанкСчет(Рекв,False);
  if not Банк=nil: PutvariableR(ИмяС+"["+Str(Iter)+"].Банк",Банк); fi;
  If not GetvariableR(ИмяС+"["+Str(Iter)+"].ПЛАТЕЖКА")=nil: ОбновитьПлатежку(ИмяС,Док,Дата_,Iter); fi;
  Return False;
end;

Func ИМяБанкаПЛ_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var F,Док,БИК, РСЧ:S;
var ИмяС,БанкИмя, БанкИмя_:S;
var Банк,Рекв:record;
  ИмяС=ИмяСекции(Sect);
  if ИмяС="ПВР" or ИмяС="ПВИ":
     Док=getvariableS(ИмяС+"["+Str(Row)+"].ДОК01");
    else
     Док=getvariableS(ИмяС+"["+Str(Row)+"].ДПП01");
  fi;
  Банк=getvariableR(ИмяС+"["+Str(Row)+"].БАНК");
  Рекв=getvariableR(ИмяС+"["+Str(Row)+"].РЕКВ");
  БИК=GetvariableS(ИмяС+"["+Str(Row)+"].БИКПЛ");
  РСЧ=GetvariableS(ИмяС+"["+Str(Row)+"].РСЧПЛ");
  Банк=ПоискБанка("ПВР",Row,Док,1);
  F="КОНТРАГЕНТ="+Recordtostring(РЕКВ)+" AND БИК='"+БИК+"' AND РСЧЕТ='"+РСЧ+"'";
  Банк=OpenCardFile("Банк_Счета",F,Банк);    --а почему банк-счета???
  БанкИмя_=GetCardFieldS("Банк_Счета",Банк,"БАНК");
  if Банкимя_="": БанкИмя=Cur;
    else БанкИмя=БанкИмя_;
  fi;
  Return БанкИмя;
end;

Func СчДеб_OnEnter(FieldName: String; Iter: Integer): logical;
var OWA,OA:I;
var Sect,ИмяС:S;
var I,n:I;
var Mask,tmp,СчДеб_,СчКре_,Призн:S;
var КБК_,ВидСр,ТипКБК:S;
var Rec:Record;
Sect=AsString(Template.Name);
ИмяС=ИмяСекции(Sect);
Rec=GetvariableR(ИмяС+"["+Str(Iter)+"].ПЛАТЕЖКА");
OWA=OpenWorkArea(ПППCrd,"","Ukey="+recordToString(Rec));
  Try
    n=GetRecordNumber(OWA,Rec);
    ВидСр=GetFieldS(OWA,n,"РПО_ВД");
    OA=OpenArray(OWA,n,"РПО_Расшифр","");
       Try
	 tmp=GetFieldS(OA,1,"СчДеб");
	 КБК_=GetFieldS(OA,1,"КБК");
	 I=Records(OA);
	 If I=1:
	    If КБК_="" and not ВидСр="3":
	       Message("Заполните код по БК",mtError);
	       OpenBlank("Документы.Банк.Поруч_ВХ",false,Rec);
	    fi;
	    Mask="("+МаскаСчДеб+")&*."+ВидСр+".???.??.*";
	    if not ВидСр="3":
	       Mask=Mask+"&(???.??.*|"+Раб.Бюджет2005.ВзятьКодКБК(КБК_,"","БК",False)+".*."+Раб.Бюджет2005.ВзятьКодКБК(КБК_,"","КОСГУ",False)+")";
	    fi;
	    tmp=AccountElection(Mask,False,tmp);
	    if not tmp="":
	      СчДеб_=tmp;
	      СчКре_=GetFieldS(OA,1,"СчКре");
	      if not Correspond(tmp,СчКре_): СчКре_=""; fi;
	      Призн=GetFieldS(OA,1,"Призн");
	      ТипКБК=GetFieldS(OA,1,"ТипКБК");
	      Призн=ОбновитьПризн(Призн,СчКре_,СчДеб_,КБК_,ТипКБК);
	      BeginChanging(OA);
		Try
		  I=PutFieldS(OA,1,"Призн",Призн);
		  I=PutFieldS(OA,1,"СчДеб",СчДеб_);
		  I=PutFieldS(OA,1,"СчКре",СчКре_);
		EndChanging(OA);
	      Except
		CancelChanging(OA);
	      Raise;
	      End;
	  fi;
	   else
	    OpenBlank("Документы.Банк.Поруч_ВХ",false,Rec);    --не стоит ли открыть бланк после закрытия всех рабочих областей?
	 fi;
       Finally
	 CloseWorkArea(OA);
       end;

  Finally
    CloseWorkArea(OWA);
  end;
PutvariableS(ИмяС+"["+Str(Iter)+"].СчДеб",СчДеб_);
 Return False;
end;

Func СчКре_OnEnter(FieldName: String; Iter: Integer): logical;
var OWA,OA:I;
var I,n:I;
var Sect,ИмяС:S;
var КБК_,ВидСр,ТипКБК:S;
var tmp,СчДеб_,СчКре_,Призн:S;
var Rec:Record;
Sect=AsString(Template.Name);
ИмяС=ИмяСекции(Sect);
Rec=GetvariableR(ИмяС+"["+Str(Iter)+"].ПЛАТЕЖКА");
OWA=OpenWorkArea(ПППCrd,"","Ukey="+recordToString(Rec));
  Try
    n=GetRecordNumber(OWA,Rec);
    ВидСр=GetFieldS(OWA,n,"РПО_ВД");
    OA=OpenArray(OWA,n,"РПО_Расшифр","");

       Try
	 СчКре_=GetFieldS(OA,1,"СчКре");
	 СчДеб_=GetFieldS(OA,1,"СчДеб");
	 КБК_=GetFieldS(OA,1,"КБК");
	 I=Records(OA);
	 If I=1:
	    If КБК_="" and not ВидСр="3":
	       Message("Заполните код по БК",mtError);
	       OpenBlank("Документы.Банк.Поруч_ВХ",false,Rec);
	    fi;
	    if СчКре_="":
	       if ВидСр="3":
		  tmp=hСчКре;	--???
		 else
		  tmp=Раб.Бюджет2005.ВзятьКодКБК(КБК_,"","БК",False)+"."+ВидСр;
		  if hСчКре="":
		     tmp=tmp+".";
		    else
		     tmp=tmp+"."+Раб.Бюджет2005.ВзятьКодСчета(hСчКре,"","СЧ8",False);
		  fi;
	       fi;
	      else
	       tmp=СчКре_;
	    fi;
	    tmp=PickCorrAccount(СчДеб_,False,tmp);
	    if not tmp="":
	       СчКре_=tmp;
	       hСчКре=tmp;
	       Призн=GetFieldS(OA,1,"Призн");
	       Призн=ОбновитьПризн(Призн,СчКре_,СчДеб_,КБК_,ТипКБК);
	       BeginChanging(OA);
		 Try
		   I=PutFieldS(OA,1,"Призн",Призн);
		   I=PutFieldS(OA,1,"СчКре",СчКре_);
		 EndChanging(OA);
	       Except
		 CancelChanging(OA);
	       Raise;
	       End;
	    fi;
	   else
	    OpenBlank("Документы.Банк.Поруч_ВХ",false,Rec);    --не стоит ли открыть бланк после закрытия всех рабочих областей?
	 fi;
       Finally
	 CloseWorkArea(OA);
       end;
  Finally
    CloseWorkArea(OWA);
  end;
PutvariableS(ИмяС+"["+Str(Iter)+"].СчКре",СчКре_);
  Return False;
end;

Func Путь1_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;    --Путь к выписке
var i:I;
var tmp:S;
 Template.HideEditor(False);
    i=ChooseFile(tmp,"Выберите файл для загрузки");
    if i=cmOk then
       FName=tmp;
    fi;
 Return Cur;
end;

Func Путь2_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;   --Путь к файлу с доп. информацией. К платежкам т.е.
var i:I;
var tmp:S;
 Template.HideEditor(False);
    i=ChooseFile(tmp,"Выберите файл для загрузки");
    if i=cmOk then
       FName1=tmp;
    fi;
 Return Cur;
end;

Func Flags_OnEnter(FieldName: String; Iter: Integer): logical;	    --убирает номер приказа и постановления
 FieldName=SubStr(FieldName,1,Length(FieldName)-1);
 PutVariableL(FieldName,not GetVariableL(FieldName));
 УпрШапк = fСкрытие;
 Return False; 
end;

Proc OnOpen(Create: Logical);
 if Дата=01.01.0100: Дата=Today; fi;
 --Клиент;
end;

Proc ПровестиПлатежку(ИмяС:S;Iter:I);
var Ключ:record;
Ключ=GetVariableR(ИмяС+"["+Str(Iter)+"].ПЛАТЕЖКА");
if not Ключ=nil:
   OpenBlank(ПППBln,False,Ключ);
   PutVariableL(ПППBln+".РПО_Проводить",True);
   ExecuteProc(ПППBln+".cbПроводить_OnChange","");
   Close(ПППBln);
fi;
end;

Func ПЛАТЕЖКАРПО_ПРОВОДИТЬ_OnEnter(FieldName: String; Iter: Integer): logical;
var Sect,ИмяС:S;
var Ключ:record;
Sect=AsString(Template.Name);
ИмяС=ИмяСекции(Sect);
Ключ=GetVariableR(ИмяС+"["+Str(Iter)+"].ПЛАТЕЖКА");
if Ключ=nil:
   message("Платежное проручение отсутствует");
  else
   ПровестиПлатежку(ИмяС,Iter);
fi;
  Return False;
end;

Func Ш_Получ_OnEnter(FieldName: String; Iter: Integer): logical;
var F:S;
var Rec:Record;
   F="НАШЕ";
   Rec=ВыборКлиента(F);
   ЗаполнитьКлиента(Rec);
  Return False;
end;

Proc BtnЗакрытие_OnClick(Sender: String);
Close(SelfBln);
end;


--Proc btnПровести_OnClick(Sender: String);
--var n,I:I;
--var ИмяС:S;
--n=ПВР;
--   for I=1..n do
--     ИмяС="ПВР";
--     ПровестиПлатежку(ИмяС,I);
--   od;
--   --
--   n=ПВИ;
--   for I=1..n do
--     ИмяС="ПВИ";
--     ПровестиПлатежку(ИмяС,I);
--   od;
--   --
--   n=ОСД;
--   for I=1..n do
--     ИмяС="ОСД";
--     ПровестиПлатежку(ИмяС,I);
--   od;
--   --
--   n=ОДБ;
--   for I=1..n do
--     ИмяС="ОДБ";
--     ПровестиПлатежку(ИмяС,I);
--   od;
--   --
--   n=ИДФ;
--   for I=1..n do
--     ИмяС="ИДФ";
--     ПровестиПлатежку(ИмяС,I);
--   od;
--   --
--   n=ОСО;
--   for I=1..n do
--     ИмяС="ОСО";
--     ПровестиПлатежку(ИмяС,I);
--   od;

--end;


Proc Button3_OnClick(Sender: String);
 var k,i: Integer;
 создВсеПЛ = false;
   k = ВВР;
   for i=1..k do
       поискПлатежек("ВВР",i);
   od;
end;


Proc Button5_OnClick(Sender: String);
 ПроверКонтр(2);
end;

func ПоискЗаявки(ИмяС: String;I: Integer): logical;
 var w,n: Integer;
 var ном,f: String;
 var da:Date;

 if ИмяС = "ВВР":
	Ном = GetVariableS(ИмяС+"["+Str(i)+"].ДПС01");
	da = GetVariableD(ИмяС+"["+Str(i)+"].ДПС02");
 fi;
 f = "НомерДок ='"+Ном+"' and ДатаДок = "+DateTostring(da);
 w = openworkarea("РПО_ЗАЯВКА_КР","",f);
   n = records(w);
 CloseWorkArea(w);
   if n=0:	   -- заявка не найдена
      ^false;
   else
      ^true;
   fi;

end;

proc СоздатьЗаявку(ИмяС:String;I:Integer);
  var w,v: integer;
  var ww,vv: integer;
  var n,nn: integer;
  var li: integer;
  var ss:integer;
  var НомПл, f: string;
  var pp:Record;

-- ПроверКонтр(2);
-- if ИмяС = "ВВР": ПроверитьБанкиВВР;	fi;

 w = openworkarea("РПО_ЗАЯВКА_КР","");
 try
    beginchanging(w);
     try
     n = InsertRecord(w);
     endchanging(w); --Фиксируем Ukey
       pp = getRecordKey(w,n);
     beginchanging(w);
     n = GetRecordNumber(w,pp);
     НомПл =GetVariableS("ВВР["+Str(i)+"].ДПП01");
     f = "НомерБум ='"+НомПл+"'";
	v = openworkarea("Поруч","",f);
	nn = records(v);
	if nn <> 0:   -- платежка  найдена
	     vv = openarray(v,1,"РПО_Позиции","","");
	     ww = openarray(w,n,"РАСШИФР","","");
	     for li=1 .. Records(vv) do
		ss = InsertRecord(ww);
		ss = PutFieldN(ww,ss,"Сум", GetFieldN(vv,li,"сум"));
		ss = PutFieldN(ww,ss,"СумРуб", GetFieldN(vv,li,"сум"));
		ss = PutFieldS(ww,ss,"КБК", ВВР[i].КБК);
		ss = PutFieldS(ww,ss,"Ист", "1");
		ss = PutFieldS(ww,ss,"СчДеб",GetFieldS(vv,li,"СЧДЕБ"));
		ss = PutFieldS(ww,ss,"СчКре",GetFieldS(vv,li,"СЧКРЕ"));
		ss = PutFieldS(ww,ss,"Призн","КОСГУ."+substr(ВВР[i].КБК,18,3));
		ss = PutFieldS(ww,ss,"НазнПл",GetFieldS(v,li,"Т"));
	    od;
	    CloseWorkArea(ww);
	    CloseWorkArea(vv);

	    ВВР[i].РЕКВ = GetFieldR(v,1,'РЕКВП');
	    ВВР[i].БАНК = GetFieldR(v,1,'БАНКП');
	    BeginChanging(v);
	      li = PutFieldR(v,1,"РПО_ЗАЯВКА_КР",pp);
	    endchanging(v);
	fi;

	if n=0:
	    Message("Платежное поручение с номером "+ НомПл  +" не найдено");
	fi;

	n = PutFieldS(w,n,"Учитывать",GetFieldS(v,1,"РПО_Учитывать"));
	n = PutFieldS(w,n,"ВБанк",GetFieldS(v,1,"РПО_ВБанк"));
	n = PutFieldS(w,n,"Проводить",GetFieldS(v,1,"Проводить"));


     CloseWorkArea(v);

     n = PutFieldS(w,n,"Глава",Ш_ГлБК);
     n = PutFieldS(w,n,"ГРБС",Ш_Распр);
     n = PutFieldS(w,n,"ДолжнРук",РеквНаше.ДолжнРук);
     n = PutFieldS(w,n,"ФИОРук",РеквНаше.ФИОРук);
     n = PutFieldS(w,n,"ДолжнБух",РеквНаше.ДолжнБух);
     n = PutFieldS(w,n,"ФИОБух",РеквНаше.ФИОБух);

     n = PutFieldS(w,n,"НомерДок",ВВР[i].ДПС01);
     n = PutFieldD(w,n,"ДатаДок",ВВР[i].ДПС02);
     n = PutFieldD(w,n,"ДатаПодписи",ВВР[i].ДПС02);
     n = PutFieldS(w,n,"ДокОперНом",ВВР[i].ДПП01);
     n = PutFieldD(w,n,"ДокОперДат",ВВР[i].ДПП02);
     n = PutFieldD(w,n,"ДатаОпер",Дата);
     n = PutFieldR(w,n,"РЕКВ",РеквНаше);
     n = PutFieldR(w,n,"БАНК",БанкНаше);
     n = PutFieldR(w,n,"РЕКВП",ВВР[i].РЕКВ);
     n = PutFieldR(w,n,"БАНКП",ВВР[i].БАНК);
     n = PutFieldN(w,n,"ДОК_СУМ",ВВР[i].СУМ01);
     n = PutFieldN(w,n,"ДОК_СУМРуб",ВВР[i].СУМ01);
     n = PutFieldS(w,n,"ДОК_ОКВ","643");

     n = PutFieldS(w,n,"Док_ОчрПл",if(ВВР[i].ОчрПл='','5',ВВР[i].ОчрПл));
     n = PutFieldS(w,n,"ДОК_ВИДПЛ",if(ВВР[i].ВИДПЛ='','0',ВВР[i].ВИДПЛ));
     n = PutFieldS(w,n,"Док_НазнПл",ВВР[i].НАЗПЛ);
     n = PutFieldS(w,n,"Призн_К",CardFileRecSign("Контрагент","Признак","К",ВВР[i].РЕКВ,""));
     n = PutFieldS(w,n,"Призн_ЛС",РАБ.Бюджет2005.БанкВПризн(БанкНаше));

    -- string
    -- string

 --   ww = openarray(w,n,"РПО_СТРОКИ_БК","","");
 ---	 ss = InsertRecord(ww);
  --  CloseWorkArea(ww);

       endchanging(w);
     Except
       CancelChanging(w);
     Raise;
    end;
 Finally
    CloseWorkArea(w);
 end;

end;




Proc Button8_OnClick(Sender: String);

поискПлатежек("ВВР",1);

end;


Proc Button7_OnClick(Sender: String);

var I,N,iTmp: Integer;
var a:logical;

создВсеЗаявки = false;
N = ВВР;

for i=1..N do
       a = ПоискЗаявки("ВВР",i);
       if  not a and  not создВсеЗаявки:
	 iTmp=Enquiry("Внимание!", "Заявка с номером (" + ВВР[i].ДПС01 + ") не найдена. Создать ее?", "Да;Нет;Создать все отсутствующие", mtConfirmation);
	 if iTmp = 3: создВсеЗаявки = true; fi;
	 if iTmp = 1: СоздатьЗаявку("ВВР",i);fi;
       fi;
       if not a and создВсеЗаявки:
		СоздатьЗаявку("ВВР",i);
       fi;
od;

end;



var BDCandi[]:S;

Proc Button9_OnClick(Sender: String);
var F: Integer;
var i: I;
var supP: String;
var tmp: String;

 ЗагрузитьВыписку;
 supP = Раб.Бюджет2005.PathPart(FName,'path');
 GetFileList(supP,"*.BD?",1,BDCandi);
 for i = 1 .. LengthOfArray(BDCandi) do
   F = TextFileOpenRead(BDCandi[i]);
   tmp = Раб.ИмпортФК.Чит(F);
 od;

end;


Func NO_OnEnter(FieldName: String; Iter: Integer): logical;

  Return False ;
end;


Func Стат_OnEnter(FieldName: String; Iter: Integer): logical;
var Sect:S;
var ID, Crd:S;
var Rec: Record;

  Sect=AsString(Template.Name);
  ID = НайтиДок(ИмяСекции(Sect), Iter);
  if ID<> "":
    Crd = ExtractWord(1, ID, '#');
    Rec = StringToRecord(ExtractWord(2, ID, '#'));
    if RecordExists(Crd, rec):
       OpenBlank(Bln4crd(Crd), true, rec);
    fi;
  fi;
  ОбновСтат(ИмяСекции(Sect), Iter);
  Return False;
end;


Proc OnRead;
  Клиент;
  ОбновСтат("", 0);
  ОстУч;
end;

Func Учет_OnEnter(FieldName: String; Iter: Integer): logical;
  var НачГод: Date;
  var Rpt:S;
  НачГод=Dat(01,01,год(Дата));
  Rpt='"'+PlanVar("Общие")+'\Отчеты\Ф0503130.lst"."Расшифр'+'"';
  if FieldName = "ИССПУОН0":
     Report(Rpt,НачГод,Дата,"*.1.502.11.*","");
    |FieldName = "ИССПУОК0":
     Report(Rpt,НачГод,Дата+1,"*.1.502.11.*","");
    |FieldName = "ИССПОСН0":
     Report(Rpt,НачГод,Дата,УчУслИССПОС,"");
    |FieldName = "ИССПОСК0":
     Report(Rpt,НачГод,Дата+1,УчУслИССПОС,"");
    |FieldName = "ИССВПЛН0":
     Report(Rpt,НачГод,Дата,УчУслИССВПЛ,"");
    |FieldName = "ИССВПЛК0":
     Report(Rpt,НачГод,Дата+1,УчУслИССВПЛ,"");
  fi;
  ОстУч;
  Return False ;
end;


Конец