powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Расчёт контрольного ключа в лицевом счёте.
5 сообщений из 5, страница 1 из 1
Расчёт контрольного ключа в лицевом счёте.
    #38842605
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет
У кого-нибудь есть пример расчёта контрольного ключа в лицевом счёте? Что-то не нашёл в гугле.
...
Рейтинг: 0 / 0
Расчёт контрольного ключа в лицевом счёте.
    #38842610
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisне нашёл в гугле. быть такого не может
...
Рейтинг: 0 / 0
Расчёт контрольного ключа в лицевом счёте.
    #38842630
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, я имел в виду может у кого пример кода есть
...
Рейтинг: 0 / 0
Расчёт контрольного ключа в лицевом счёте.
    #38842635
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisShocker.Pro, я имел в виду может у кого пример кода есть и?
...
Рейтинг: 0 / 0
Расчёт контрольного ключа в лицевом счёте.
    #38843190
Сергей В.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
		/// <summary>
		/// Расчет ключа в номере счета
		/// </summary>
		/// <param name="mfo">БИК банка</param>
		/// <param name="accnt">Номер счете, в котором расчитывается ключ</param>
		/// <returns></returns>
		public static string GetAccntKey(string mfo, string accnt)
		{
			if (accnt.Length != 20 || mfo.Length != 9)
				return string.Empty;

			string s = accnt.Left(8) + '0' + accnt.Substring(9);

			int[] keys = { 7, 1, 3 };

			char key = s[5];
			if (!key.IsNumeric())
			{
				int pos = "ABCDEHKMPTX".IndexOf(key);
				if (pos == -1)
					return string.Empty;
				else
					s = s.Left(5) + pos.ToString() + s.Substring(6);
			}

			s = BankNum(mfo) + s;
			int k = 0;
			for (int i = 0; i <= 22; i++)
			{
				int pos = (i + 1) % 3;
				if (pos == 0) pos = 3;

				k += (s[i].ToIntOrDefault() * keys[pos - 1]).ToString().Right(1).ToIntOrDefault();
			}
			k = (k.ToString().Right(1).ToIntOrDefault() * 3).ToString().Right(1).ToIntOrDefault();
			return accnt.Left(8) + k.ToString() + accnt.Substring(9);
		}

		public static bool IsRkc(string mfo)
		{
			switch(mfo.Right(3))
			{
				case "000":
				case "001":
				case "002":
					return true;
				default:
					return false;
			}

		}

		public static string BankNum(string mfo)
		{
			if (IsRkc(mfo))
				return '0' + mfo.Substring(4, 2);
			else
				return mfo.Right(3);
		}

		public static string Left(this string str, int lenght)
		{
			return str.Substring(0, lenght > str.Length ? str.Length : lenght);
		}

		public static string Right(this string str, int lenght)
		{
			return str.Substring(str.Length - (lenght > str.Length ? str.Length : lenght));
		}
		public static int ToIntOrDefault(this string str)
		{
			int result;
			if (int.TryParse(str, out result))
				return result;
			return 0;
		}

Shocker.Pro,
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Расчёт контрольного ключа в лицевом счёте.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]