НОВОСТИ
Закончено опубликование всех проектов за 2009 и начало 2010 года. Маленький юбилей - общее количество проектов "перешагнуло" 90. Хотя каждый проект уникален в своем решении, качестве и подходе. И рассматривать "массу", не очень верный путь.
архив новостей
02.04.2010
СТАТЬИ - Проверка СИКа на верное значение (13.03.2004)

ПРОВЕРКА СИКА НА ВЕРНОЕ ЗНАЧЕНИЕ

ЛИТОШЕНКО Олег

Коротко: В данной статье рассказывается о методе генерации и проверки СИКов. В статье же представлены две функции для генерации СИКа и для проверки. Учтите что присвоение СИКов это прерогатива пенсионных фондов, а не разработчиков программного обеспечения.

К моему сожалению, я не нашел сам алгоритм формирования СИКов. Но зато нашел dll модуль, которое это производит. Известно только то, что СИК формируется от данных фамилии, имени, отчества и даты рождения.
Учтите, что права на присвоение СИКов принадлежит Пенсионному фонду. Мы можем только предупреждать пользователя программы что СИК не верный, и при его согласии давать «возможно верное» значение. Вероятность генерации верного значения – 99,43% Процент «промаха» составляют люди, у которых одинаковые фамилия, имя, отчество и дата рождения.
Пример функций на Delphi.
Слить tsric321.dll (28Кб)
---
Interface

              function TestData(date,ric:PChar):integer;stdcall;
              function TestRic(ric:PChar):integer;stdcall;

implementation

              function TestData(date,ric:PChar):integer;external 'tsric321.dll';
              function TestRic(ric:PChar):integer;external 'tsric321.dll';

// проверка сика на правильность
function TestSPC(fam,name,otch,spc:string;god:double):boolean;
var
          buff       : array[0..100]of char;
          spc_      : array[0..17]of char;
          I            : integer;
          S           : string;
begin
   Result:=false;
   s:=trim(fam)+trim(name)+trim(otch)+FormatDateTime('ddmmyyyy',god)+#0;
   for i:=0 to Length(s)-1 do buff[i]:=s[i+1];
   spc_:='000000000000000T'#0;
   i:=TestData(buff,spc_);
   TestRic(spc_);
   Result:=spc=spc_;
end;

// генерирует сик по имени фамилии отчеству и дате рождения
function GenSPC(fam,name,otch:string;god:double):String;
var
          buff        : array[0..100]of char;
          spc_       : array[0..17]of char;
          I             : integer;
          S            : string;
begin
   Result:='0000000000000000';
   s:=trim(fam)+trim(name)+trim(otch)+FormatDateTime('ddmmyyyy',god)+#0;
   for i:=0 to Length(s)-1 do buff[i]:=s[i+1];
   spc_:='000000000000000T'#0;
   i:=TestData(buff,spc_);
   TestRic(spc_);
   Result:=spc_;
end;
---

без согласия автора публикация, распространение запрещена

© Разработка ТОО "LiO Programs" 1999-2010
1-1 1-2
2-1
тел: +7 7252 558115
сот: +7 701 3528510, +7 700 4503956
web: www.lio.kz, www.hlp.kz
email: lio@lio.kz