Author Archives: RY

Ошибки активации MS Office из-за проблем с WMI

Пару недель назад столкнулся с одной интересной проблемой, о которой наконец-то собрался написать, хотя некоторые технические детали уже забылись. В общем, обратился ко мне клиент с очень простой просьбой: установить пакет Microsoft Office на его не так давно приобретенный ноутбук. На ноутбуке оказалась установленная производителем лицензионная Windows 10 Home, а также когда-то стояла ознакомительная версия MS Office 2016, которую клиент не совсем корректно удалил после окончания пробного периода.

Поскольку мне больше всего нравится версия офиса 2010 года, то именно эту версию я и решил установить (на самом деле моя любимая версия — Office 2003, но увы, рано или поздно приходится использовать то, что навязывает конъюнктура софтового рынка). Попытка установки окончилась выдачей сообщения об ошибке (к сожалению, код и описание ошибки уже не вспомню) и откатом установки. Причем скачивание другого дистрибутива и попытка его использования привели к тому же результату.

Решив, что причиной может быть некорректное удаление ранее установленного Office 2016, воспользовался официальным средством для полного удаления офисных продуктов от Microsoft, которое можно взять здесь. В моем случае это тоже не помогло, но кому-то может пригодиться.

После этого оставил попытки установить 2010 версию и заново поставил Office 2016. Проблемы начались при попытке активировать установленный пакет. К сожалению, не могу вспомнить текст получаемых сообщений и тем более коды ошибок, но факт в том, что все попытки активации заканчивались сообщением об ошибке. Для нахождения путей обхода проблемы были даже испробованы широко известные активаторы типа KMSAuto, KMSAutoNet, AAct разных версий, но и они не принесли желаемого результата. Абсолютно все активаторы выдавали сообщение об ошибке не только при попытке активации, но даже при считывании информации о текущем состоянии лицензирования установленного пакета. Номера ошибок, как вы уже поняли, я не запомнил (хотя если не поленюсь и посмотрю историю браузера на домашнем компьютере, то, возможно, внесу уточнения в статью).

В конце концов я добрался до командной строки и скрипта активации офиса, чтобы хоть как-то понять причину непонятного поведения компьютера. Кто еще не знает, активация пакета, получение информации об активации и другие действия возможны с помощью скрипта ospp.vbs, который обычно расположен в папке C:\Program Files\Microsoft Office\Office# или C:\Program Files (x86)\Microsoft Office\Office#. Вместо знака # в реальном пути будут стоять цифры, указывающие на установленную версию офиса (для офиса 2010 — 14, для 2013 — 15, для 2016 — 16).

Синтаксис команды запуска скрипта следующий:

cscript ospp.vbs [Option:Value] [ComputerName] [User] [Password]

Три последних параметра нас не интересуют, а список опций можно получить командой

cscript ospp.vbs /?

Так вот, запуск этого скрипта с подавляющим большинством параметров также заканчивался ошибкой. Конечно же, код ее за прошедшие недели уже стерся из моей памяти (но мог остаться в памяти браузера, так что позже попробую «вспомнить»).

Поиск по номеру ошибки в интернете навел на мысль, что причиной может служить некая проблема с WMI. Технология WMI (Windows Management Instrumentation) создавалась для контроля различных частей компьютерной инфраструктуры под управлением Windows. Проблемы в работе этой службы и ее компонентах могут быть причиной самых неожиданных ошибок. К счастью, «все уже украдено до нас»: интернет дает готовые рецепты для устранения неполадок WMI.

Во-первых, стоит проверить наличие и работу службы Winmgmt (название службы — Windows Management Instrumentation или Инструментарий управления Windows). В моем случае служба присутствовала и была запущена. Далее для проверки работы службы можно использовать оболочку Powershell и попробовать в ней обратиться с любым запросом к WMI, например, командой

get-wmiobject Win32_OperatingSystem

Данная команда должна вывести информацию об установленной операционной системе. В моем случае результатом было очередное сообщение об ошибке, что указывало на проблему с WMI.

Подробная диагностика службы WMI может быть выполнена официальной утилитой  WMIDiag от Microsoft. Это скрипт, который проверяет различные подсистемы WMI и записывает собранную информацию в лог-файл. В 64-битных версиях Windows скрипт нужно запускать командой

c:\windows\System32\cscript.exe wmidiag.vbs

иначе вы получите ошибку WMIDiag must be run from native 64-bit environment.

Впрочем, диагностика с помощью WMIDiag довольно сложна, поскольку требует анализа большого количества собранных данных. Гораздо проще выполнить несколько действий, позволяющих «сбросить и обновить» систему WMI. Начать стоит с более простого и безопасного варианта — перерегистрации нужных служб и dll, а также перекомпиляции файлов mof. Это можно сделать с помощью командного файла следующего содержания:

sc config winmgmt start=disabled
net stop winmgmt
cd %windir%\system32\wbem
for /f %%s in ('dir /b *.dll') do regsvr32 /s %%s
wmiprvse /regserver
winmgmt /regserver
sc config winmgmt start=auto
net start winmgmt
for /f %%s in ('dir /b *.mof') do mofcomp %%s
for /f %%s in ('dir /b *.mfl') do mofcomp %%s

Запускать командный файл следует с правами администратора. После завершения работы скрипта надо перезагрузить компьютер.

Если данный вариант не помог (мне он не помог), можно перейти к более сложному шагу — пересозданию репозитория WMI. Репозиторий (то есть хранилище) находится в каталоге %windir%\System32\Wbem\Repository и представляет собой базу данных, в которой содержится информация о метаданных и определениях WMI классов. Само собой разумеется, что при повреждении этой базы данных WMI может работать со сбоями. Однако пересоздание репозитория WMI может нарушить работу некоторых установленных программ, потому что все записи в базе WMI сбросятся до состояния чистой системы. В таком случае неработающие программы придется переустанавливать.

Начиная с Windows Vista, можно проверить целостность репозитория WMI  с помощью команды

winmgmt /verifyrepository

Если команда возвращает состояние INCONSISTENT, стоит попробовать команду «лечения» репозитория, после которой следует перезапустить службу Winmgmt:

Winmgmt /salvagerepository
net stop Winmgmt
net start Winmgmt

Если «лечение» не помогло, можно обнулить репозиторий:

Winmgmt /resetrepository

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

sc config winmgmt start=disabled 
net stop winmgmt 
cd %windir%\system32\wbem 
winmgmt /kill 
winmgmt /unregserver 
winmgmt /regserver 
winmgmt /resyncperf 
if exist RepBackup rd RepBackup /s /q 
rename Repository RepBackup 
regsvr32 /s %systemroot%\system32\scecli.dll 
regsvr32 /s %systemroot%\system32\userenv.dll 
for /f %%s in ('dir /b *.dll') do regsvr32 /s %%s 
for /f %%s in ('dir /b *.mof') do mofcomp %%s 
for /f %%s in ('dir /b *.mfl') do mofcomp %%s 
sc config winmgmt start=auto 
net start winmgmt 
wmiprvse /regserver

Данный набор команд полностью пересоздаст хранилище WMI, сохранив старую копию в папке RepBackup. После окончания работы скрипта компьютер нужно перезагрузить.

После полного пересоздания репозитория WMI мне наконец-то удалось запустить и успешно провести активацию установленного офисного пакета. Хочу заметить, что при просмотре содержимого папки C:\Windows\System32\Wbem\Repository в программе Total Commander я видел лишь пустую папку даже при включенном в программе отображении всех скрытых и системных файлов. Из-за этого я поначалу решил, что попытки пересоздать репозиторий ни к чему не привели. Однако оказалось, что папка на самом деле не пуста, а «Проводник» содержимое папки прекрасно отображает.

Share

Устраняем проблемы с ЭЦП ФСЗН

В этой заметке будет приведена простая последовательность действий, которая во многих случаях помогает безболезненно устранить проблемы с использованием электронной цифровой подписи (ЭЦП) и ключей ФСЗН. Сразу обращу ваше внимание, что проблемы со входом и авторизацией на портале ФСЗН при успешно работающей ЭЦП в этой статье не рассматриваются. Так что если вы можете подписать свои документы, но не можете зайти или авторизоваться на портале, читайте другие материалы в этом блоге:

Настройка работы с порталом ФСЗН в Windows 10

Снова Windows 10 и порталы госорганизаций (МНС, ЭСЧФ, ФСЗН)

Как бороться с ошибками портала ФСЗН?

Впрочем, одним из условий работы с порталом является правильно установленное, настроенное и исправно работающее программное обеспечение для ЭЦП. Если вы не можете войти в программу формирования ЭЦП или, войдя, подписать нужную пачку документов, то читайте дальше.

Для формирования ЭЦП используются удостоверяющие сертификаты, соответствующие им криптографические ключи, сохраненные на специальных носителях, а также криптографическое программное обеспечение (ПО). Ранее выдачей сертификатов и ключей занимался сам фонд, причем ключи предоставлялись пользователям бесплатно. С 1 апреля 2017 года ФСЗН перестал выдавать собственные сертификаты и ключи для ЭЦП. Все новые ключи выдаются учреждением ГосСУОК и только на платной основе. Ключи от ГосСУОК универсальные, с их помощью можно подписывать документы и авторизоваться в программах и на порталах МНС, ФСЗН, ЭСЧФ, Госкомстата, Белгосстраха и т.д. Но пока еще в организациях страны используется значительное количество сертификатов и ключей, выданных ранее Фондом соцзащиты. Их можно использовать до окончания срока действия сертификата. Ключи от ФСЗН хранились на обычных флешках, ключи от ГосСУОК хранятся на специальном носителе, который только внешне напоминает флешку.

Для использования ЭЦП необходимо установить на компьютер специальное ПО: программу работы с ЭЦП ПСКЗИ АСУ ПУ в случае использования старых ключей, выданных ФСЗН, или автоматизированное рабочее место плательщика ИОК КАИС Фонда при работе с новыми ключами ГосСУОК. При установке данного ПО из инсталляционных пакетов, скачиваемых с сайта ФСЗН (ссылки будут приведены ниже), на компьютер также устанавливается криптопровайдер «Авест» (Avest).

Проблемы с ЭЦП чаще всего встречаются на тех компьютерах, где помимо ПО для работы с ЭЦП Фонда соцзащиты населения установлены другие программы, также использующие ЭЦП. На сегодняшний день цифровые подписи требуются для работы с банками, электронными счетами-фактурами, для предоставления отчетности в МНС, Госкомстат и другие организации. Однако каждая из организаций может использовать различные версии криптографического ПО, а их совместное использование часто приводит к нарушению работы ЭЦП.

Итак, если вы не можете подписать пачку документов, получаете сообщение об ошибке при входе в программу или в момент подписи, не видите свой криптографический ключ и т.п., то причин обычно не так уж много:

  1. Неправильно установленное ПО для работы с ЭЦП.
  2. Конфликт версий установленного ПО.
  3. Не установленный или прекративший действие сертификат.

В первых двух случаях ошибки обычно проявляются уже при входе в программу или в момент подписи документа. Например, пользователь получает сообщения «Ошибка AvFundCrypt», «Ошибка AvCryptMail», «Ошибка при вызове функции Win32 API». В таких случаях поможет правильная установка нужных версий программного обеспечения. Выполняем следующие шаги (рассматриваем пример для старых ключей ФСЗН):

  1. Удаляем установленное ПО от ФСЗН. Для этого заходим в Панель управления, находим там пункт «Удаление программ» (либо «Программы и компоненты», «Установка и удаление программ» — в зависимости от версии операционной системы и вида Панели управления). Находим в списке программ и поочередно удаляем:
    — Клиентское ПО ПСКЗИ АСУ ПУ для плательщиков ФСЗН;
    — Avest CSP for BelSSF (обращаем внимание на номер версии, скорее всего там будет v5.1.0.647);
    — Avest CSP более свежих версий, например v6.2.0.773.
  2. Перезагружаем компьютер. Обратите внимание, что менеджеры сертификатов мы не удаляли — они будут работать и после переустановки криптографического ПО.
  3. Заходим на эту страницу сайта ФСЗН со списком необходимого ПО и скачиваем:
    — в случае старых ключей, полученных в ФСЗН — программу работы с ЭЦП ПСКЗИ АСУ ПУ;
    — при наличии новых ключей, полученных в ГосСУОК — автоматизированное рабочее место плательщика ИОК КАИС Фонда;
    — при необходимости — сертификаты и списки отозванных сертификатов (СОС) корневого удостоверяющего центра и удостоверяющего центра, выдавшего ваш сертификат.
  4. Заходим на эту страницу сайта «Авест» и скачиваем последнюю версию криптопровайдера AvCSP (на текущий момент это версия 6.3.0.791).
  5. Устанавливаем программу работы с ЭЦП ПСКЗИ АСУ ПУ (либо ИОК КАИС при наличии ключей ГосСУОК) Фонда.
  6. Перезагружаем компьютер.
  7. Устанавливаем последнюю версию криптопровайдера AvCSP. При необходимости перезагружаем компьютер.

Такая последовательность действий обычно позволяет исправить проблемы с использованием ЭЦП Фонда и не нарушает работы остальных установленных программ, использующих ЭЦП. Впрочем, со стопроцентной уверенностью это утверждать нельзя: в используемых программах много недоработок. Пути устранения некоторых из них рассматривались в материалах, ссылки на которые расположены в начале данной статьи.

Если программа запускается, но ругается на отсутствующий сертификат или СОС, то нужно просто в самой программе импортировать скачанные с сайта сертификаты. Если по какой-то причине сертификат вашей организации не был установлен ранее, то, конечно же, его тоже надо установить. Ничего страшного не произойдет, если попытаться импортировать уже установленные сертификаты: вы получите уведомление о том, что сертификат уже присутствует в системе. Чаще всего приходится обновлять только СОС областного (городского) удостоверяющего центра: прочие сертификаты и СОС имеют продолжительный срок действия.

И напоследок, хоть и обещал не писать о проблемах с государственными порталами, напомню о часто встречающейся невозможности подключения или авторизации на портале ФСЗН при работающем антивирусе. В таком случае приходится отключать антивирус до входа на портал. Также можно отключить в настройках антивируса проверку протокола HTTPS (обычно в настройках модуля, отвечающего за проверку веб-страниц).

Успехов всем в работе!

 

Share

Календари на 2018 год, часть 3

Представляю вашему вниманию третью часть календарей на 2018 год. В этот раз все макеты сделаны для календарей-домиков с размером стороны 170х105 мм.

Для загрузки макета календаря в полном размере щелкните мышью на миниатюре изображения.

Календарь-домик 2018 Календарь-домик 2018 Календарь-домик 2018 Календарь-домик 2018 Календарь-домик 2018 Календарь-домик 2018 Календарь-домик 2018 Календарь-домик 2018 Календарь-домик 2018 Календарь-домик 2018

Схема размещения макетов на листе формата A4:

desk_170_scheme

Посмотреть и скачать другие макеты календарей можно в предыдущих записях блога, дополнительная информация также доступна на странице Календари моего сайта.

Share

Календари на 2018 год, часть 2

В этой заметке, являющейся продолжением старой темы, представлены очередные макеты календарей на 2018 год. Вторая публикация содержит настольные календари «домик» с размерами стороны 85х110 мм и 210х105 мм. На некоторых календарных сетках указаны белорусские государственные праздники.

Для начала несколько календарей с задорными картинками в стиле пин-ап, на которых также присутствует символ следующего года.

Календарь 2018 Календарь 2018 Календарь 2018

Календарь 2018 Календарь 2018 Календарь 2018

И еще несколько календарей с собачками.

Календарь 2018 Календарь 2018 Календарь 2018

Календарь 2018 Календарь 2018 Календарь 2018

Календарь 2018 Календарь 2018

Для загрузки макета календаря в полном размере щелкните мышью на миниатюре изображения.

Схема размещения макетов на листе формата A4:

desk_210_scheme

 

Share

Календари на 2018 год, часть 1

Продолжая старую традицию, к очередному Новому году я размещаю в этом блоге макеты настольных (а иногда и карманных) календарей. Обычно я делаю эти макеты для родных, друзей и коллег по работе, а затем выкладываю в общий доступ. Календари предназначены для любительской распечатки.

Все макеты календарей предлагаются в формате JPEG (*.jpg) с разрешением 300 dpi в палитре RGB. Размеры карманного календаря: 7х10 см, одной стороны настольного календаря «домик» (горизонтальный): 21х10,5 см или 17х10,5 см (развертка для листа А4), одной стороны настольного календаря «домик» (вертикальный): 8,5х11 см.

Любой желающий может скачать понравившийся календарь и распечатать его для себя или для друзей. Для оптимальных результатов рекомендуется использование струйного принтера с возможностью фотопечати, а также фотобумаги для струйной печати. Плотность бумаги для карманного календаря лучше выбирать от 250 г/м2 и выше, календарь на более тонкой бумаге желательно заламинировать для увеличения износоустойчивости. Настольный календарь «домик» можно печатать на бумаге плотностью 150-180 г/м2 или на более плотной.

Все изображения, использованные в макетах календарей, найдены в свободном доступе в сети интернет или предоставлены авторами изображений. Если вы являетесь автором какого-либо изображения и возражаете против его использования в макетах календарей, сообщите мне об этом.

2018 год — по восточному календарю является годом собаки. Чередование 12 животных дополняется чередованием 5 стихий, к каждой из которых привязан определенный цвет: дерево (зеленый), огонь (красный), земля (желтый), металл (белый), вода (черный). Наступающий 2018 год считается годом желтой собаки, которой соответствует стихия земля. Поэтому на большинстве календарей будут присутствовать изображения собак — этих умных и верных домашних любимцев.

В первой серии календарей на 2018 год собраны макеты для настольного календаря «домик» с размерами стороны 85х110 мм и 210х105 мм. На некоторых календарных сетках указаны белорусские государственные праздники.

Для загрузки макета календаря в полном размере щелкните мышью на миниатюре изображения.

Календарь 2018 Календарь 2018 Календарь 2018 Календарь 2018

Календарь 2018 Календарь 2018

Календарь 2018 Календарь 2018

Календарь 2018 Календарь 2018

Календарь 2018 Календарь 2018

Схема размещения макетов на листе формата A4:

desk_210_scheme

Share

Как бороться с ошибками портала ФСЗН?

О постоянных проблемах пользователей, вынужденных работать с различными государственными порталами, я уже несколько раз писал. Поскольку одни проблемы никуда не уходят, а на смену другим приходят третьи, то в дни перед датами сдачи очередных отчетов люди усиленно ищут пути решения возникающих сложностей.

Я обслуживаю компьютерную технику в разных организациях своего города, и поэтому тоже постоянно сталкиваюсь с просьбами и жалобами пользователей, работающих с порталами ФСЗН, МНС, Белгосстата и т.п. Например, в последние несколько дней клиенты начали активно жаловаться на работу портала ФСЗН. Точнее, на отсутствие работы. Это и понятно: срок сдачи очередного отчета неумолимо приближается.

Я заметил, что количество посетителей этого блога заметно увеличивается именно перед сдачей отчетности ФСЗН, поскольку люди просматривают интернет в поисках решений очередных проблем в работе портала, а здесь как раз было несколько материалов по данной теме. Поэтому в самом начале статьи для тех, кто в эти дни ищет помощи и случайно оказался здесь, размещу главные выводы:

  • Значительная часть ошибок, возникающих в работе портала ФСЗН на этой и прошлой неделе, происходит на стороне сервера и никак не может быть исправлена пользователем на его компьютере.
  • Если авторизоваться на портале не удается (не открывается страница, выдается сообщение об ошибке и т.п.), не тратьте слишком много времени на поиск решения. Особенно, если раньше все работало. При нормальной работе ЭЦП подписывайте пачки и отправляйте их инспектору по электронной почте. При невозможности подписать — везите инспектору на флешке неподписанные пачки, захватив с собой ключ.

Адрес электронной почты своего отделения ФСЗН можно найти по этой ссылке.

Итак, а теперь немного подробностей о работе портала в последние дни.

Как правило, наши бухгалтера уже опытные и хорошо знают, что работать с порталом ФСЗН в период сдачи отчетов невозможно из-за того, что их сервер просто «лежит». Поэтому и стараются сделать все необходимое не в последний день, а заранее. Но это не всегда помогает. Судя по поступающим жалобам, те или иные проблемы с порталом в этом месяце появляются с завидной регулярностью. И ладно бы это была просто привычная недоступность из-за перегруженности, к которой уже все привыкли (знаю, что некоторые работают по вечерам или даже ночью, когда портал еще шевелится). Так нет же, добавляются новые проблемы…

Кстати, о способах обхода некоторых проблем авторизации на портале я писал в этой заметке. Там речь идет о Windows 10, но рекомендации универсальные для разных случаев.

Начну с того, что уже с 1 апреля 2017 года ФСЗН перестал выдавать собственные сертификаты и ключи для ЭЦП. Теперь для получения нового ключа необходимо обращаться в ГосСУОК, причем получить этот ключ бесплатно уже не выйдет. Впрочем, ключ от ГосСУОК универсальный, с его помощью можно подписывать документы и авторизоваться в программах и на порталах МНС, ФСЗН, ЭСЧФ, Госкомстата, Белгосстраха и т.д. Проблема в том, что аж до середины октября 2017 года на портале ФСЗН нельзя было авторизоваться с помощью нового ключа. Вот такие они расторопные ребята. В общем, поддержку официально объявили 3 дня назад, и уже, по отзывам пользователей, зайти на портал можно, но вот выполнить необходимые действия — закачать отчет или скачать новую его форму — получается пока не у всех.

Кстати, полученного ранее ключа ГосСУОК (например, выданного взамен старого ключа от МНС) для авторизации на портале ФСЗН недостаточно: необходимо дополнительно запросить и установить атрибутный сертификат ФСЗН. Подробности можете почитать по этой ссылке. Также потребуется установить новую версию программного обеспечения для работы с ЭЦП, его можно без проблем скачать с сайта ФСЗН.

Наверное, к счастью, но я пока не сталкивался с необходимостью настраивать для клиентов работу портала ФСЗН с ключами ГосСУОК (остальные госпорталы работают с ними без особых проблем). Практически все мои клиенты еще работают со старыми ключами, выданными ФСЗН. Но вот незадача: примерно в то же время, когда было заявлено о работе портала с новыми ключами, по всей республике начались необъяснимые проблемы с авторизацией тех клиентов, которые еще используют старые ключи.

Что странно, у моих клиентов ключи не работали выборочно. То есть у кого-то старый ключ работает, у кого-то нет: при попытке авторизоваться на портале запрашивается выбор сертификата и ввод пароля, а затем выдается стандартное сообщение браузера о недоступности страницы. При этом на одном компьютере, где используется одновременно несколько сертификатов разных организаций, один из ключей с порталом не работал, хотя другой, выданный в этот же день, позволял без проблем сделать все, что нужно. При этом все сертификаты первого ключа действительны, СОС обновлены и более того, ЭЦП прекрасно работает. У другого клиента один ключ отказался работать на старой машине, где всегда без проблем использовался, но заработал на другом компьютере.

Чуть позже сотрудники ФСЗН объявили, что проблемы со старыми ключами происходят по вине… Белтелекома! Конечно же, технические подробности, на основании которых было сделано такое заявление, остаются тайной, покрытой мраком. Впрочем, в интернете есть сообщения пользователей, которым после переключения канала связи с Белтелекома на Велком удалось поработать с порталом (кто-то еще переключался на МТС, но безуспешно). Опять же, по заявлениям пользователей в интернете, проблема подключения к порталу со старым ключом у многих сегодня уже не наблюдается, хотя пользуются тоже Белтелекомом. Но при этом портал все так же очень медленно грузится и временно бывает недоступен.

Те, кому удается дозвониться в эти дни в службу техподдержки, иногда находят решение проблемы, но не часто. Дозвонившиеся своему инспектору обычно получают от него предложение отправить подписанные документы по электронной почте или привезти лично. Так что не надо боятся инспектора: они тоже хотят, чтобы все работало как надо, но понимают, что это объективно невозможно, поэтому идут навстречу обратившимся к ним пользователям, предлагая пути решения возникших проблем.

Кстати, 12 октября браузер весело сообщал всем желающим зайти на портал ФСЗН о недействительности SSL-сертификата сайта. А еще раньше пользователи заметили неверные настройки часового пояса на сервере, что приводило к неправильному отображению времени приема отчетов. Проблемы с доступом к порталу по полдня и более наблюдались 13 и 16 октября, проблемы с авторизацией старыми ключами были 17 и 18 числа, а вот в выходные дни 14-15 октября портал работал даже без задержек. Эти мелкие детали много говорят о качестве обслуживания портала. К сожалению, надежды на какие-то заметные положительные изменения в этой области в ближайшее время нет.

 

 

Share

Снова Windows 10 и порталы госорганизаций (МНС, ЭСЧФ, ФСЗН)

Кто не наслышан о море проблем, возникающих при работе с официальными порталами государственный организаций Беларуси (МНС, ФСЗН, Белстат, Белгосстрах и др.), требующими для регистрации использования криптографических ключей и ПО «Авест»?

О возникающих «на ровном месте» проблемах с порталом ФСЗН в операционной системе Windows 10 я уже писал раньше. Напомню, что корни всех проблем растут из начальных предпосылок и ограничений, искусственно заданных при разработке:

  1. Использование только ОС Windows и, более того, браузера Internet Explorer. Казалось бы, применение веб-технологий должно обеспечивать независимость предоставляемых сервисов от применяемой клиентом платформы, но предлагаемые решения изначально искусственно ограничены использованием лишь одного браузера. Chrome, Opera, Firefox, Safari, Edge и прочие элементарно не поддерживаются. Пользователи Linux и владельцы техники Apple вообще «в пролете». Более того, не все версии IE (а соответственно, не все версии Windows) пригодны для работы с государственными порталами.
  2. Необходимость детальной настройки свойств IE, которая заключается, в основном, в отключении большинства встроенных в браузер средств безопасности. Зачастую также требуется отключение или настройка в сторону уменьшения безопасности используемых антивирусов и файерволов.
  3. Жесткие требования к сертификации криптографического ПО не позволяют оперативно устранять найденные проблемы и быстро обновлять версии. В то же время обновление функциональности порталов, выпуск новых версий и прекращение поддержки старых версий браузеров и ОС приводит к неработоспособности и несовместимости между собой разных версий криптопровайдера Avest. А ведь он используется для работы со множеством организаций и учреждений, которые также требуют применения электронно-цифровой подписи (ЭЦП) для работы с их ПО или порталами и, соответственно, иногда требуют использования определенной версии криптопровайдера.

На днях один из клиентов пожаловался на невозможность авторизации в «личном кабинете» портала МНС, которая до недавнего времени работала. По предварительной версии клиента, авторизация стала невозможной после очередного обновления Windows. На компьютере установлена лицензионная Windows 10 и, соответственно, 11-я версия IE. Естественно, все автообновления исправно работают, как и задумано создателями этой версии операционной системы.

На практике попытка входа в «личный кабинет» МНС заканчивалась стандартным сообщением о недоступности страницы. При этом на компьютере было установлено криптографическое ПО «Авест» и ПО от МНС для подачи электронных деклараций, которые продолжали работать без всяких нареканий.

Как ни странно, но на поиск решения ушел почти целый рабочий день. Надо сказать, что компьютер оказался заражен парой троянов и различными вариантами adware, так что на их уничтожение и устранение последствий также потребовалось некоторое время, но к основной проблеме они никакого отношения не имели.

Итак, первоначальная проверка настроек IE ни к чему не привела, последующий сброс настроек и установка необходимых вручную тоже успеха не имели. Найденная в интернете информация сводилась к тому, что проблемы работы порталов МНС и ЭСЧФ возникают на некоторых версиях Windows 10 либо могут появляться после очередного обновления системы (напомню, в Windows 10 обновление автоматическое и его невозможно отключить простым способом). Решать же эти возникающие проблемы предлагают, в основном, лишь переустановкой криптографического ПО. При этом якобы нужно подобрать подходящую версию криптопровайдера и просто поставить ее поверх предыдущей.

Как я уже писал выше, для работы с разными госорганизациями и банками может понадобиться использование различных версий криптопровайдера. На проблемном компьютере требовалась лишь работа с порталом и ПО МНС, поэтому логично было бы предположить, что необходимо использовать официально предоставляемый пакет программ с портала, который включает в себя актуальную версию криптопровайдера «Авест» 6.2.0.733 и дополнительное ПО. Собственно, оно и было установлено, но не работало.

Оказывается, для таких проблемных случаев, особенно в случае Windows 10, рекомендуется либо повторно устанавливать ту же версию ПО поверх старой, либо скачивать с официального сайта ЗАО «Авест» более новые версии «для тестового ознакомления» (не будем вникать в подробности, что это означает на самом деле) и также ставить просто поверх старых. Самой новой версией криптопровайдера из представленных на сайте на данный момент является 6.3.0.791, но и она годится не для всех версий Windows, в частности, из Windows 10 подходят лишь build 10240, 10586, 14393, 15063. Благо билд 14393 и был установлен на компьютере.

Увы, как показала практика, установка новой версии «Авеста» поверх существующей версии хоть и проходит без предупреждений, но на практике ни к чему полезному не ведет. Более детальное рассмотрение показало, что необходимые записи в реестре попросту не производились. Также не происходила замена файлов web-плагина AvCMXWebP при попытке поставить одну версию плагина поверх другой, хотя инсталлятор докладывал об успешной установке. То есть надо сначала удалять старую версию плагина, а затем ставить новую. Замечу, что установка плагина AvCMXWebP (помимо криптопровайдера) является необходимым условием авторизации на портале и дальнейшей работы с ним.

Остановлюсь подробнее на отсутствии необходимых записей в реестре. Это давно известная проблема «Авеста». Для нормальной работы Avest требуется предварительная загрузка одной или нескольких библиотек. Для этого при установке программы в реестр должен прописываться путь к нужной библиотеке.

В частности, для 32-битной версии программы в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows, а для 64-битной в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows в параметре AppInit_DLLs должен быть прописан путь к нужной библиотеке примерно такого вида (но не обязательно точно такой же): C:\PROGRA~2\COMMON~1\avest\AVESTC~1\AvSSPc.dll

Как видите, путь прописан с применением коротких имен папок. Проблема в том, что на некоторых компьютерах использование коротких имен может быть отключено настройками системы. В частности, в Windows XP можно отключить короткие имена, разместив в ветке HKEY_LOCAL_MACHINE\System\CurrentControlSet\FileSystem параметр Ntfsdisable8dot3NameCreation со значением 1. В этом случае нужно заменить параметр на 0 или удалить параметр полностью, после чего переустановить Avest. В более поздних версиях Windows можно использовать символьные ссылки. Например:

1. Определиться, где будет размещаться символическая ссылка (например, в папке C:\Users).
2. Запустить командную строку.
3. Выполнить команду:
mklink /D c:\Users\avcsp "c:\Program Files\Common Files\Avest\Avest CSP" (64-битная система)
или mklink /D c:\Users\avcsp "c:\Рrоgram Files (х86)\Соmmоn Filеs\Avеst\Avеst CSP" (32-битная система).
4. Открыть редактор реестра. В параметре AppInit_DLLs в соответствующей ветке реестра (см. выше) поменять путь на c:\Users\avcsp\AvSSPc.dll
5. Перезагрузить компьютер.

В моем случае короткие имена работали как надо, но при установке любой версии «Авеста» нужный параметр в реестр просто не записывался по так и не выясненной причине. После прописывания его вручную мне наконец-то удалось увидеть в 32-битной версии IE экран авторизации портала ЭСЧФ (я его решил тоже проверить, вдруг на портале МНС просто сбой) и успешно авторизоваться. Так же успешно прошла авторизация и в личном кабинете МНС.

Перезагрузив компьютер, я снова проверил вход на портал ЭСЧФ и в личный кабинет портала МНС — все работало. Облегченно вздохнув, я решил доделать некоторые мелочи, прежде чем возвращать компьютер владельцу: убрать лишний «мусор», поставить отсутствующий архиватор и т.п. Завершив работу, я решил снова проверить авторизацию в личном кабинете портала МНС, и тут меня ожидал грандиозный «облом» — до боли надоевшее сообщение о недоступности страницы. Попытка входа на портал ЭСЧФ подтвердила возвращение проблемы.

Далее последовало повторение уже неоднократно пройденных шагов с постоянным недоумением и все с тем же отрицательным результатом. Дошло до того, что даже убрал установленный архиватор, конечно же, без всякого успеха в решении основной проблемы.

Впрочем, не буду описывать еще более часа мытарств и поиска дополнительной полезной информации в интернете. На очередном шаге проверки я снова запустил портал ЭСЧФ, и — о, чудо! — авторизовался на нем. Сразу же зашел в «личный кабинет» МНС — и снова успешно. Перезагрузил компьютер, захожу в «личный кабинет» МНС — опять недоступная страница. Открываю ЭСЧФ — не пускает. Закрываю браузер, открываю, повторяю действия — безуспешно. Пробую 32-битную и 64-битную версию IE — все так же. В очередной раз открываю сначала портал ЭСЧФ — захожу без проблем. Запускаю тут же портал МНС — тоже без проблем. Закрываю-открываю браузер, открываю порталы в обратном порядке — ни один не работает. Снова закрываю-открываю браузер, меняю порядок открывания сайтов — снова все отлично.

Залезаю в настройки IE, слежу за установленными надстройками и плагинами. При первоначальном открытии портала ЭСЧФ загружается необходимый плагин AvCMXWebP, если первым открыть портал МНС — плагин не появляется в списке загруженных, и попытка войти в личный кабинет проваливается, как и последующие попытки авторизоваться на портале ЭСЧФ. Беглый просмотр кода страниц обоих порталов позволил найти обращение к плагину в одном случае, и не найти никакого упоминания во втором.

Вот такая вот загадка. Даже не в том загадка, как все это работает, и что делать, если не работает. Загадка в том, кого «благодарить» за эти постоянные и непреходящие проблемы, которые с завидным упорством обеспечивают различные «светлые головы» для десятков или сотен тысяч организаций по всей стране?

Share

Переход на банковские счета IBAN: что нужно успеть сделать

Как известно, с 04.07.2017 года банки Республики Беларусь переходят на использование международного номера счета (IBAN) и международного банковского идентификационного кода (BIC или БИК) при осуществлении расчетов в безналичной форме.

Более подробная информация о предстоящем переходе, включая юридическое обоснование и некоторые технические детали, представлена на специальной странице сайта Нацбанка РБ. Там же размещены ответы на наиболее актуальные вопросы, касающиеся перехода, а также много другой полезной информации.

В этой статье я расскажу том, что необходимо в самое ближайшее время сделать организациям, предприятиям, частным предпринимателям в связи с предстоящим переходом на IBAN и БИК, а также подробно остановлюсь на технических вопросах и предоставлю полезную информацию по доработке используемого субъектами хозяйствования программного обеспечения.

 

Итак, начну с краткого обобщения предоставленной Нацбанком и другими банками РБ информации о счетах IBAN и новых БИК.

  1. С 4 июля 2017 года проведение любых безналичных платежей будет осуществляться банками РБ только с использованием нового формата номеров счетов IBAN и новых банковских идентификационных кодов. Старые 13-значные номера банковских счетов и старые 9-значные либо 3-значные банковские коды больше применяться не будут. Обратите внимание, что платежные документы с указанием старых реквизитов, полученные банками 30 июня 2017 года, но не исполненные в этот день, уже не будут исполнены (кроме платежей в бюджет и в пользу органов принудительного взыскания). То есть, переходный период, при котором клиенты будут иметь право предоставлять платежные инструкции со старыми реквизитами, не предусмотрен. Правда, есть исключение: международные денежные переводы смогут дойти до клиента по старым реквизитам до 31.12.2017 г., а переводы в пользу физических лиц по спискам (заработная плата, пенсии, пособия и т.п.) также можно будет зачислить по старым реквизитам до 30.09.2017 г.
  2. IBAN (International Bank Account Number) — это международный номер банковского счета, используемый первоначально в странах Евросоюза, а сейчас и во многих других странах мира. Может быть длиной до 34 символов, в Беларуси будет использоваться IBAN длиной 28 символов. Подробнее о стандарте номеров IBAN можно узнать в Википедии. Все банковские счета, включая расчетные счета предприятий и организаций, транзитные счета, карт-счета, вкладные счета физических лиц и т.д., будут идентифицироваться исключительно по номерам IBAN.
  3. BIC (Business Identifier Code) — универсальный идентификационный код участников финансовых расчетов. В русском варианте используется сокращение БИК и термин Банковский Идентификационный Код (т.е. Bank Identifier Code, что не вполне соответствует международному стандарту). Подробнее о BIC можно также почитать в Википедии. С 04.07.2017 г. все банки РБ будут идентифицироваться исключительно по номерам BIC взамен старых банковских кодов.
  4. Банки РБ уже предоставляют юридическим лицам и индивидуальным предпринимателям информацию о новых номерах их банковских счетов и новом BIC обслуживающего банка.

 

В связи с предстоящим переходом на номера IBAN и новые БИК юридическим лицам и индивидуальным предпринимателям желательно заранее позаботиться о подготовительных мероприятиях и как можно скорее решить следующие задачи:

  1. Если информация о новых номерах собственных банковских счетов и новых БИК обслуживающих банков еще не получена, запросить эту информацию в соответствующих отделениях обслуживающих банков.
  2. Уведомить всех своих контрагентов о новых номерах используемых банковских счетов и новых BIC.
  3. Запросить у своих контрагентов информацию о новых номерах их банковских счетов, а при необходимости — и новых BIC банков, в которых обслуживаются контрагенты.
  4. Запросить у банков, обслуживающих зарплатные проекты организации, или непосредственно у работников информацию о новых номерах их вкладных или карт-счетов, а при необходимости — и новых BIC банков, в которых открыты вкладные либо карт-счета работников.
  5. Доработать используемое программное обеспечение для возможности работы с новыми форматами банковских счетов IBAN и новыми банковскими кодами BIC.
  6. Заранее внести в программное обеспечение новые номера IBAN собственных банковских счетов, расчетных счетов своих контрагентов, личных счетов работников для перечисления заработной платы и иных платежей, а также новые BIC соответствующих банков.

 

Далее я более детально затрону вопросы, касающиеся модификации программного обеспечения для возможности работы с номерами IBAN и новыми банковскими кодами. Если вас не интересуют эти вопросы, то дальнейшую части статьи можно смело пропускать. Однако некоторая часть изложенной ниже информации может оказаться полезной не только для разработчиков программ, но и для пользователей.

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

Итак, основное, что предстоит сделать разработчикам:

  1. Обеспечить ввод, обработку и хранение новых банковских идентификационных кодов для всех банков.
  2. Обеспечить ввод, обработку и хранение новых номеров IBAN для собственных банковских счетов.
  3. Обеспечить ввод, обработку и хранение новых номеров IBAN для расчетных счетов контрагентов.
  4. Обеспечить ввод, обработку и хранение новых номеров IBAN для личных счетов работников, используемых при перечислении заработной платы.
  5. Изменить все экранные формы, используемые для ввода, просмотра и редактирования данных, чтобы иметь возможность работать с новыми номерами счетов и кодами банков.
  6. Изменить все печатные формы, чтобы выводимая на печать информация содержала корректное отображение новых счетов IBAN и кодов BIC.

Кроме этого, пользователям программ могут потребоваться (и, скорее всего, потребуются) следующие возможности:

  1. Проверка вводимого номера IBAN и кода BIC на корректность.
  2. Форматирование длинного номера IBAN при выводе на экран и на печать путем разбиения на группы символов для более удобного визуального восприятия и контроля.
  3. Обеспечение возможности ввода и редактирования новых номеров счетов и банковских кодов во время работы со старыми реквизитами до 04.07.2017 г.
  4. Возможность выбора в течение некоторого времени либо старых, либо новых реквизитов (может потребоваться при поиске и просмотре старых данных после перехода на новые реквизиты).
  5. Выгрузка данных по платежным инструкциям с целью передачи их в программное обеспечение системы «клиент-банк», предоставляемое обслуживающим банком.
  6. Выгрузка списков на зачисление зарплаты и иных платежей работникам с целью передачи их в программное обеспечение системы «клиент-банк», предоставляемое обслуживающим банком.
  7. Загрузка данных по банковским выпискам из программного обеспечения системы «клиент-банк».

Как видим, работы предстоит довольно много. Кстати, первоначально переход на номера IBAN и БИК планировалось сделать 1.01.2017 г., но в связи с решением о проведении в 2016 году деноминации белорусского рубля, а также (вероятно) с практически одновременным переходом на использование ЭСЧФ с введением IBAN решили немного повременить.

Конечно, для решения выше озвученных задач можно использовать разные подходы. Например, если рассматривать распространенные системы учета, созданные на базе продуктов 1С, то к решению поставленных задач можно подойти, например, так:

  1. Увеличить размерность соответствующих реквизитов справочников и документов, полей печатных форм, доработать проверки вводимых данных, переделать обработки импорта и экспорта данных. Это самый простой подход, он потребует меньше затрат, но обладает рядом недостатков. Главный недостаток — невозможность обеспечения одновременной работы пользователей со старыми и с новыми банковскими реквизитами. Чтобы пользователи имели возможность внести новые реквизиты заранее, надо будет делать отдельную копию информационной базы, которая до 04.07.2017 будет использоваться лишь для заполнения новых реквизитов, а с даты перехода на новые счета станет основной рабочей базой. При этом посмотреть старые реквизиты можно будет только в старой копии информационной базы. Этот способ годится для ИП и небольших организаций с малым количеством контрагентов.
  2. Добавить новые реквизиты справочников и документов для хранения номеров IBAN и новых БИК, отредактировать печатные формы, доработать проверки вводимых данных, сделать новые обработки импорта и экспорта данных. Далее пользователю предоставляется разовая обработка, которая заменяет старые реквизиты и обработки на новые. Печатные формы при таком подходе заменять не придется, лишь отредактировать ширину нужных полей. Такой подход потребует чуть больше затрат. Пользователи будут иметь возможность внести новые реквизиты заранее и работать с одной информационной базой, но после перехода на новые реквизиты работа со старыми будет невозможна. Может быть, ничего страшного в этом нет, особенно если сделать копию информационной базы до перехода на новые реквизиты на случай необходимости поиска или использования старых.
  3. Третий подход похож на второй, но кроме добавления новых реквизитов нужно отредактировать все экранные и печатные формы, отчеты, обработки, а также произвести изменения в программных модулях для возможности произвольного переключения с работы со старыми реквизитами на работу с новыми реквизитами и обратно. Настроить такое переключение можно, например, через отдельную константу или через рабочую дату. Этот подход самый затратный в плане работы программиста, но наиболее гибкий для пользователя. Пользователи будут работать с одной информационной базой, иметь возможность внести новые реквизиты заранее и возможность выбора, какие реквизиты использовать.

Судя по информации в интернете, большинство разработчиков 1С, включая крупные компании, выпускающие регулярные обновления для своих пользователей, используют второй подход. Лично мне больше нравится третий, так как (на мой взгляд) он предоставляет наибольшие удобства и возможности для пользователей. Если у вас используется стандартная конфигурация 1С и вы подписаны на ее официальные обновления, то тогда вам вообще не о чем беспокоится. Для доработки же самописных или сильно переделанных конфигураций надо немного поднапрячься.

Это все была общая информация. Теперь хочу остановиться на некоторых технических деталях.

Для начала рассмотрим структуру номера IBAN, который будет применяться в Беларуси. Подробно о ней можно узнать из соответствующего документа НБ РБ. Небольшая выдержка из документа под спойлером:

Структура номера IBAN

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

AABB CCCC DDDD EEEE EEEE EEEE EEEE,

где AA (1 – 2-й буквенные разряды) – международный код Республики Беларусь;

ВВ (3 – 4-й цифровые разряды) – контрольное цифровое значение, рассчитанное в порядке, предусмотренном подпунктом 1.2 настоящего пункта;

СССС (5 – 8-й буквенно-цифровые разряды) – первые четыре символа банковского идентификационного кода банков, их филиалов;

DDDD (9 – 12-й цифровые разряды) – балансовый счет согласно планам счетов бухгалтерского учета;

EEEE EEEE EEEE EEEE (13 – 28-й буквенно-цифровые разряды) – определяемая банками нумерация индивидуального счета

[свернуть]

Пример счета IBAN: BY00 NBRB 3600 0000 0000 0000 0000

Счет разбит на фрагменты по 4 символа только для удобства визуального восприятия. На самом деле использование пробелов в номере счета не допускается. В Беларуси длина IBAN составляет ровно 28 знаков, однако счета в банках других стран могут иметь другие ограничения по длине, и это надо также учитывать: например, для ввода номера счета банка-корреспондента может потребоваться большее количество символов.

Первые 2 символа IBAN являются международным обозначением страны, для Беларуси это символы BY. Символы 5-8 совпадают с первыми 4 символами BIC того банка, в котором открыт счет. 3 и 4 символ составляют контрольную цифру. Алгоритм ее расчета приведен в уже упомянутом документе на сайте Нацбанка РБ, этот алгоритм также легко найти и в других источниках.

Последние 16 символов номера IBAN банки устанавливают самостоятельно, при этом могут использоваться как цифры, так и заглавные буквы латинского алфавита. К сожалению, не существует универсального алгоритма, позволяющего из старого 13-значного номера счета получить новый номер IBAN. Правда, некоторые банки используют старый номер, дополняя его нулями и подставляя вместо последних 16 знаков IBAN, но это скорее исключение, чем правило. Поэтому универсальной процедуры превращения старого номера счета в новый нет и быть не может. Однако же банки владеют информацией о соответствии старого номера счета и нового, поэтому по соответствующим спискам можно автоматизировать замену или заполнение новых номеров в формате IBAN. Конкретно эта возможность будет рассмотрена в конце статьи.

На практике интерес представляет не алгоритм формирования номера IBAN и даже не алгоритм расчета контрольной суммы, а способ проверки правильности вводимого номера. Исходя из сказанного, проверять можно:

  • длину номера (должна составлять 28 знаков для РБ и от 5 до 34 знаков для иностранных банков);
  • наличие недопустимых символов в номере (допускаются только цифры и заглавные буквы латинского алфавита);
  • наличие недопустимых символов в определенных позициях (например, недопустимы цифры на первых 2 позициях, буквы на 3 и 4 позиции и т.д.);
  • соответствие символов на позициях 5-8 первым четырем символам БИК банка;
  • правильность расчета контрольной суммы.

Последний пункт выполняется так:

  1. Первые 4 символа номера перемещаются в конец строки (считаем, что ведущие и концевые пробелы уже обрезаны).
  2. Каждый символ полученного после 1 пункта номера последовательно преобразуется в код от 0 до 35 по следующему правилу: цифра преобразуется в соответствующее число, буквы от A до Z в алфавитном порядке преобразуются в числа от 10 до 35. Например, символ «7» преобразуется в число 7, а буква D преобразуется в число 13. Самое главное: получаемые числа не суммируются, а приписываются к полученному результату справа по принципу сцепления строк. Например, последовательность BY23 преобразуется в «11»+«34»+«2»+«3»=«113423».
  3. Полученная в пункте 2 последовательность цифр интерпретируется как число. Далее это число делится на 97 и вычисляется остаток от деления.
  4.  Если остаток от деления равен 1, контрольная цифра соответствует остальным символам номера, то есть номер можно считать верным по данному признаку.

 

Поскольку в пункте 2 образуется очень большое число, в расчетах можно столкнуться с некоторыми ограничениями, накладываемыми используемыми средствами разработки программ или хранения данных. Но есть простой выход из ситуации: можно разбить численную строку на малые части и вычислить остаток деления каждой части на 97, дописывая получаемый остаток от деления предыдущей части слева к следующей части, и так до конца строки.

Рассмотрим пример:

Есть гипотетический номер BY42AKBB30120123456789012345, открытый в «Беларусбанке». Проверим его правильность.

  1. Номер состоит из 28 символов, что верно для Беларуси. ОК.
  2. Она содержит только цифры и прописные буквы латинского алфавита. ОК.
  3. Первые 2 символа BY, что соответствует стране. ОК.
  4. В позициях 3-4 находятся цифры. Пока ОК.
  5. Символы с 5 по 8 содержат строку AKBB, что совпадает с первыми символами BIC «Беларусбанка». ОК.
  6. Перемещаем первые 4 символа в конец строки, получаем AKBB30120123456789012345BY42.
  7. Преобразуем A в 10, K в 20, B в 11 и т.д. Результат: 1020111130120123456789012345113442.
  8. Расчленим эту численную строку на несколько частей, например, по 6 цифр (части могут быть неодинаковыми по длине): 102011, 113012, 012345, 678901, 234511, 3442. Остаток деления 102011 на 97 есть 64. Дописываем 64 слева к следующей части, получаем 64113012 Остаток деления 64113012 на 97 есть 86. Далее делим 86012345 на 97, получаем остаток 20. Далее по аналогии: 20678901 mod 97 = 53;  53234511 mod 97 = 38 и, наконец, 383442 mod 97 = 1. В результате получили цифру 1, значит, данный счет IBAN верный.

 

Сейчас в интернете легко найти сервисы, предлагающие проверить правильность счета IBAN онлайн. Однако при вводе большого количества номеров пользоваться онлайн-проверкой неудобно. Поэтому необходимо реализовать такую проверку в своих программных продуктах.

Ниже я приведу несколько примеров кода, реализующего часть из выше рассмотренных проверок банковских счетов IBAN. Некоторые из примеров были найдены в глобальной сети и не проверялись на практике, большинство из них не реализует все возможные проверки (например, нигде не проверяется совпадение разрядов счета IBAN с разрядами BIC банка). К сожалению, автоматическое форматирование программного кода в спойлере не очень наглядное, уж не обессудьте.

Пример кода на JavaScript (взято отсюда: http://www.morfoedro.info/img.php?n=189)

function IBANChk(b)
{
	if (b.length < 5 || b.length > 34) { alert("Длина менее 5 или более 34 символов"); return false; }
	s = b.substring(4) + b.substring(0, 4);
	for (i = 0, r = 0; i < s.length; i++ )
	{
		c = s.charCodeAt(i);
		if (48 <= c && c <= 57)
		{
			if (i == s.length-4 || i == s.length-3) { alert("В позициях 1 и 2 не могут быть цифры"); return false; }
			k = c - 48;
		}
		else if (65 <= c && c <= 90)
		{
			if (i == s.length-2 || i == s.length-1) { alert("В позициях 3 и 4 не могут быть буквы"); return false; }
			k = c - 55;
		}
		else { alert("Разрешены только прописные буквы от A до Z и цифры"); return false; }
		if (k > 9)
			r = (100 * r + k) % 97;
		else
			r = (10 * r + k) % 97;
	}
	if (r != 1) { alert("Контрольная сумма ошибочна"); return false; }
	alert("Этот IBAN верен");
	return true;
}

[свернуть]
Пример кода для 1С 8 (взято отсюда: http://infostart.ru/public/620551/)

&НаКлиенте
Функция ЧетыреЗнакаВХвост(СчетДляПроверки)

ЧетыреЗнака = ""+Лев(СчетДляПроверки, 4);
 ЧистаяСтрока = Сред(СчетДляПроверки, 5);
 
 Возврат ""+ЧистаяСтрока+ЧетыреЗнака;

КонецФункции

&НаКлиенте
Функция ПостроитьМатрицуЗнаков()
 МатрицаЗнаков = Новый Соответствие;
 МатрицаЗнаков.Вставить("0","0");
 МатрицаЗнаков.Вставить("1","1");
 МатрицаЗнаков.Вставить("2","2");
 МатрицаЗнаков.Вставить("3","3");
 МатрицаЗнаков.Вставить("4","4");
 МатрицаЗнаков.Вставить("5","5");
 МатрицаЗнаков.Вставить("6","6");
 МатрицаЗнаков.Вставить("7","7");
 МатрицаЗнаков.Вставить("8","8");
 МатрицаЗнаков.Вставить("9","9");
 МатрицаЗнаков.Вставить("A","10");
 МатрицаЗнаков.Вставить("B","11");
 МатрицаЗнаков.Вставить("C","12");
 МатрицаЗнаков.Вставить("D","13");
 МатрицаЗнаков.Вставить("E","14");
 МатрицаЗнаков.Вставить("F","15");
 МатрицаЗнаков.Вставить("G","16");
 МатрицаЗнаков.Вставить("H","17");
 МатрицаЗнаков.Вставить("I","18");
 МатрицаЗнаков.Вставить("J","19");
 МатрицаЗнаков.Вставить("K","20");
 МатрицаЗнаков.Вставить("L","21");
 МатрицаЗнаков.Вставить("M","22");
 МатрицаЗнаков.Вставить("N","23");
 МатрицаЗнаков.Вставить("O","24");
 МатрицаЗнаков.Вставить("P","25");
 МатрицаЗнаков.Вставить("Q","26");
 МатрицаЗнаков.Вставить("R","27");
 МатрицаЗнаков.Вставить("S","28");
 МатрицаЗнаков.Вставить("T","29");
 МатрицаЗнаков.Вставить("U","30");
 МатрицаЗнаков.Вставить("V","31");
 МатрицаЗнаков.Вставить("W","32");
 МатрицаЗнаков.Вставить("X","33");
 МатрицаЗнаков.Вставить("Y","34");
 МатрицаЗнаков.Вставить("Z","35");
 
 Возврат МатрицаЗнаков;
КонецФункции

&НаКлиенте
Функция ПолучитьКонтрольноеЧисло(СчетДляПроверки)
 
 ВхСчет = СокрЛП(""+Прав(СчетДляПроверки, 24)+"BY00");
 
 ДлинуПроверил = ?(СтрДлина(ВхСчет) = 28, Истина, Ложь);
 КонтрольноеЧисло = "";
 Если ДлинуПроверил Тогда
 
 МатрицаЗнаков = ПостроитьМатрицуЗнаков();
 
 СтрокаСчета = "";
 Ном = 0;
 Для Ном = 1 По СтрДлина(СчетДляПроверки) Цикл
 СтрокаСчета = СтрокаСчета + МатрицаЗнаков.Получить(Сред(ВхСчет, Ном, 1)); 
 КонецЦикла; 
 МатрицаЗнаков = Неопределено;
 
 Число123 = Число(СтрокаСчета);
 Число124 = Цел(Число123/97);
 Число125 = Число124*97;
 Число126 = Число123-Число125;
 Число127 = 98 - Число126;
 КонтрольноеЧисло = Прав("00"+Число127,2);
 КонецЕсли;
 Возврат КонтрольноеЧисло;
КонецФункции

&НаКлиенте
Функция ПроверитьСчетIBAN(СчетДляПроверки)
 
 ВхСчет = СокрЛП(СчетДляПроверки);
 
 ДлинуПроверил = ?(СтрДлина(ВхСчет) = 28, Истина, Ложь);
 Правильно = ЛОЖЬ;
 Если ДлинуПроверил Тогда
 
 ЧетыреЗнака = ""+Лев(ВхСчет, 4);
 ЧистаяСтрока = ""+Сред(ВхСчет, 5)+ЧетыреЗнака;
 
 МатрицаЗнаков = ПостроитьМатрицуЗнаков();
 
 Ном = 0;
 СтрокаСчета = "";
 Для Ном = 1 По СтрДлина(ЧистаяСтрока) Цикл
 
 СтрокаСчета = СтрокаСчета + МатрицаЗнаков.Получить(Сред(ЧистаяСтрока, Ном, 1)); 
 
 КонецЦикла; 
 МатрицаЗнаков = Неопределено;
 
 Число132 = Число(СтрокаСчета);
 Число133 = Цел(Число132/97);
 Число134 = Число133*97;
 Число135 = Число132-Число134;
 Правильно = (Число135 = 1);
 КонецЕсли;
 Возврат Правильно;
КонецФункции

&НаКлиенте
Процедура Проверить(Команда)
 
 Сообщить(ПолучитьКонтрольноеЧисло(СчетДляПроверки));
 
 Сообщить(ПроверитьСчетIBAN(СчетДляПроверки))
 
КонецПроцедуры

[свернуть]
Пример кода для 1С 7.7

Функция ПроверкаНомераСчета(НомерСчета) 
               ВхСчет = СокрЛП(НомерСчета);
               ПроверкаДлины = ?(СтрДлина(ВхСчет) = 28, 1, 0);
               Проверка = 0;
               Если ПроверкаДлины = 1 Тогда
                              ИсходнаяСтрока = Сред(ВхСчет, 5) + Лев(ВхСчет, 4);
                              ВесоваяСтрока = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
                              ЧисловаяСтрока = "";
                              Для Ном = 1 По СтрДлина(ИсходнаяСтрока) Цикл
                                            Вес=Найти(ВесоваяСтрока,Сред(ИсходнаяСтрока,Ном,1))-1;
                                            Если Вес = -1 Тогда
                                                           Возврат Проверка;
                                            КонецЕсли;
                                            ЧисловаяСтрока = ЧисловаяСтрока + Строка(Вес);
                              КонецЦикла;
                              Результат = Число(ЧисловаяСтрока) - 97*Цел(Число(ЧисловаяСтрока)/97);
                              Проверка = ?(Результат = 1, 1, 0);
               КонецЕсли;
               Возврат Проверка;
КонецФункции

[свернуть]
Пример кода на VBA для Excel

Private Function CheckIBAN(IBANStr)
 If (Len(IBANStr) <> 28) Then
 CheckIBAN = False
 Exit Function
 End If
 s = Right(IBANStr, 24) + Left(IBANStr, 4)
 For i = 1 To 28
 c = Asc(Mid(s, i, 1))
 If (48 <= c) And (c <= 57) Then
 If (i = 25) Or (i = 26) Then
 CheckIBAN = False
 Exit Function 'В позициях 1 и 2 не могут быть цифры
 End If
 k = c - 48
 Else
 If (65 <= c) And (c <= 90) Then
 If (i = 27) Or (i = 28) Then
 CheckIBAN = False
 Exit Function 'В позициях 3 и 4 не могут быть буквы
 End If
 k = c - 55
 Else
 CheckIBAN = False
 Exit Function 'Разрешены только прописные буквы от A до Z и цифры
 End If
 End If
 If (k > 9) Then
 r = (100 * r + k) Mod 97
 Else
 r = (10 * r + k) Mod 97
 End If
 Next i
 If (r <> 1) Then
 CheckIBAN = False
 Exit Function 'Контрольная сумма ошибочна
 End If
 CheckIBAN = True
End Function

[свернуть]

 

Что касается формата новых кодов BIC, то здесь все намного проще: на сайте Нацбанка есть не только описание структуры BIC, но и перечень действующих банков в формате Excel с указанием как старого кода, так и нового БИК. Обновить коды банков в своих программах, имея данную информацию, — дело техники, так что заострять внимание на этом моменте не буду.

Вернемся к поднятому раньше вопросу об автоматизации переводов старых номеров счетов в номера IBAN. Некоторые банки уже уведомили своих клиентов о том, что им будет предоставлена информация о соответствии старых и новых номеров счетов физических лиц, получающих заработную плату и иные платежи от организации. Кроме того, буквально на днях Нацбанк РБ разместил у себя на сайте калькулятор IBAN, который позволяет по старому номеру счета и коду (либо наименованию) банка получить новый номер счета IBAN. Самая замечательная с точки зрения разработчиков программного обеспечения, занимающихся сопровождением софта на предприятиях, особенность калькулятора — это возможность пакетной обработки списка номеров. Подробности подготовки списка номеров и проведения пакетной обработки приведены на этой странице сайта НБ РБ.

У меня пока не было возможности протестировать калькулятор IBAN в пакетном режиме, но само появление такого сервиса намного облегчит жизнь тем юрлицам, которые работают с сотнями контрагентов.

На этом остановлюсь. Надеюсь, приведенная информация будет кому-то полезной. Вопросы и замечания в комментариях приветствуются.

 

Share

CDS Reader — программа для просмотра таблиц формата CDS

Если вам встречались файлы с расширением .cds, то вы наверняка пытались найти программу для просмотра их содержимого. В файлах формата CDS хранятся табличные данные, однако найти программу для их просмотра в удобном виде не так-то просто. Даже стандартный поиск по фразам «как открыть файл cds» или «чем открыть файл cds» не принесет быстрого результата, если вообще позволит найти хоть что-нибудь полезное.

Формат CDS – это формат хранения табличных данных. Этот формат иногда используется для хранения информации в программах, разработка которых велась с применением компоненты ClientDataSet фирмы Borland. Несмотря на некоторые преимущества формата CDS, широкого распространения он не получил. Вследствие этого существует очень мало программ, позволяющих открывать, просматривать и редактировать произвольные CDS-таблицы.

Программа CDS Reader разрабатывалась в качестве простого и удобного средства просмотра и редактирования таблиц формата CDS. Она позволяет открывать и просматривать содержимое таблицы, добавлять новые записи, редактировать или удалять существующие записи, очищать таблицу целиком. Все изменения, произведенные с таблицей, автоматически сохраняются в файле, поэтому при изменении или удалении записей будьте внимательны, а лучше позаботьтесь о наличии резервной копии.

CDS Reader

Программа CDS Reader не позволяет менять структуру таблицы (добавлять или удалять поля, менять их тип и размер). При необходимости изменения структуры таблицы CDS ищите соответствующее программное обеспечение. Одна из таких программ – XMLTableEditor, она уже давно не поддерживается, но ее еще можно найти на просторах интернета.

Приведу один из примеров практического применения программы CDS Reader. Как известно, для работы с Фондом социальной защиты населения Республики Беларусь используется ряд специализированного программного обеспечения, включая программу «Ввод ДПУ», предназначенную для предоставления сведений о выплатах в ФСЗН. Программа позволяет загружать данные из текстового файла, сформированного в другой программе, таким образом обеспечивая возможность частичной интеграции с используемыми на предприятиях системами учета. Если загруженные данные содержат ошибки, их можно исправлять вручную или сделать повторную выгрузку-загрузку из используемой системы учета. Проблема в том, что очистить всю таблицу целиком от неправильных записей в программе «Ввод ДПУ» невозможно. Записи приходится удалять по одной, с подтверждением каждого действия, затрачивая на это уйму времени.

При этом многие знают, что программа «Ввод ДПУ» хранит данные в файлах формата CDS. Данные хранятся в разных папках, расположенных в папке установки программы. Например, таблицы с оперативными данными лежат в папке OPER. Однако ввиду отсутствия средств для редактирования таблиц CDS напрямую их содержимое посмотреть и изменить нельзя. CDS Reader позволяет легко открыть таблицы с данными программы «Ввод ДПУ», отредактировать их или при необходимости полностью удалить все записи одним нажатием кнопки.

Программа CDS Reader бесплатна, не имеет ограничений по распространению и использованию, не содержит рекламы.

Скачать программу CDS Reader (freeware, exe, 971 кБ)

Share

Печать документа в виде брошюры

Все мы привыкли, что текстовые документы обычно оформляются и печатаются на листах бумаги формата А4. При печати таких документов на обычных офисных принтерах никакая дополнительная подготовка не требуется, ведь большинство принтеров использует именно этот формат бумаги. Однако иногда возникает задача распечатать документ формата А4 в виде небольшой брошюры меньшего формата – А5 или А6. Во-первых, это позволяет значительно сэкономить бумагу, а во-вторых, брошюру обычно удобнее читать и хранить.

Современные программы для работы с документами, а также драйвера офисных принтеров, как правило, имеют настройки, позволяющие печатать документ в уменьшенном виде. При этом на одной стороне листа бумаги размещается сразу несколько уменьшенных страниц документа. Используя эту возможность, любой документ можно распечатать в виде брошюры (книжки). Сложность заключается лишь том, чтобы правильно рассчитать последовательность выводимых на печать страниц.

Для печати документа книжкой не годится последовательная печать всех страниц, поскольку номера страниц должны чередоваться в строго определенном порядке. Например, чтобы сделать брошюру из четырехстраничного документа, надо на одной стороне листа разместить 1 и 4 страницы, а на второй стороне – 2 и 3 страницы. При этом нечетные страницы всегда располагаются справа, а четные – слева.

Если же документ будет состоять из 12 страниц, то на одной стороне бумаги нужно будет печатать 12 и 1, 10 и 3, 8 и 5 страницы, а на обратной стороне соответственно 2 и 11, 4 и 9, 6 и 7 страницы.

Чтобы сделать подобную распечатку, например, из программы Word, надо в настройках печати выбрать вариант размещения двух страниц на листе, а затем в поле для ввода номеров страниц указать последовательность 12,1,10,3,8,5. После печати у вас будет три листа формата А4, на одной стороне которых отпечатаны уменьшенные копии страниц документа. Теперь надо эти листы переложить во входной лоток принтера для печати на обратной стороне оставшихся страниц документа. При этом важно обратить внимание на последовательность страниц. Одни принтеры переворачивают лист при печати, тогда порядок отпечатанных листов не меняется. Другие принтеры имеют прямой тракт подачи бумаги, а отпечатанные листы оказываются сложены в обратном порядке. Поскольку вам предстоит печатать на обратной стороне, то второй вариант удобнее.

Чтобы понять, какую последовательность задать для печати второй части документа, посмотрите, какой лист из уже отпечатанных и снова загруженных в приемный лоток принтера лежит сверху. Если на обратной стороне первого листа, подготовленного для печати, находится первая страница, то оставшиеся страницы надо печатать в прямой последовательности, как на рисунке: 2,11,4,9,6,7. Если же первым окажется лист со страницами 8 и 5 на обороте, то порядок печати листов надо поменять: 6,7,4,9,2,11.

Поскольку на одном листе брошюры располагается 4 страницы, то общее количество страниц в брошюре всегда кратно 4. Если в вашем документе страниц меньше, перед печатью добавьте в конце документа недостающее количество пустых страниц. Например, если в документе 9 страниц с текстом, добавьте еще 3 пустые страницы. Если этого не сделать, то при печати произойдет сдвиг страниц, нарушающий структуру брошюры.

Как видно, при печати брошюры довольно сложно сделать расчет нужной последовательности печатаемых страниц. При этом также легко запутаться с печатью обратной стороны листов. Чтобы упростить эту задачу, была создана программа BrocurePrint. Она позволяет легко и быстро получить нужную последовательность для печати документа, состоящего из любого количества страниц. При этом возможен расчет при расположении 2 (для брошюры формата А5) или 4 (для брошюры формата А6) страниц на листе.

Чтобы получить нужную последовательность, введите в верхнее текстовое поле количество страниц в вашем документе, выберите вариант расположения страниц на листе (2 или 4), а также порядок нумерации страниц для печати оборотной части листа. После нажатия на кнопку «Рассчитать» будут сформированы две последовательности страниц для печати на одной и на другой стороне бумаги.

Если выбран вариант размещения 4 страниц на одной стороне листа, то возможен вариант, когда нижняя часть последнего листа останется пустой. При прямой последовательности печати страниц на обороте листов это не приведет к смещению страниц (последний лист также будет полупустым). При обратной последовательности неполная запечатка листа может привести к смещению всех страниц. Поэтому в данном случае на листе, для которого не хватает страниц документа, дублируются уже существующие страницы. Это не ошибка программы, а необходимая мера для предотвращения неправильного размещения страниц при печати документа книжкой.

С помощью кнопок, расположенных рядом с номерами страниц, каждую последовательность можно скопировать в буфер обмена, чтобы затем вставить в окне настроек печати той программы, из которой будет распечатываться документ. Не забудьте предварительно добавить нужное количество пустых страниц до числа, кратного 4, а также задать в настройках печати требуемое расположение страниц на листе (2 или 4).

Программа бесплатна и может распространяться без всяких ограничений.

 

Скачать программу «Печать брошюры» с этого сайта (freeware, exe, 660 кБ)

Share