История эта началась в феврале 2021-го года. Когда мы привычно выставили счет за наше ПО и получили звонок с бухгалтерии клиента с вопросом "а НДС где"? Мы в ответ попытались рассказать, что ПО в России НДС не облагается, но тут же узнали от бухгалтеров клиента, что мы проспали очередное изменение законодательства РФ. С Нового года не облагается НДС лишь то ПО, которое попадало в реестр Минкомсвязи. И перед нами встал насущный вопрос включения нашего ПО в тот самый реестр.
Изюминкой на торте было твердое обещание правительства разрешить госпредприятиям закупать лишь то ПО, которое включено в тот самый новый реестр. А учитывая, что половина наших клиентов – госпредприятия, включение в реестр стало задачей №1.
Прежде всего, хочу выразить благодарность всему habr и Антону Калугину (@Morigh) в частности за его блестящую статью https://habr.com/ru/post/503764/ . Если бы не эта статья, то пролетели бы мы как фанера над Парижем с этим включением. Конкретно из поста автора я узнал про методические рекомендации (см. https://ru-ikt.ru/metodicheskiye_rekomendatsi/) . Внимательно изучив которые я понял, что наше ПО в реестр минкомсвязи не включат никогда! Поскольку оно базируется на неразрешенной платформе .Net FrameWork 4 и на запрещенном СУБД Oracle Database. После курения бамбука приняли решение переходить на разрешенные PostgreSQL и .NetCore. Каюсь, были мысли перейти на .Net 5 и PostgresPro. Однако, вспомнив, что решение будут принимать бюрократы, остановились на .NetCore (оно есть явно в списке). А, ознакомившись с ценами на «бесплатный» PostgresPro, остановились на PostgreSQL (тоже есть в списке).
Чтобы перейти на .NetCore стала задача вначале перейти на Visual Studio 2019 Express (мы использовали Visual Studio 2010 Express). И первой проблемой оказался тот факт, что Visual Studio 2019 Express не устанавливается на Windows 7. Проверено на двух разных компьютерах. Установщик вылетает в процессе установки с ошибкой:
Текст ошибки
Не удалось установить пакет "Microsoft.Windows.SDK.BuildTools_10.0.19041.8,version=1.0.0.0".
URL-адрес поиска https://aka.ms/VSSetupErrorReports?q=PackageId=Microsoft.Windows.SDK.BuildTools_10.0.19041.8;PackageAction=Install;ReturnCode=-2146233088
Сведения
Код возврата: -2146233088
Сведения о коде возврата: Произошла одна или несколько ошибок.
Гугленье в течении рабочего дня результата не принесло. Видимо, разработчики VS 2019 Express решили, что настоящие программисты не должны больше использовать Windows 7! Да, после ошибочной установки VS 2019 Express запускался, но вот так необходимый NuGet не работала – после установки любого пакета кроме самых примитивных писало ошибку версий и откатывало установку пакета. Психанул, поставил VS 2019 Express на Windows Server 2016. Встало без проблем и все пакеты NuGet без проблем поставил.
Чтобы перейти на с .Net FrameWork 4 на .NetCore 3.1, вначале пытался использовать всякие скрипты из Инета. Выбрал первые три из топа. На каждый тратил по рабочему дню – но ничего не получалось. Все время сыпались какие-то маловразумительные ошибки. Плюнул, создал подходящий чистый проект .Net Core и стал вручную помодульно копировать исходники. Да, может быть глупо, но через неделю все перенес. Вопросы возникали лишь с нюансами вызова похожих функций в разных версиях пакетов.
По переводу СУБД с Oracle на PostgreSQL есть куча инфы. Лично мне понравился проект ora2pg (см. https://habr.com/ru/company/custis/blog/262605/). Стал быстро. Данные из базы перенес шустро. Было пару мелких нюансов, но быстро понял что к чему. Да, исходники триггеров и pl-sql пакетов я ему не доверил. Переносил все вручную. Пакетов специфичиных было около 1МБ сорцов. По времени перенос занял около 1 месяца.
Само собой, никто проект умению работы с Oracle не лишал. Просто сделали возможность выбора – теперь наша система могла работать как с Oracle СУБД, так и с PostgreSQL – дело минутной настройки .ini файла. Просто сделали класс абстрактный «субд» - а от него классы «Oracle» и «PostgreSQL».
Отдельно обращал внимание на то, чтобы все библиотеки, что идут к моему проекту, были по лицензиям, указанным в посте Антона Калугина. Встал вопрос с библиотеками Oracle. Хоть в предлагаемом варианте он и не использовался, но у проверяющих мог встать вопрос о том, что делает запрещенные библиотеки в инсталляхе? Потому пошли простым путем – через переменные компилятора сделали настройку – разрешать Oracle или нет. Если нет, то соотв. объекты убирались из проекта. И в отосланной инсталляхе нашего проекта не осталось и следа от запрещенного Oracle.
Теперь о самом процессе регистрации. Он бесплатен. Но для этого необходимо:
-
иметь подтверждённую учётную запись на госуслугах
-
зарегестрироваться на https://reestr.digital.gov.ru/ через аккаунт на госуслугах
-
иметь свидетельство о регистрации программы для ЭВМ в реестре программ для ЭВМ
-
очень тщательно заполнить / подготовить все указанные там документы. Без балды. Если неясно что писать, например, в документе по жизненному циклу ПО, просто вбиваем в гугл требование, ищем подобные документы, и делаем как в ВУЗе рефераты. И да, инсталляха Вашего проекта должна быть очень легкая в установке. В идеале, чтобы у комиссии вообще не возникало вопросов при установке.
Заходим на сайт https://reestr.digital.gov.ru и просто подаем заявление. Но есть нюансы. Интерфейс подачи заявления с первого взгляда кажется дружественным и понятным. Но не стоит забывать, что мы имеем дело с государством. Не надо расслабляться! Я расслабился, и не стал читать инструкцию по заполнению (вот эту). И в результате забыл прикрепить одну справку. В результате мне отказали в принятии заявления (пришло email c заголовком «Установлен статус «отказ в регистрации» для заявления о включении сведений»). Как я расстроился, ведь повторно можно подавать только через год. Но внимательно изучив документы, я понял, что мне отказали не в регистрации ПО, а принятии заявления. Это совсем другое дело! Повторно в этом случае можно подавать хоть через минуту, исправив указанные недочеты. И я, получив таки эту очень важную справку, через месяц опять подал заявление.
Если честно, то подавая заявление был какой-то мандраж. Там рядом с моими заявлениями были всякие РосТелеСтрой из Сколково, или РобоНаноЦентр из Питера. И тут я такой условный Вася Пупкин из провинциального Урюпинска. Думал, откажут, еще и посмеются – типа куда со своим свиным рылом да в калашный ряд. Но потом, поразмышляв, подумал, а что я теряю? Ну не включат, да и хрен с ним! Программист в современном мире всегда работу найдет! Да, заявление я подавал от своего имени от частного лица.
Но все прошло хорошо. В течении пары месяцев мне пришли следующие email:
-
Установлен статус «передано на регистрацию» для заявления о включении сведений
-
Установлен статус «зарегистрировано» для заявления о включении сведений
-
Заявление размещено на сайте
-
Установлен статус «подготовка голосования» для заявления о включении сведений
-
Установлен статус «принятие решения» для заявления о включении сведений
-
Установлен статус «включено в реестр» для заявления о включении сведений
P.S.: готов ответить на любые Ваш вопросы по теме поста!
Автор: Сергей