» | Казахстанский Бухгалтерский форум www.balans.kz | Алгоритм формирования СИКа |
|
Показать сообщения: Начиная со старых .::. Начиная с новых |
Автор: | Нерезидент Баланса |
Добавлено: | #1  Сб Мар 04, 2006 16:28:26 |
Заголовок сообщения: | Алгоритм формирования СИКа |
База знаний http://balans.kz/viewtopic.php?p=283220#283220 Доброго всем времени суток. Разыскивается алгоритм проверки/формирования СИКа. Пожалуйста, не отсылайте к различным программам генерации СИК (вроде SPC_Check), нужен именно АЛГОРИТМ. Заранее спасибо всем откликнувшимся. |
Автор: | Нерезидент Баланса |
Добавлено: | #2  Сб Мар 04, 2006 17:07:27 |
Заголовок сообщения: | |
г-н Карабинер...а вы что нибудь слышали о модульном программировании ? |
Автор: | Talik |
Добавлено: | #3  Вс Мар 05, 2006 01:31:43 |
Заголовок сообщения: | |
Эту тему так недавно бурно обсуждали... |
Автор: | Нерезидент Баланса | ||
Добавлено: | #4  Вс Мар 05, 2006 08:47:18 | ||
Заголовок сообщения: | |||
Если Вы о модуле tsric321.dll, то мне от него никакого толку. Я всего лишь хочу вставить в 1С кнопочку, которая будет проверять корректность СИКа, а вышеуказаная дллка не подключается к 1С ни под каким видом. |
Автор: | Нерезидент Баланса | ||
Добавлено: | #5  Вс Мар 05, 2006 13:09:42 | ||
Заголовок сообщения: | |||
гм...если вы с Алматы, рекомендую глянуть конфигурацию Иманали...если с Астаны, гляньте Универсал, Спектрум, Бухгалтерский учет...все подключается, все работает... мои знания о конфигурациях ограничены, может быть есть еще другие, где вышеуказанная ДЛЛ подключается и проверяет СИК.... также аналогичный функционал существует для общеказахстанской конфигурации "Бухучет для РК".... |
Автор: | Граур Станислав | ||||
Добавлено: | #6  Пн Мар 06, 2006 08:15:10 | ||||
Заголовок сообщения: | |||||
Легко подключается например
|
Автор: | Нерезидент Баланса | ||
Добавлено: | #7  Пн Мар 06, 2006 08:16:43 | ||
Заголовок сообщения: | |||
В конфигурации "Бухгалтерия для Казахстана" ничего подобного нет, там есть проверка корректности РНН. А насчет остальных, спасибо, посмотрю. |
Автор: | Нерезидент Баланса | ||
Добавлено: | #8  Пн Мар 06, 2006 08:43:19 | ||
Заголовок сообщения: | |||
Ну если легким можно назвать подключение через седьмое колено, тогда пожалуй. Спасибо, попробую все это провернуть. Но как я понял генерировать СИК все-таки не получается (я это к тому, что многих бухгалтеров аж в дрожь бросает, когда они начинают вводить СИК, а было бы неплохо: ввел ФИО, дату рождения и оп-ля СИК уже есть). |
Автор: | Технический |
Добавлено: | #9  Пн Мар 06, 2006 10:10:15 |
Заголовок сообщения: | |
(8)Разберем проблему почему у Вас, не подключается библиотека сика? Винда? Код? |
Автор: | Нерезидент Баланса |
Добавлено: | #10  Пн Мар 06, 2006 10:28:14 |
Заголовок сообщения: | |
г-ну Карабинеру - почему не получается генерить СИК ? ТРС321.ДЛЛ служит как для проверки так и для генерации СИК...в типовой поставке ЕТК этого функционала нету, он распространяется отдельно за доплату многими франчами...наскока я знаю... подключение достаточно легкое...несколько строк... странный вы кодер...все вам в рот положи и разжуй...не пробовали мыслить креативно ? найти образец, обработать напильником.... г-ну Грауру...можно и так как вы описали...недостаток - ручная регистрация динврап.ДЛЛ...хотя еще кажется со времен Вин3.11 существуют саморегистрирующиеся ДЛЛ (self-register)... |
Автор: | Граур Станислав | ||
Добавлено: | #11  Пн Мар 06, 2006 11:00:40 | ||
Заголовок сообщения: | |||
1) Это работает 2) ДинВрап не моя dll :-( 3) Как сделать self-register dll я не знаю потому как см.п.1 Кто предложит более другой код и красивый код ? По поводу генерации СИК в сети (http://web.host.kz/alexor/FAQs.htm)есть версия tsric которая генерит СИК |
Автор: | Нерезидент Баланса |
Добавлено: | #12  Пн Мар 06, 2006 22:22:09 |
Заголовок сообщения: | |
г-ну Грауру... Погонял я эти функции и так и сяк и получил неутешительные результаты: при наличии ФИО, даты рождения и ЛЮБОГО СИКа получается результат "СИК корректен", ошибки вылетают только при отсутствии какого-либо реквизита. Ну неужели никто не знает алгоритм генерации, по-моему это лучше всяких *.dll? |
Автор: | Нерезидент Баланса |
Добавлено: | #13  Пн Мар 06, 2006 22:33:33 |
Заголовок сообщения: | |
конечно, знают...обратитесь в МТиСЗН...узнаете много о себе нового... |
Автор: | Нерезидент Баланса | ||
Добавлено: | #14  Пн Мар 06, 2006 22:58:42 | ||
Заголовок сообщения: | |||
Я конечно не претендую на всезнание, но насколько я в курсе внешние библиотеки подключаются к 1С как внешние компоненты (ВК) или как OLE/COM объекты. Как ВК tsric321.dll не подключается, поскольку не соответствует стандартам ВК для 1С, как OLE/COM объекты тоже не работает, в связи с отсутствием точек входа, с динВрап похоже запускается в каком-то урезанном виде. P.S. Вопрос администратору: а где кнопочка "правка сообщения"? |
Автор: | Нерезидент Баланса |
Добавлено: | #15  Вт Мар 07, 2006 00:30:47 |
Заголовок сообщения: | |
ну что ж...тогда рекомендую заплатить специалисту... |
Автор: | Граур Станислав | ||
Добавлено: | #16  Вт Мар 07, 2006 10:13:04 | ||
Заголовок сообщения: | |||
В каком месте она обрезана ? Мне сейчас лень смотреть какие еще функции есть в tsric - я подключил только нужные _мне_. To Starican: Ты прав, ты как всегда прав... |
Автор: | Технический | ||
Добавлено: | #17  Вт Мар 07, 2006 12:08:52 | ||
Заголовок сообщения: | |||
|
Автор: | Технический | ||
Добавлено: | #18  Вт Мар 07, 2006 12:10:51 | ||
Заголовок сообщения: | |||
|
Автор: | Нерезидент Баланса | ||
Добавлено: | #19  Вт Мар 07, 2006 22:28:03 | ||
Заголовок сообщения: | |||
г-ну Грауру... Исходя из спецификаций, tsric321.dll должен генерировать СИК и сравнивать его с исходным СИКом, а этого как раз и не происходит. Исходный СИК (если он длинной 16 символов (даже такой: 1234567891234567) и не содержит ничего лишнего) просто прогоняется через tsric321.dll и на выходе мы получаем "0" (т.е. ошибок нет). А все "ошибки" появляющиеся вследствии выполнения вышеупомянутых функций являются только лишь доказательством Вашей высокой квалификации, но к сожалению всё это делается средствами 1С и tsric321.dll в этом никак не участвует. |
Автор: | Нерезидент Баланса |
Добавлено: | #20  Ср Мар 08, 2006 01:34:59 |
Заголовок сообщения: | |
г-ну Лоссу. Да, Старикан прав не всегда. г-ну Карабинеру. Еще раз настойчиво рекомендую найти и просмотреть конфигурацию/и, где это функционал уже реализован...ИЛИ же - плюнуть слюной на все это...отмазавшись тем, что СКОРО СИКи будут отменены... |
Автор: | Elis | ||
Добавлено: | #21  Ср Мар 08, 2006 12:49:23 | ||
Заголовок сообщения: | |||
Откуда такие сведения...? |
Автор: | Нерезидент Баланса |
Добавлено: | #22  Ср Мар 08, 2006 13:06:49 |
Заголовок сообщения: | |
дык...это уже не сведения, а баян ваще-то...слыхали про ИН/БИН ? |
Автор: | Нерезидент Баланса | ||
Добавлено: | #23  Пт Мар 10, 2006 08:40:41 | ||
Заголовок сообщения: | |||
А поподробнее... |
Автор: | Нерезидент Баланса |
Добавлено: | #24  Пт Мар 10, 2006 08:58:39 |
Заголовок сообщения: | |
СИК (для ФЛ), РНН (для ФЛ, ЮЛ), и IDKAZ (для ФЛ) будет заменен ЕДИНЫМ номером - для ФЛ - ИН (идентификационный номер, будет тока из цыфр), для ЮЛ - БИН (бизнес-идентификационный номер, тоже тока из цыфр)... |
Автор: | Elis |
Добавлено: | #25  Пт Мар 10, 2006 16:29:00 |
Заголовок сообщения: | |
Застрелиться... Деньги им девать некуда... |
Автор: | Нерезидент Баланса |
Добавлено: | #26  Пт Мар 10, 2006 16:32:42 |
Заголовок сообщения: | |
напротив, все очень логично - в проэкте...вместо ТРЕХ разномастных идентификаторов, идентифицирующих ФЛ/ЮЛ в базах НК, МВД, ГЦВП, мы получаем ОДИН идентификатор во ВСЕХ базах, ОДНОЗНАЧНО идентифицирующий ФЛ/ЮЛ...вот тока переходный период будет - застрелицца (ИМХО)... |
Автор: | Нерезидент Баланса | ||
Добавлено: | #27  Сб Мар 11, 2006 07:56:38 | ||
Заголовок сообщения: | |||
Во-во... Крючкотворы, с чугунными мозгаии... |
Автор: | Нерезидент Баланса |
Добавлено: | #28  Сб Мар 11, 2006 13:27:12 |
Заголовок сообщения: | |
гн- Карабинер, это же наша работа...не было бы крючкотворов, чем бы мы занимались ? ээээээ, вижу, вы впали в отчаяние...если вы в Астане, можете подъехать в мою берлогу...пиво с вас - покажу как сделать СИКи...да, и кстати, в какую конфу сие надо врезать - не мешало бы знать...и какой клиент - тоже... |
Автор: | Нерезидент Баланса |
Добавлено: | #29  Сб Мар 11, 2006 21:20:05 |
Заголовок сообщения: | |
Нееее... мы не впали в отчаяние. Просто хотелось сделать людям приятное, но раз алгоритм СИКа является государственной тайной... ну что ж, пусть мучаются. Насчет берлоги... мы ж не столичные, местечковые; а конфа моя, и клиентов немало... |
Автор: | Нерезидент Баланса |
Добавлено: | #30  Сб Мар 11, 2006 21:37:40 |
Заголовок сообщения: | |
вот еще сцылка - прога проверки СИКа (АС 'Прием отчислений в банках')...http://www.bi.kz/downloads.php.... а в какой туманности галактики находится ваше местечко ? ну что тут делать ? присылайте конфу...помогу...ессстно, на даром...безналичные платежи из вашего уголка вселенной доходят до центра галактики аль нет ?..дальнейшие разговоры в личку... |
Автор: | d.Fedor | ||
Добавлено: | #31  Пн Мар 13, 2006 09:29:24 | ||
Заголовок сообщения: | |||
Я бы не советовал, проверка, это нормально, но формирование... Во первых частенько при формирование присутствуют ошибки, неправильные буквы, смена фамилиии и т.п. Ну и будут вам звонки типа не работает, деньги дерете.... |
Автор: | Нерезидент Баланса |
Добавлено: | #32  Вт Мар 14, 2006 13:29:33 |
Заголовок сообщения: | |
Однако многие требуют... |
Автор: | d.Fedor |
Добавлено: | #33  Вт Мар 14, 2006 14:51:35 |
Заголовок сообщения: | |
В сад, то биш к пенсионному фонду. Я спокойно даю номер телефона ГПНФ и советую потребовать у них... Вопрос как-то снимаеться сам собой. Повторюсь, даже если раздобыть алгоритм, будет больше проблем. При введение Сиков была неразбериха, я это хорошо помню. Очень часто были ошибки, особенно в фамилиях. Потом проблемы возникали при передаче платежей, бухгалтер то вводил нормальные паспортные данные (чаще всего), а у человека при формирование сика ошиблись с буквой в фамилии, в итоге сик другой. Ну ладно человек пошел, оббил пороги исправил, другой махнул рукой, потом пошел на другую работу и снова эпопея и головная боль бухгалтера с возвращенными суммами... Здесь картинка будет та-же.... |
Автор: | Нерезидент Баланса |
Добавлено: | #34  Сб Мар 18, 2006 08:46:00 |
Заголовок сообщения: | |
Поставил кнопку вызова SPC_gen, так что, если бухгалтер не очень ленивый, сможет проверить СИК. |
Автор: | Нерезидент Баланса |
Добавлено: | #35  Пн Мар 27, 2006 17:39:39 |
Заголовок сообщения: | |
Не про СИК,зато про генерацию,мож ктонить чёнить видел по генерации РНН |
Автор: | Технический |
Добавлено: | #36  Пн Мар 27, 2006 20:31:15 |
Заголовок сообщения: | |
(35) |
Автор: | Нерезидент Баланса |
Добавлено: | #37  Вт Мар 28, 2006 09:56:12 |
Заголовок сообщения: | |
to 36 Пасиба |
Автор: | Нерезидент Баланса | ||
Добавлено: | #38  Чт Янв 10, 2008 14:02:11 | ||
Заголовок сообщения: | |||
Эта ваша dll кривая в *, при многопоточном режиме она рушится, потому как руки ни из того места растут у того, кто ее собирал. При просмотре в отладчике прекрасно видно, что она не поддерживает многопоточности. Если уж этот алгоритм такая тайна, покрытая мраком, то давайте хоть DLL правильно под ось 32 соберем. Или для каждой платформы сделали бы либы, а лучше реализовали на java :). Сразу видно госконтора со студентами. |
Автор: | Serp | ||||
Добавлено: | #39  Вс Ноя 23, 2008 20:01:17 | ||||
Заголовок сообщения: | Алгоритм СИК, из недр инета... | ||||
Пожалте сударь! #*** #include <string.h> #include <stdio.h> typedef unsigned long UL; typedef unsigned char UC; UC T2[] = { 0x06,0x0C,0x08,0x04,0x0F,0x01,0x09,0x02,0x0A,0x0E,0x05,0x07,0x00,0x0B,0x03,0x0D, 0x05,0x0F,0x04,0x0D,0x00,0x07,0x0A,0x03,0x0E,0x0C,0x01,0x02,0x08,0x06,0x0B,0x09, 0x0A,0x08,0x01,0x0E,0x0B,0x02,0x03,0x00,0x0F,0x06,0x04,0x09,0x07,0x0C,0x05,0x0D, 0x07,0x0F,0x0A,0x0B,0x03,0x01,0x0D,0x08,0x04,0x05,0x0C,0x09,0x00,0x0E,0x02,0x06, 0x03,0x0C,0x07,0x0E,0x0D,0x01,0x05,0x0F,0x09,0x04,0x08,0x02,0x0B,0x00,0x06,0x0A, 0x09,0x0E,0x0B,0x02,0x0D,0x00,0x0C,0x0F,0x01,0x06,0x08,0x04,0x03,0x0A,0x07,0x05, 0x0C,0x03,0x06,0x09,0x05,0x08,0x0A,0x02,0x00,0x0D,0x0F,0x07,0x01,0x0E,0x0B,0x04, 0x0F,0x09,0x07,0x08,0x01,0x0E,0x04,0x06,0x0B,0x00,0x0C,0x02,0x0D,0x03,0x0A,0x05}; const char *CharValue = "0123456789ABCDEFGHJKMNPRSTUVWXYZ"; UC T1[32]; UC Data[128]; UC WorkByte[8]; UC M1[64]; UL ConvertValue1(UL Value){ UC Bv[8]; UL Tv; UC Tb; Tv = Value; for( int i=0; i<4; i++ ){ Bv[i*2] = (Tv & 0x0F); Bv[i*2+1] = ((Tv & 0xF0) >> 4); Tv >>= 8; } for( int i = 0; i < 8; i++ ) { Tb = Bv[i]; Bv[i] = T2[i * 16 + Tb]; } Tv = 0; for( int i = 3; i >= 0; i-- ) { Tv <<= 8; Tv = Tv | Bv[i*2]; Tv = Tv | (Bv[i*2+1] << 4); } return Tv; } UL ConvertValue2(UL Value) { UL Tv; Tv = Value; for( int i = 0; i < 11; i++ ) { if( (Tv & 0x80000000L) == 0 ) { Tv += Tv; } else { Tv += Tv; Tv |= 1; } } return Tv; } void MyTestData(const char* sData, char *Ric ) { strcpy( Ric, "000000000000000T" ); memset( WorkByte, 0, sizeof(WorkByte)); memset( T1, 0xF0, sizeof(T1) ); memset( Data, 32, sizeof(Data) ); int sLength = (int)strlen(sData); for( int i = 0; i < sLength; i++ ) { Data[i] = sData[i]; } UC B = sLength / 32; if( (sLength % 32) != 0 ) B++; for( int j = 1; j <= B; j++ ) { unsigned int Ost = 0; for( int i = 31; i >= 0; i-- ) { unsigned int Temp = T1[i] + Data[(j-1)*32+i] + Ost; T1[i] = Temp & 0xFF; if( Temp > 0xFF ) { Ost = 1; } else { Ost = 0; } } } int Kd8 = sLength / 8; if( (sLength % 8) != 0 ) Kd8++; for( int Main = 0; Main < Kd8; Main++ ) { for( int i = 0; i <= 7; i++ ) WorkByte[i] ^= Data[8 * Main + i]; for( int i = 0; i <= 7; i++ ) { UL V1 = WorkByte[0] + (WorkByte[1] << 8) + (WorkByte[2] << 16) + (WorkByte[3] << 24); UL V2 = T1[i*4] + (T1[i*4+1] << 8) + (T1[i*4+2] << 16) + (T1[i*4+3] << 24); V1 = V1 + V2; V1 = ConvertValue1(V1); V1 = ConvertValue2(V1); V2 = WorkByte[4] + (WorkByte[5] << 8) + (WorkByte[6] << 16) + (WorkByte[7] << 24); V1 = V1 ^ V2; for( int j = 0; j <=3; j++ ) WorkByte[4 + j] = WorkByte[j]; WorkByte[0] = (V1 & 0xFF); WorkByte[1] = ((V1 >> 8) & 0xFF); WorkByte[2] = ((V1 >> 16) & 0xFF); WorkByte[3] = ((V1 >> 24) & 0xFF); } for( int i = 0; i <= 6; i++ ) { UL V1 = WorkByte[0] + (WorkByte[1] << 8) + (WorkByte[2] << 16) + (WorkByte[3] << 24); UL V2 = T1[i*4] + (T1[i*4+1] << 8) + (T1[i*4+2] << 16) + (T1[i*4+3] << 24); V1 = V1 + V2; V1 = ConvertValue1(V1); V1 = ConvertValue2(V1); V2 = WorkByte[4] + (WorkByte[5] << 8) + (WorkByte[6] << 16) + (WorkByte[7] << 24); V1 ^= V2; for( int j = 0; j <= 3; j++ ) WorkByte[j+4] = WorkByte[j]; WorkByte[0] = (V1 & 0xFF); WorkByte[1] = ((V1 >> 8) & 0xFF); WorkByte[2] = ((V1 >> 16) & 0xFF); WorkByte[3] = ((V1 >> 24) & 0xFF); } UL V1 = WorkByte[0] + (WorkByte[1] << 8) + (WorkByte[2] << 16) + (WorkByte[3] << 24); UL V2 = T1[28] + (T1[29] << 8) + (T1[30] << 16) + (T1[31] << 24); V1 += V2; V1 = ConvertValue1(V1); V1 = ConvertValue2(V1); V2 = WorkByte[4] + (WorkByte[5] << 8) + (WorkByte[6] << 16) + (WorkByte[7] << 24); V1 ^= V2; WorkByte[4] = (V1 & 0xFF); WorkByte[5] = ((V1 >> 8) & 0xFF); WorkByte[6] = ((V1 >> 16) & 0xFF); WorkByte[7] = ((V1 >> 24) & 0xFF); } memset(M1, 0, sizeof(M1)); for( int i = 0; i <= 7; i++ ) { UC B = WorkByte[i]; UC C = 0x80; for(int j=0; j<=7; j++) { if( (B & C) == 0 ) M1[i*8+j] = 0; else M1[i*8+j] = 1; C>>=1; } } for(int i=0; i<=11; i++) { UC B = M1[i*5]+(M1[i*5+1]<<1)+(M1[i*5+2]<<2)+(M1[i*5+3]<<3)+(M1[i*5+4]<<4); Ric[i] = CharValue[B]; } B = (M1[60]<<1)+(M1[61]<<2)+(M1[62]<<3)+(M1[63]<<4); UC j1 = 0; for( int i = 0; i <= 63; i++ ) if( M1[i] == 1 ) j1++; j1 &= 1; B |= j1; Ric[12] = CharValue[B]; } void MyTestRic(char *Ric){ UL f = 0; for( int i = 0; i <= 14; i++ ){ f+=Ric[i] * (i + 1); } f%=31; Ric[15]=CharValue[f]; Ric[16]=0; } void main( argc, argv ) int argc; char *argv[]; { char Dta[256]; char Ric[256]; strcpy( Dta, "ФФФФФИИИИИООООО31121980" ); strcpy( Ric, "000000000000000T" ); MyTestData( argv[1], Ric ); MyTestRic( Ric ); printf( "%s\n", Ric ); } #*** Вопросик только есть - стандарт СТ РК 1048 - работать НЕ будет? Хто скажет? |