Копирование категорий счетов из одного вида договора в другой

Автор:AbramovAI
Дата:27.08.2012
Просмотров:2716
Скачиваний:2005
Оценка: - , Оценок - 0
Сохранить в файле

Обсудить в форуме

Описание

возникла необходимость сделать копию категорий счетов из договора в одной валюте, в такой-же, по сути договор, в другой валюте. Стандартные средства обычно приводят валюту под названием "все валюты" к валюте договора, и приходится каждый раз проходить по категориям, вот и быстренько накропал.
Особые условия - Новый вид договора должен быть уже заведен. Из рублей в валюту копирует неправильно :).

Текст примера

 var
 TypeCatO = tbfile ("cat_type.dbt", "R", 1, "cat_type.dbt","..\\dbfile\\loans.def"),
 TypeCatN = tbfile ("cat_type.dbt", "W", 1, "cat_type.dbt","..\\dbfile\\loans.def"),
 TypeCat  = tbfile ("cat_type.dbt", "R", 0, "cat_type.dbt","..\\dbfile\\loans.def"),
 TypeODB  = tbfile ("acc_tmpl.dbt", "R", 0, "acc_tmpl.dbt","..\\dbfile\\loans.def"),
 TypeODBO = tbfile ("acc_tmpl.dbt", "R", 0, "acc_tmpl.dbt","..\\dbfile\\loans.def"),
 TypeODBN = tbfile ("acc_tmpl.dbt", "W", 0, "acc_tmpl.dbt","..\\dbfile\\loans.def"),
 TypeCrdO = tbfile ("type_crd.dbt", "R", 0, "type_crd.dbt","..\\dbfile\\loans.def"),
 TypeCrdN = tbfile ("type_crd.dbt", "R", 0, "type_crd.dbt","..\\dbfile\\loans.def"),
 OldCrdCode=133, //Вид кредита - источник
 NewCrdCode=138, //Вид кредита приемник
;

 TypeCrdO.rec.CreditTypeId=OldCrdCode;
 if (not TypeCrdO.geteq) MsgBox ("Шаблона кредита с номером ", OldCrdCode, " не существует !!!"  );exit;end;
 TypeCrdN.rec.CreditTypeId=NewCrdCode;
 if (not TypeCrdN.geteq) MsgBox ("Шаблон кредита с номером ", NewCrdCode, " ещё не создан !!!"  );exit;end;
TypeCat.rewind;
TypeCat.prev;
TypeODB.rewind;
TypeODB.prev;

Message ("Копируются категории учета для ", TypeCrdN.rec.CreditTypeName );
TypeCatO.rec.Reference=OldCrdCode;
TypeCatO.rec.CurCode=-2;
TypeCatO.rec.AccCategType=0;
TypeCatO.getge;
TypeCatO.prev;
While ((TypeCatO.next) and (TypeCatO.rec.Reference==OldCrdCode));

     TypeCatN.rec.Reference=NewCrdCode;
     TypeCatN.rec.CurCode=  TypeCatO.rec.CurCode;
     TypeCatN.rec.AccCategType= TypeCatO.rec.AccCategType;
     if (TypeCatN.geteq);println ("Для договора вида ", NewCrdCode, " существует категория ", TypeCatN.rec.AccCategType); Continue; end;
     copy (TypeCatN, TypeCatO);
     TypeCatN.rec.Reference=NewCrdCode;
     TypeCatN.rec.AccCategID=TypeCat.rec.AccCategID+1;
     if ((TypeCatO.rec.curcode!=0) and (TypeCatO.rec.curcode!=-1))
          TypeCatN.rec.curcode=TypeCrdN.rec.CurCode;
          TypeCatN.rec.curcodeODB=TypeCrdN.rec.CurCode;
     end;

     if (TypeCatO.rec.TmplODB!=0);
        TypeODBO.rec.Id_Tmpl=TypeCatO.rec.TmplODB;
        TypeODBO.geteq;
        copy (TypeODBN,TypeODBO);
        TypeODBN.rec.Id_Tmpl=TypeODB.rec.Id_Tmpl+1;
        TypeCatN.rec.TmplODB=TypeODBN.rec.Id_Tmpl;

     end;

     TypeODBN.insert;
     TypeCatN.insert;

TypeCat.rewind;
TypeCat.prev;
TypeODB.rewind;
TypeODB.prev;

end;