Страница 1 из 1

Обезличивание данных

Добавлено: 15 фев 2013, 10:28
exbit
Народ, помогите плиз.
Стоит задача: предоставить копию сервера третьим лицам.
Но нада базу обезличить, ибо персональные данные.
Необходимо Всех сотрудников переименовать в Ивановых Иванов Ивановичей,
контрагентов желательно в Контрагент1, Контрагент2...
Зарплату выставить все 1000 рублей
Остальное пока в голову не приходит.

Может у кого есть готовый скрипт в склянку?

Re: Обезличивание данных

Добавлено: 15 фев 2013, 10:37
Den
что то подобное было тут :
ftp.galaktika.ru/pub/support/galaktika/bug_fix/util_obezlichBD
но не пробовал сам

Re: Обезличивание данных

Добавлено: 15 фев 2013, 17:08
edward_K
там лотик, который вместо фио ставит nrec например , наименование организаций также и .т.п.

Re: Обезличивание данных

Добавлено: 01 мар 2013, 18:02
Max_Fin
Может кому понадобиться.

Писал давненько, давно не было необходимости использования.
Возможно, что-то потребует дописать.

Код: Выделить всё

const Max_Catalogs: LongInt = 31;
const Max_Modules: LongInt = 131071;
end;

Interface MF_TEmpty 'Обезличивание и очистка баз' EscClose, Gray;
Show At ( 1,1,70,30 );

Table Struct TmpTable
(
  cNum: Comp,
  cRec: Comp
)
with index
(
  TmpTable01 = cNum,
  TmpTable02 = cRec
);

Create View
Var 
  wCatalog, wModule: LongInt;
As Select *
From
  KatOrg(KatOrg02), KatBank(KatBank06),
  Persons(PersByFIO), KatOS(KatOS02),
  KlPrice(KlPrice02)
;

Screen ScMain 'ВНИМАНИЕ!';
Fields
  wCatalog: NoProtect;
  wModule: NoProtect;
  'ВНИМАНИЕ!': Skip,
        {Font = {Color = ColorSysRed
                 Bold = True}};
  'ВЫПОЛНЕНИЕ ЭТОЙ ОПЕРАЦИИ ПРИВЕДЕТ К ПОТЕРЕ ИНФОРМАЦИИ!!!' ('Предупреждение'): Skip,
        {Font = {Color = ColorSysRed
                 Bold = True}};
Buttons
  cmBut,,,'тогда жмите сюда и надейтесь на то, что вам это больше не понадобиться';
  cmClose,,,'быстрее жмите сюда, а то мало ли что...';
<<

  ┌─ ` Каталоги `  ───────────────┐     ┌─ `Модули  `    ────────────────────┐
  │ [.] Справочник организаций` │     │ [.] Управление снабжением      ` │
  │ [.] Справочник банков     ` │     │ [.] Управление сбытом          ` │
  │ [.] Картотека сотрудников ` │     │ [.] Касса                      ` │
  │ [.] Картотека ОС          ` │     │ [.] Управление договорами      ` │
  │ [.] Прайс-листы           ` │     │ [.] Консигнация                ` │
  └─────────────────────────────┘     │ [.] Складской учет             ` │
                                      │ [.] Давальческое сырье         ` │
                                      │ [.] Клиент                     ` │                                                        
                                      │ [.] Поставщики, получатели     ` │
                                      │ [.] ФРО                        ` │
                                      │ [.] Ведение налоговых расчетов ` │
                                      │ [.] Векселя и кредиты          ` │
                                      │ [.] Платежный календарь        ` │
                                      │ [.] Управление бюджетом        ` │
                                      │ [.] Управление персоналом      ` │
                                      │ [.] Заработная плата           ` │
                                      │ [.] Автотранспорт              ` │
                                      └──────────────────────────────────┘

                        .@@@@@@@@ 
  .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 <. Вы уверены что делаете .> <. Кнопка для сомневающихся .>


>>
End; // screen

#declare MyInit(InitStr)
  SetVisualHeader(string(#InitStr))
  Delete all TmpTable;
#end

#declare MyIns(TableName, PosRec)
  Insert TmpTable Set
    TmpTable.cNum := #PosRec,
    TmpTable.cRec := #TableName.nRec;
#end

#declare MyUpd(TableName, TableField, sFieldValue)
  if GetFirst #TableName where ((TmpTable.cRec == #TableName.nRec)) = tsOk
  {
    Update Current #TableName Set
      #TableField := String(#sFieldValue);
  }
#end

HandleEvent
cmBut:
{
var cI: Comp;
  StartNewVisual(vtRotateVisual, vfTimer, 'Корректировка', 0);

  //Каталог Организаций
  if (wCatalog and 1) = 1
  {
    #MyInit('Корректировка справочника Организаций')
    cI := 0;
    _loop KatOrg
    {
      cI := cI + 1;
      #MyIns(KatOrg, cI)
      Update Current KatOrg Set
        KatOrg.Code := '',
        KatOrg.TipOrg := '',
        KatOrg.Addr := '',
        KatOrg.OKPO := '',
        KatOrg.OKDP := '',
        KatOrg.OKONH := '',
        KatOrg.Tel := '',
//        KatOrg.cState := 0,
        KatOrg.cCity := 0,
        KatOrg.TipKnt := 0,
//        KatOrg.Corpoin := 0,
        KatOrg.UNN := '',
        KatOrg.KodPlatNDS := '',
//        KatOrg.NeedCustom := 0,
        KatOrg.MaxDolgRub := 0,
        KatOrg.MaxDolgVal := 0,
        KatOrg.Skid := 0,
        KatOrg.IndexK := 0,
        KatOrg.KodPlatNDS := 0//,
//        KatOrg.IsArch := 0
        ;
    }
    _loop TmpTable
    {
      #MyUpd(KatOrg, KatOrg.Name, ('Организация №' + TmpTable.cNum))
    }
  }


  //Каталог Банков
  if (wCatalog and 2) = 2
  {
    #MyInit('Корректировка справочника Банков')
    cI := 0;
    _loop KatBank
    {
      cI := cI + 1;
      #MyIns(KatBank, cI)
    }
    _loop TmpTable
    {
      #MyUpd(KatBank, KatBank.Name, ('Банк №' + TmpTable.cNum))
    }
  }


  //Каталог Сотрудников
  if (wCatalog and 4) = 4
  {
    #MyInit('Корректировка картотеки Сотрудников')
    cI := 0;
    _loop Persons
    {
      cI := cI + 1;
      #MyIns(Persons, cI)
    }
    _loop TmpTable
    {
      #MyUpd(Persons, Persons.FIO, ('Сотрудник №' + TmpTable.cNum))
    }
  }


  //Каталог ОС
  if (wCatalog and 8) = 8
  {
    #MyInit('Корректировка картотеки Основных средств')
    cI := 0;
    _loop KatOS
    {
      cI := cI + 1;
      #MyIns(KatOS, cI)
    }
    _loop TmpTable
    {
      #MyUpd(KatOS, KatOS.NameOS, ('Основное средство №' + TmpTable.cNum))
    }
  }


  //Прайс-лист
  if (wCatalog and 16) = 16
  {
    #MyInit('Корректировка Прайс-листов')
    cI := 0;
    _loop KlPrice
    {
      cI := cI + 1;
      #MyIns(KlPrice, cI)
    }
    _loop TmpTable
    {
      #MyUpd(KlPrice, KlPrice.Name, ('Прайс-лист №' + TmpTable.cNum))
    }
  }


  //Каталог доверенных лиц
  delete all DovFio;

  //МОДУЛЬ Управление снабжением
  if (wModule and 1) = 1
  {
    #MyInit('Корректировка модуля Управление снабжением')
    //Счета ДО на закупку
    Update BaseDoc where ((Word(101) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Приходные накладные
    Update KatSopr where ((Word(101) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Акт на услуги, работы
    Update KatSopr where ((Word(111) == KatSopr.VidSopr)) Set
        KatSopr.Name := '';
    //Доверенность
    Update Dover Set Dover.cDovFIO := 0;
  }


  //МОДУЛЬ Управление сбытом
  if (wModule and 2) = 2
  {
    #MyInit('Корректировка модуля Управление сбытом')
    //Счета ДО на продажу
    Update BaseDoc where ((Word(201) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Накладные на отпуск
    Update KatSopr where ((Word(201) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Акт на услуги, работы
    Update KatSopr where ((Word(211) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
//  Доверенность
//  см. в Управлении снабжением
  }


  //МОДУЛЬ Касса
  if (wModule and 4) = 4
  {
    #MyInit('Корректировка модуля Касса')
    //Приходный кассовый ордер 7
    Update PlPor where ((Word(7) == PlPor.TiDkGal)) Set
      PlPor.PodOtchet := '',
      PlPor.NamePl1 := '',
      PlPor.NamePl2 := '',
      PlPor.NamePl3 := '';
    //Расходный кассовый ордер 8
    Update PlPor where ((Word(8) == PlPor.TiDkGal)) Set
      PlPor.PodOtchet := '',
      PlPor.NamePl1 := '',
      PlPor.NamePl2 := '',
      PlPor.NamePl3 := '';
    //Авансовый отчет 9
    Update PlPor where ((Word(9) == PlPor.TiDkGal)) Set
      PlPor.PodOtchet := '',
      PlPor.NamePl1 := '',
      PlPor.NamePl2 := '',
      PlPor.NamePl3 := '';
  }


  //МОДУЛЬ Управление договорами
  if (wModule and 8) = 8
  {
    #MyInit('Корректировка модуля Управление договорами')
    //Распоряжение на отгрузку
    Update OtgOrder Set
      OtgOrder.DocNote := '';
    //ДО на продажу
    //см. в Управление сбытом Счета ДО на продажу
    //ДО на закупку
    //см. в Управление снабжением Счета ДО на закупку
    //ДО на предоплату продаж
    Update BaseDoc where ((Word(211) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //ДО на предоплату закупок
    Update BaseDoc where ((Word(111) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
  }


  //МОДУЛЬ Консигнация
  if (wModule and 16) = 16
  {
    #MyInit('Корректировка модуля Консигнация')
    //Основание (Отпуск)
    Update BaseDoc where ((Word(202) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Отчет консигнатора
    Update RepCDoc Set
      RepCDoc.Rem := '';
    //Накладные на отпуск
    Update KatSopr where ((Word(202) == KatSopr.VidSopr)) Set
        KatSopr.Name := '';
    //Накладные на возврат
    Update KatSopr where ((Word(102) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Основание (Прием)
    Update BaseDoc where ((Word(102) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Накладные на прием
    Update KatSopr where ((Word(103) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Накладные на возврат
    Update KatSopr where ((Word(203) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
  }


  //МОДУЛЬ Складской учет
  if (wModule and 32) = 32
  {
    #MyInit('Корректировка модуля Складской учет')
    //Накладная на внутренее перемещение
    Update KatSopr where ((Word(600) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Транзитная накладная
    Update KatSopr where ((Word(606) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Накладная склад -> розничная торговля
    Update KatSopr where ((Word(603) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Накладная склад -> ОС
    Update KatSopr where ((Word(601) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Накладная склад -> МБП
    Update KatSopr where ((Word(602) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Накладная склад -> НМА
    Update KatSopr where ((Word(605) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Акт о недостаче
    Update KatSopr where ((Word(612) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Акт об излишках
    Update KatSopr where ((Word(611) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Акт на пересортицу
    Update KatSopr where ((Word(630) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
  }


  //МОДУЛЬ Давальческое сырье
  if (wModule and 64) = 64
  {
    #MyInit('Корректировка модуля Давальческое сырье')
    //Основание
    Update BaseDoc where ((Word(520) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Накладная на прием готовой продукции
    Update KatSopr where ((Word(522) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Накладная на возврат сырья
    Update KatSopr where ((Word(523) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
  }


  //МОДУЛЬ Клиент
  if (wModule and 128) = 128
  {
    #MyInit('Корректировка модуля Клиент')
    Delete All VHIerarchy;
    Delete All Contact;
    Delete All EstSales;
    Delete All Sales;
    Delete All EstBarg;
    Delete All Bargain;
    Delete All Subject;
    Delete All ServtRet;
    Delete All CRMPersons;
  }


  //МОДУЛЬ Поставщики, получатели
  if (wModule and 256) = 256
  {
    #MyInit('Корректировка модуля Поставщики, получатели')
    //Акт взаимозачетов
    Update PlPor where ((Word(70) == PlPor.TiDkGal)) Set
      PlPor.PodOtchet := '',
      PlPor.NamePl1 := '',
      PlPor.NamePl2 := '',
      PlPor.NamePl3 := '';
    //Договор уступки долга (продажа)
    Update BaseDoc where ((Word(90) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Договор уступки долга (покупка)
    Update BaseDoc where ((Word(91) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Регистрация уступки собственного долга
    Update BaseDoc where ((Word(92) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Наши счета-фактуры
    Update SchFact where ((Word(1) == SchFact.Direct)) Set
      SchFact.Nazn := '';
    //Счета-фактуры поставщика
    Update SchFact where ((Word(2) == SchFact.Direct)) Set
      SchFact.Nazn := '';
    //Книга продаж
    Update BookPrZk where ((Word(1) == BookPrZk.Direct)) Set
      BookPrZk.Nazn := '';
    //Книга покупок
    Update BookPrZk where ((Word(2) == BookPrZk.Direct)) Set
      BookPrZk.Nazn := '';
  }


  //МОДУЛЬ ФРО
  if (wModule and 512) = 512
  {
    #MyInit('Корректировка модуля ФРО')
    //Реестр распределения валюты
    Update PlPor where ((Word(27) == PlPor.TiDkGal)) Set
      PlPor.PodOtchet := '',
      PlPor.NamePl1 := '',
      PlPor.NamePl2 := '',
      PlPor.NamePl3 := '';
  }


  //МОДУЛЬ Ведение налоговых расчетов
  if (wModule and 1024) = 1024
  {
    #MyInit('Корректировка модуля Ведение налоговых расчетов')
    //Акт на регистрацию начисленных налогов
    Update KatSopr where ((Word(112) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
    //Акт сверки
    Update KatSopr where ((Word(113) == KatSopr.VidSopr)) Set
      KatSopr.Name := '';
  }


  //МОДУЛЬ Векселя и кредиты
  if (wModule and 2048) = 2048
  {
    #MyInit('Корректировка модуля Векселя и кредиты')
    //Акт на получение векселей
    Update AppVeks where ((Word(84) == AppVeks.TiDk)) Set
      AppVeks.Prim1 := '',
      AppVeks.Prim2 := '',
      AppVeks.Prim3 := '';
    //Акт на передачу векселей
    Update AppVeks where ((Word(81) == AppVeks.TiDk)) Set
      AppVeks.Prim1 := '',
      AppVeks.Prim2 := '',
      AppVeks.Prim3 := '';
    //Акт на гашение собственных векселей
    Update AppVeks where ((Word(82) == AppVeks.TiDk)) Set
      AppVeks.Prim1 := '',
      AppVeks.Prim2 := '',
      AppVeks.Prim3 := '';
    //Акт на гашение стронних векселей
    Update AppVeks where ((Word(83) == AppVeks.TiDk)) Set
      AppVeks.Prim1 := '',
      AppVeks.Prim2 := '',
      AppVeks.Prim3 := '';
    //Вексельное соглашение
    Update SoglVeks where ((Word(81) == SoglVeks.TiDk)) Set
      SoglVeks.Prim1 := '',
      SoglVeks.Prim2 := '',
      SoglVeks.Prim3 := '';
  }


  //МОДУЛЬ Платежный календарь
  if (wModule and 4096) = 4096
  {
    #MyInit('Корректировка модуля Платежный календарь')
    //Основание на закупку
    //см. в Управление снабжением Счета ДО на закупку
    //Основания для приема на консигнацию
    //см. в Консигнации Основание (Прием)
    //Основания на продажу
    //см. в Управление сбытом Счета ДО на продажу
    //Основания для отпуска на консигнацию
    //см. в Консигнации Основание (Отпуск)
    //Основания на предоплату закупок
    //см. в Управлении договорами ДО на предоплату закупок
    //Основания на предоплату продаж
    //см. в Управлении договорами ДО на предоплату продаж
    //Заявки на сервисное обслуживание
    Update BaseDoc where ((Word(510) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Договоры на переработку сыря
    Update BaseDoc where ((Word(520) == BaseDoc.VidDoc)) Set
      BaseDoc.Name := '';
    //Договоры продажи долга
    //см. в Поставщиках, получателях Договор уступки долга (продажа)
    //Договры покупки долга
    //см. в Поставщиках, получателях Договор уступки долга (покупка)
    //Уступка собственного долга
    //см. в Поставщиках, получателях Регистрация уступки собственного долга
 }


  //МОДУЛЬ Управление бюджетом
  if (wModule and 8192) = 8192
  {
    #MyInit('Корректировка модуля Управление бюджетом')
    //Книга плановых операций
    if GetFirst PlansSch where ((150 == PlansSch.KodReg)) = tsOk
      Update fpOborot where ((PlansSch.nRec == fpOborot.cPlansSch)) Set
        fpOborot.Name := '';
    //Книга фактических операций
    if GetFirst PlansSch where ((151 == PlansSch.KodReg)) = tsOk
      Update fpOborot where ((PlansSch.nRec == fpOborot.cPlansSch)) Set
        fpOborot.Name := '';
    //Книга операций "по данным бух.учета"
    if GetFirst PlansSch where ((153 == PlansSch.KodReg)) = tsOk
      Update fpOborot where ((PlansSch.nRec == fpOborot.cPlansSch)) Set
        fpOborot.Name := '';
  }


  //МОДУЛЬ Управление персоналом
  if (wModule and 16384) = 16384
  {
    #MyInit('Корректировка модуля Управление персоналом')
    Delete all PsnLinks;
    Delete all Address;
    Delete all Passports;
    Delete all Communications;
    Delete all Appendix;
    Delete all ConScription;
    Delete all CasePsn;

    Update Persons Set
      Persons.BornDate := Date(0, 0, 0),
      Persons.BornAddr := 0,
      Persons.Dependants := 0,
//      Persons.Sex := ''#0,
      Persons.Nationality := 0,
      Persons.PasspRus := 0,
      Persons.PasspFor := 0,
      Persons.LiveAddr := 0,
      Persons.PasspAddr := 0,
      Persons.FamilyState := 0,
      Persons.Education := 0,
      Persons.Publications := 0,
      Persons.Inventions:= 0,
      Persons.PassNmb := 0,
//      Persons.Department := 0,
//      Persons.GalDep := 0,
//      Persons.GalDepHost := 0,
//      Persons.TabNmb := 0,
      Persons.TestPeriod := Date(0, 0, 0),
//      Persons.JobNature := 0,
      Persons.ComplSrc := 0,
      Persons.InvalidGrp := 0,
      Persons.PensionDate := Date(0, 0, 0),
      Persons.PensionCause := 0,
      Persons.DisOrderDate := Date(0, 0, 0),
      Persons.DisOrderNmb := '',
      Persons.DisDate := Date(0, 0, 0),
      Persons.DisReason := 0,
      Persons.DisMotive := 0,
      Persons.DisprofNmb := '',
      Persons.DisProfDate := Date(0, 0, 0),
      Persons.AppDate := Date(0, 0, 0),
      Persons.AppointCur := 0,
      Persons.AppointFirst := 0,
      Persons.AppointLast := 0,
//      Persons.IsEmployee := ''#0,
      Persons.IsPersBuh := 0,
      Persons.Gr := 0,
      Persons.cSovm := 0,
      Persons.DisDatePr := Date(0, 0, 0),
      Persons.cAddnRec1 := 0,
      Persons.dAddDate1 := Date(0, 0, 0),
      Persons.cAddnRec2 := 0,
      Persons.dAddDate2 := Date(0, 0, 0),
      Persons.wAddWord := 0,
      Persons.cBaseProf := 0,
      Persons.cAddProf := 0;
  }


  //МОДУЛЬ Заработная плата
  if (wModule and 32768) = 32768
  {
    #MyInit('Корректировка модуля Заработная плата')
    Update LSchet Set
      Adres := '',
      PasPort := '';
  }


  //МОДУЛЬ Автотранспорт
  if (wModule and 65536) = 65536
  {
    #MyInit('Корректировка модуля Автотранспорт')
    Update KnDriver Set
      KnDriver.Name := '',
      KnDriver.Tabn := 0,
      KnDriver.NUdov := '';
    Update Transp Set
      Transp.Nomer := '';
    Update MarAvt Set
      MarAvt.NMarAvt := '';
    Update MarRel Set
      MarRel.Name := '';
    Update MarPunkt Set
      MarPunkt.Name := '';
    Update TarifN Set
      TarifN.Name := '',
      TarifN.ShortName := '',
      TarifN.cKlvidopl := 0;
    Delete all GSMAlg;
  }


  SaveMyDsk(wCatalog, 'MF_TEmpty.wCatalog');
  SaveMyDsk(wModule, 'MF_TEmpty.wModule');
  StopVisual( '',0 );
}
cmInit:
{
var dCh: Boolean;
  if (not ReadMyDsk(wCatalog, 'MF_TEmpty.wCatalog', dCh)) 
    wCatalog := Max_Catalogs;
  if (not ReadMyDsk(wModule, 'MF_TEmpty.wModule', dCh)) 
    wModule := Max_Modules;
  set wCatalog := wCatalog;
  set wModule := wModule;

}
cmDefault:
{

}
cmClose:
{
}
End;

End.