Bankir.Ru
8 декабря, четверг 14:50

Объявление

Свернуть
Пока нет объявлений.

Контрольный ключ счета

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Контрольный ключ счета

    Напомните, плз, как расчитать контрольный ключ в счете.

    Если еще и на SQL напишете - вообще будет круть.

    Или хотя бы номер и дату инструкции ЦБ по этому поводу подскажите.
    Последний раз редактировалось AVK; 13.08.2001, 16:07.

  • #2
    В описании к Конве есть. Факт.
    PHP код:
                                        ПОРЯДОК РАСЧЕТА И ПРОВЕРКИ
                       КОНТРОЛЬНОГО КЛЮЧА В НОМЕРЕ ЛИЦЕВОГО СЧЕТА

              В соответствии с принятой структурой номера лицевого  счета  Банк
         России разъясняет порядок расчета контрольного ключа
    .

              
    1. Номер  лицевого счета должен включать в себя контрольный ключ,
         
    обеспечивающий возможность проверки правильности номера лицевого счета
         при автоматизированной обработке документов
    .
              
    2. Для  расчета  контрольного  ключа  в  номере  лицевого   счета
         используется  совокупность двух реквизитов 
    условного номера РКЦ (или
         кредитной организации
    и номера лицевого счета.


                                       
    1-ый разряд кода валюты
                                    
    ---------------------------
                                    
    │         контрольный ключ
                                    │        
    ------------------
                                    
    │        │
              А Б В    Г Д Е Ж З    И К Л    М    Н О П Р    С Т У Ф Х Ц Ш
              
    --T--    -------------------T-------------------------------
                
    │                         │
                │                         │   Номер лицевого счета
                │                         L
    ------------------------
                

                │ Условный номер РКЦ или кредитной организации
                L
    ----------------------------------------------


              
    3. Значение условного номера РКЦ соответствует  разрядам  5  и  6
         девятизначного  банковского  идентификационного  кода 
    (БИК);  условный
         номер РКЦ дополняется слева нулем до трех разрядов
    .
              
    4. Значение  условного номера кредитной организации соответствует
         разрядам 7
    8 и 9 БИК.
              
    5. Контрольный   ключ   рассчитывается  на  основе  приписываемых
         каждому разряду весовых коэффициентов
    :

              
    А Б В    Г Д Е Ж З    И К Л    М    Н О П Р    С Т У Ф Х Ц Ш
              
    ------------------------------------------------------------
              
    7 1 3    7 1 3 7 1    3 7 1    3    7 1 3 7    1 3 7 1 3 7 1

              6. В случае  использования  в  номере  счета  алфавитно
    -цифрового
         значения  кода  клиринговой  валюты  первый  разряд  этого  кода  
    (И),
         
    заданный алфавитным значением,  заменяется на соответствующую цифру:
         
    А0В 1,  С 2,  Е 3Н 4К 5М 6Р 7Т 8Х 9.
         Любая другая буква в данном разряде является ошибкой
    .  В качестве букв
         могут   использоваться  символы  кириллицы  и  соответствующие  им  по
         написанию латинские буквы
    ,  которые могут набираться как  на  верхнем,
         
    так   и  на  нижнем  регистре.  7.  На  основе  весовых  коэффициентов
         рассчитывается сумма произведений отдельных разрядов на  свой  весовой
         коэффициент  без учета контрольного ключа
    ,  который принимается равным
         нулю 
    М=):

             
    А Б В Г Д Е Ж З +
             
    И К  +   Л Н О П Р +
             
    С Т У +  Ф Х Ц Ш 1

              8. Младший   разряд   полученной   суммы  умножается  на  весовой
         коэффициент контрольного ключа 
    (т.ена 3).
              
    9. Младший разряд полученного произведения принимается в качестве
         значения контрольного ключа
    .

              
    Примеры расчета контрольного ключа

              1. Пример расчета контрольного  ключа  в  лицевом  счете  клиента
         кредитной организации
    сформированного с использованием цифрового кода
         валюты

               Условный номер кредитной организации                 7 4 6
               Весовые коэффициенты соответствующих разрядов        7 1 3

               Номер лицевого счета с нулевым значением
            контрольного ключа                        30101 002 0  0000 3100000
            Весовые коэффициенты                      71371 371 3  7137 1371371

              Рассчитывается сумма  произведений  отдельных  разрядов  на  свой
         весовой коэффициент без учета контрольного ключа 
    (М=0)

               
    +
               
    +
               
    104

              Младший разряд равен 4. Умножая его на 3
    получаем 4 3=12.
              Младший разряд  полученного  произведения  
    (2)  и  будет являться
         значением контрольного ключа
    .  В результате номер лицевого счета будет
         равен 30101 002 2 0000 3100000.

              Правильность расчета     контрольного     ключа    осуществляется
         обязательным  повторным  расчетом  суммы  произведений   разрядов   на
         приписанные  им  весовые  коэффициенты  с  учетом полученного значения
         контрольного ключа
    :

               
    +
               
    +
               
    110

              В результате получилось число
    ,  кратное 10 (младший разряд  равен
         0
    ), что подтверждает правильность расчета.


              
    2. Пример расчета контрольного ключа в лицевом счете клиента РКЦ,
         
    сформированного с использованием алфавитно-цифрового кода валюты

                Условный номер РКЦ                                    0 0 5
                Весовые коэффициенты соответствующих разрядов         7 1 3

              Номер лицевого счета с нулевым значением
              контрольного ключа                 30101 В84 0  0000 2900000

              Заменяем букву В соответствующей ей цифрой 
    (1и получаем:

              
    Номер лицевого счета  с преобразованным
              значением первого разряда кода валюты  30101 184  0  0000 2900000
              Весовые коэффициенты                   71371 371  3  7137 1371371

              Рассчитываем сумму  произведений  отдельных  разрядов   на   свой
         весовой коэффициент без учета контрольного ключа 
    (М=0)

           
    +
           
    *
           
    132

              Младший разряд равен 2. Умножая его на 3
    получаем 2 3=6.
              Младший разряд полученного  произведения  
    (6)  и  будет  являться
         значением  контрольного  ключа
    .  В  результате  номер лицевого счета с
         учетом представления первого разряда исходного кода клиринговой валюты
         в виде цифры будет равен

                                30101 184 6 0000 2900000

              Правильность расчета  контрольного ключа проверяется обязательным
         повторным расчетом  суммы  произведений  разрядов  на  приписанные  им
         весовые коэффициенты с учетом полученного значения контрольного ключа
    :

               
    +
               
    +
               
    150

              В результате  получилось число
    ,  кратное 10 (младший разряд равен
         0
    ),  что подтверждает правильность расчета.  Таким образом,  с  учетом
         первоначального  значения кода клиринговой валюты номер лицевого счета
         будет равен

                                30101_В84_6_0000_2900000

    Последний раз редактировалось Romsan; 13.08.2001, 16:53.
    Подавая сигналы в рог будь всегда справедлив, но строг. ©

    Комментарий


    • #3
      Короче, бумага из ЦБ РФ N 515 от 08.09.97. Называется "Порядок расчета контрольного ключа в номере лицевого счета".
      WBR

      Комментарий


      • #4
        Письмо ЦБР от 8 сентября 1997 г. N 515
        "Порядок расчета контрольного ключа в номере лицевого счета"

        Комментарий


        • #5
          Привет!

          Большое спасибо!

          Комментарий


          • #6
            Hi AVK!

            Вот работающий пример на Фоксе... можешь перписать на чем угодно...
            PHP код:
            Function  GenKeyAcc           
              param AccPict
            ,KeyWord
              
            Private m.i,Mask,TmpAcc,TmpNum,StrNum 
                 m
            .Mask='71371371371371371371371'
                 
            m.TmpAcc=KeyWord+substr(AccPict,1,8)+'0'+substr(AccPict,10)
                 
            m.TmpNum=0
                 m
            .StrNum=''
                  
            For m.i=1 to 23
                    m
            .TmpNum=m.TmpNum+val(substr(m.TmpAcc,m.i,1))*val (substr(m.Mask,m.i,1))
                  endfor
                  
            m.TmpNum=mod(m.TmpNum,10)*3
                  m
            .StrNum=alltr(str(mod(m.TmpNum,10)))
              return 
            substr(AccPict,1,8)+m.StrNum+substr(AccPict,10
            С Уважением,
            Бочманов Владимир
            Последний раз редактировалось Romsan; 16.01.2002, 11:33.

            Комментарий


            • #7
              А вот : в Excel:

              A1 = Последние три цифры БИК.
              А3 = Первые 8 цифр счета:
              С3 = Остальные:.

              =ПРАВСИМВ(3*ПРАВСИМВ(ПРАВСИМВ(7*(ПСТР($A$1;1;1))) + ПРАВСИМВ(1*(ПСТР($A$1;2;1))) + ПРАВСИМВ(3*(ПСТР($A$1;3;1))) + ПРАВСИМВ(7*(ПСТР(A3;1;1))) + ПРАВСИМВ(1*(ПСТР(A3;2;1))) + ПРАВСИМВ(3*(ПСТР(A3;3;1))) + ПРАВСИМВ(7*(ПСТР(A3;4;1))) + ПРАВСИМВ(1*(ПСТР(A3;5;1))) + ПРАВСИМВ(3*(ПСТР(A3;6;1))) + ПРАВСИМВ(7*(ПСТР(A3;7;1))) + ПРАВСИМВ(1*(ПСТР(A3;8;1))) + ПРАВСИМВ(7*(ПСТР(C3;1;1))) + ПРАВСИМВ(1*(ПСТР(C3;2;1))) + ПРАВСИМВ(3*(ПСТР(C3;3;1))) + ПРАВСИМВ(7*(ПСТР(C3;4;1))) + ПРАВСИМВ(1*(ПСТР(C3;5;1))) + ПРАВСИМВ(3*(ПСТР(C3;6;1))) + ПРАВСИМВ(7*(ПСТР(C3;7;1))) + ПРАВСИМВ(1*(ПСТР(C3;8;1))) + ПРАВСИМВ(3*(ПСТР(C3;9;1))) + ПРАВСИМВ(7*(ПСТР(C3;10;1))) + ПРАВСИМВ(1*(ПСТР(C3;11;1)))))
              Подавая сигналы в рог будь всегда справедлив, но строг. ©

              Комментарий


              • #8
                PHP код:
                create or replace function key_nps
                (
                  
                bs2    in number,
                  
                code_n in number,
                  
                n_lic  in number,
                  
                branch in number default 0,
                  
                key_first in varchar2 
                )

                return 
                number
                as

                  
                key_maker varchar2(23) := '71371371371371371371371';
                  
                acc       varchar2(23);
                  
                i number;
                  
                type tab_int is table of number index by binary_integer;
                  
                sum1 tab_int;
                  
                sum2 number := 0;
                  
                sum3 number := 0;
                  
                key number := 0;
                  
                check_sum number;
                  
                check_sum1 number;
                begin

                  key 
                := 0;

                  
                acc := key_first||
                         
                ltrim(to_char(bs2,'99990'))||
                         
                lpad(ltrim(to_char(code_n,'990')),3,'0')||
                         
                ltrim(to_char(key,'9'))||
                         
                lpad(ltrim(to_char(branch,'9990')),4,'0')||
                         
                lpad(ltrim(to_char(n_lic,'9999990')),7,'0');


                  -- 
                Рассчитывется произведение значений разрядов на соответствующие
                  
                -- весовые коэффициенты

                  
                for i in 1..23 loop
                     sum1
                (i) := to_number(substr(acc,i,1)) * to_number(substr(key_maker,i,1));
                  
                end loop;

                  -- 
                Рассчитывется сумма значений младших разрядов
                  
                -- полученных произведений

                  
                for i in 1..23 loop
                      sum2 
                := sum2 sum1(i) - (trunc(sum1(i) / 10) * 10);
                  
                end loop;

                  -- 
                Младший разряд вычисленной суммы умножаетя на 3

                  sum3 
                := (sum2 - (trunc(sum2 10) * 10)) * 3;

                  -- 
                Значение ключа равно младшему разряду получпроизведения

                  key 
                := (sum3 - (trunc(sum3 10) * 10));

                  -- 
                Проверка правильности расчета

                  
                for i in 1..23 loop
                     
                if 9 then
                       check_sum 
                := check_sum key;
                     else
                       
                check_sum := check_sum + (sum1(i) - (trunc(sum1(i) / 10) * 10));
                     
                end if;
                  
                end loop;

                  
                check_sum1 := check_sum - (trunc(check_sum 10) * 10);


                  if 
                check_sum1 0 then
                    
                return 999;
                  
                end if;

                  return 
                key
                Последний раз редактировалось Romsan; 16.01.2002, 11:28.

                Комментарий


                • #9
                  Ну, пацаны, вы раздухарились ! Вас же на SQL просили написАть !!!

                  Комментарий


                  • #10
                    Привет, dd!

                    Всем спасибо! Все уже понятно. А на SQL сам напишу, я просил, если уже есть у кого-то процедура.

                    Комментарий


                    • #11
                      Хм, а алгоритм то этот не верный!
                      вот пример:
                      БИК 046483002
                      счет 40703810800000000006

                      А по описанным алгоритмам должно получиться 5 а не 8!

                      Комментарий


                      • #12
                        To Maxim_al

                        Счета в РКЦ/ГРКЦ и ПУ в отличии от КБ ключуются не по последним трем цифрам бика, а по коду РКЦ/ГРКЦ в данном случае это код 083

                        С Уважением,
                        Бочманов Владимир

                        Комментарий


                        • #13
                          Тээкс, ясно, провери, вроде правильно. Но как тогда программно определить (да и не программно) чей это БИК ЦБ или кредитной организации???

                          Комментарий


                          • #14
                            Maxim_al

                            Три послдение цифры в БИК. от 001 до 099 (кажется) это диапазон выделен для учреждений ЦБ и особых случаев.
                            Посмотри в справочник БИК. Там одна из таблиц этому посвящена. Название не помню.

                            Комментарий


                            • #15
                              AVK если еще надо
                              PHP код:
                              Declare @bik char(10), @bikb_ char(3),@nns_ char (20),@kp_ char(1)
                              select @nns_=@Picture
                              Select 
                              @bik=(select charStatus from requester..vStatus where StatusName='BIK')
                              Select @bikb_=Right(@bik,3)
                              Select @nns_STUFF(@nns_,9,1,'0')
                              Select
                              @kp_LTrim(Str((((((ASCII(SubString(@bikb_,1,1))-48)*7)%10 + ((ASCII(SubString(@bikb_,2,1))-48)*1)%10 + ((ASCII(SubString(@bikb_,3,1))-48)*3)%10 +
                                         ((
                              ASCII(SubString(@nns_,1,1))-48)*7)%10 + ((ASCII(SubString(@nns_,2,1))-48)*1)%10 + ((ASCII(SubString(@nns_,3,1))-48)*3)%10 +
                                         ((
                              ASCII(SubString(@nns_,4,1))-48)*7)%10 + ((ASCII(SubString(@nns_,5,1))-48)*1)%10 + ((ASCII(SubString(@nns_,6,1))-48)*3)%10 +
                                         ((
                              ASCII(SubString(@nns_,7,1))-48)*7)%10 + ((ASCII(SubString(@nns_,8,1))-48)*1)%10 + ((ASCII(SubString(@nns_,9,1))-48)*3)%10 +
                                         ((
                              ASCII(SubString(@nns_,10,1))-48)*7)%10 + ((ASCII(SubString(@nns_,11,1))-48)*1)%10 + ((ASCII(SubString(@nns_,12,1))-48)*3)%10 +

                                         ((
                              ASCII(SubString(@nns_,13,1))-48)*7)%10 + ((ASCII(SubString(@nns_,14,1))-48)*1)%10 + ((ASCII(SubString(@nns_,15,1))-48)*3)%10 +
                                         ((
                              ASCII(SubString(@nns_,16,1))-48)*7)%10 + ((ASCII(SubString(@nns_,17,1))-48)*1)%10 + ((ASCII(SubString(@nns_,18,1))-48)*3)%10 +
                                         ((
                              ASCII(SubString(@nns_,19,1))-48)*7)%10 + ((ASCII(SubString(@nns_,20,1))-48)*1)%10))%10*3)%10))
                              select @Picture=stuff(@Picture,9,1,@kp_
                              Последний раз редактировалось Romsan; 16.01.2002, 11:30.

                              Комментарий


                              • #16
                                Вставил теги [РНР] [/РНР] - красивее...
                                Подавая сигналы в рог будь всегда справедлив, но строг. ©

                                Комментарий


                                • #17
                                  PaulN
                                  М-м-м-м...
                                  А циклов и массивов в этом замечательном языке нету ?

                                  Комментарий


                                  • #18
                                    Ну а как быть если надо ключ депозитарного счета посчитать?
                                    там цифры и буквы всякие и русские и латинские

                                    Или счет больше 20 знаков? в принципе это ведь не запрещено?
                                    С уважением, Максаев Андрей.

                                    Комментарий


                                    • #19
                                      AVK
                                      А DLL под Builder 5.0 не нужна случаем?
                                      Могу прислать
                                      И даже с исходниками

                                      Есть еще программулька, с командной строки
                                      Она под Watcom собиралась, но в принципе там гольный Керниган-Ричи
                                      Тоже могу прислать, и тоже с исходниками

                                      andrey_seek
                                      Если буквы - это в коде валюты, то там каждой букве есть весовой коэффициент
                                      Если счет больше 20 знаков, то отбрасывай лишние нафиг

                                      Комментарий


                                      • #20
                                        Предложения админам:

                                        Весь набор в тему файлы для загрузки. Для ленивых последующих поколений!

                                        Сергей

                                        Комментарий


                                        • #21
                                          А мне всегда было интересно, почему в качестве весовых коэффициентов взяты именно 1,3,7? это потому что, они - простые не кратные 10? ..вспоминается теория GF..

                                          Комментарий


                                          • #22
                                            ЗЫ 1 - это всегда особый случай, понятно что 10 на нее делится :-)

                                            Комментарий


                                            • #23
                                              Вот самому же и пришла в голову мысль - зачем нужны 1,3,7 - возможно так получается более равномерное распределение результата (ключа). т.е. все значения ключа равновероятны.

                                              Комментарий


                                              • #24
                                                2 Osama:
                                                1, 3, 7 - это цифры таблица умножения которых имеет некоторую отличительную особенность. Если Вы исследуете последнюю цифру из таблицы умножения этих цифр, то заметите, что она изменяется последовательно от 1 до 9. Другие цифры не подчиняются данному правилу. Это, скорее всего и послужило толчком для выбора 1 3 7.

                                                Комментарий


                                                • #25
                                                  Cost
                                                  это так, такие числа называются , если не изменяет память, то ли единицами , то ли генераторами в соответствующей группе.
                                                  А что это дает? кроме равновероятного распределения - ничего в голову не приходит.

                                                  Комментарий


                                                  • #26
                                                    А у меня где-то завалялось именно на SQL причем Informix, если надо, то поищу. Оно в базе среди остальных похоронено, но работает! Надо?

                                                    Комментарий


                                                    • #27
                                                      Во, нашел!
                                                      PHP код:
                                                        create procedure ctrl_key_schet (
                                                          
                                                      _bik varchar(10),           # бик банка
                                                          
                                                      _sch varchar(25)            # номер счета
                                                        
                                                      returning varchar(25);
                                                          
                                                      define k varchar(3);
                                                          
                                                      define m1,m2 varchar(23);
                                                          
                                                      define n integer;
                                                          if 
                                                      length(_bik)>9 then raise exception -746,0,'Ошибка в бике банка'end if
                                                          if 
                                                      length(_sch)>20 then raise exception -746,0,'Ошибка в номере счета'end if
                                                          
                                                      let k=_bik[7,9];
                                                          if (
                                                      k='000') or (k='001') or (k='002'then
                                                            let k
                                                      ='0'||_bik[5,6];
                                                          
                                                      end if
                                                          
                                                      let m1[1,3]=k;
                                                          
                                                      let _sch[9,9]='0';
                                                          
                                                      let m1[4,23]=_sch;
                                                          if 
                                                      m1[9,9]='A' then let m1[9,9]='0'end if;
                                                          if 
                                                      m1[9,9]='B' then let m1[9,9]='1'end if;
                                                          if 
                                                      m1[9,9]='C' then let m1[9,9]='2'end if;
                                                          if 
                                                      m1[9,9]='E' then let m1[9,9]='3'end if;
                                                          if 
                                                      m1[9,9]='H' then let m1[9,9]='4'end if;
                                                          if 
                                                      m1[9,9]='K' then let m1[9,9]='5'end if;
                                                          if 
                                                      m1[9,9]='M' then let m1[9,9]='6'end if;
                                                          if 
                                                      m1[9,9]='P' then let m1[9,9]='7'end if;
                                                          if 
                                                      m1[9,9]='T' then let m1[9,9]='8'end if;
                                                          if 
                                                      m1[9,9]='X' then let m1[9,9]='9'end if;
                                                          
                                                      let m2='71371371371371371371371';
                                                          
                                                      let n=0;
                                                          
                                                      let n=n+mod(m1[1,1]*m2[1,1],10);
                                                          
                                                      let n=n+mod(m1[2,2]*m2[2,2],10);
                                                          
                                                      let n=n+mod(m1[3,3]*m2[3,3],10);
                                                          
                                                      let n=n+mod(m1[4,4]*m2[4,4],10);
                                                          
                                                      let n=n+mod(m1[5,5]*m2[5,5],10);
                                                          
                                                      let n=n+mod(m1[6,6]*m2[6,6],10);
                                                          
                                                      let n=n+mod(m1[7,7]*m2[7,7],10);
                                                          
                                                      let n=n+mod(m1[8,8]*m2[8,8],10);
                                                          
                                                      let n=n+mod(m1[9,9]*m2[9,9],10);
                                                          
                                                      let n=n+mod(m1[10,10]*m2[10,10],10);
                                                          
                                                      let n=n+mod(m1[11,11]*m2[11,11],10);
                                                          
                                                      let n=n+mod(m1[12,12]*m2[12,12],10);
                                                          
                                                      let n=n+mod(m1[13,13]*m2[13,13],10);
                                                          
                                                      let n=n+mod(m1[14,14]*m2[14,14],10);
                                                          
                                                      let n=n+mod(m1[15,15]*m2[15,15],10);
                                                          
                                                      let n=n+mod(m1[16,16]*m2[16,16],10);
                                                          
                                                      let n=n+mod(m1[17,17]*m2[17,17],10);
                                                          
                                                      let n=n+mod(m1[18,18]*m2[18,18],10);
                                                          
                                                      let n=n+mod(m1[19,19]*m2[19,19],10);
                                                          
                                                      let n=n+mod(m1[20,20]*m2[20,20],10);
                                                          
                                                      let n=n+mod(m1[21,21]*m2[21,21],10);
                                                          
                                                      let n=n+mod(m1[22,22]*m2[22,22],10);
                                                          
                                                      let n=n+mod(m1[23,23]*m2[23,23],10);
                                                          
                                                      let n=mod(n,10);
                                                          
                                                      let n=n*3;
                                                          
                                                      let n=mod(n,10);
                                                          
                                                      let _sch[9,9]=n;
                                                          return 
                                                      _sch;
                                                        
                                                      end procedure
                                                      Последний раз редактировалось Romsan; 21.08.2002, 19:12.

                                                      Комментарий


                                                      • #28
                                                        2 AlexCH
                                                        читаю... что-то неуловимо знакомое чудится... никак информикс.
                                                        поднимаю глаза сообщением выше. И впрямь.
                                                        да. не перепились еще кастомеры информикса, как ibm их не пужала.

                                                        PS. у нас тоже информикс.
                                                        процедура тоже есть, не такая всеобъемлющая... Может, на эту сменю...
                                                        Спасибо.

                                                        /kiv
                                                        /kiv

                                                        Комментарий


                                                        • #29
                                                          А у нас не только эта процедура. У нас на информиксе вся система написана. Сами и написали, втроем. Вот второй год, как только на ней работаем, и четвертый - как пишем. И кстати с диасом ее срастили, диас у нас в качестве вспомогательной системы стоит. Через сервер сообщений все что у себя сделали перегружаем, и на утро 3 рабочих системы имеем, две своих (основной сервер и резервный, и диас).

                                                          Комментарий


                                                          • #30
                                                            ну а у нас только помогалки всякие - клиентбанк, пластик, факторинг, планирование корсчетов... т.е. учет ведем в бисквите, а интерфейсы проще на дельфи писать - вот и потребовалась устойчивая и быстрая база с небольшими требованиями к ресурсам... и недорогая
                                                            А ключ я на входе в кл-банк проверяю. А то клиенты у себя отключают контроль иногда.

                                                            /kiv
                                                            /kiv

                                                            Комментарий

                                                            Пользователи, просматривающие эту тему

                                                            Свернуть

                                                            Присутствуют: 2. Участников: 0, гостей: 2.

                                                            Обработка...
                                                            X