История эта началась в феврале 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 Community (мы использовали Visual Studio 2010 Express). И первой проблемой оказался тот факт, что Visual Studio 2019 Community не устанавливается на 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 Community решили, что настоящие программисты не должны больше использовать Windows 7! Да, после ошибочной установки VS 2019 Community запускался, но вот так необходимый NuGet не работала – после установки любого пакета кроме самых примитивных писало ошибку версий и откатывало установку пакета. Психанул, поставил VS 2019 Community на 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/ через аккаунт на госуслугах
получить усиленную квалифицированную ЭЦП (брал в "Контуре", но, скорее всего, и в других местах получить ее можно). Нужна для подписи заявления.
установить Крипто Про CSP - там идет бесплатный вариант на 90 дней - как раз должно хватить на подачу заявления
иметь свидетельство о регистрации программы для ЭВМ в реестре программ для ЭВМ
очень тщательно заполнить / подготовить все указанные там документы. Без балды. Если неясно что писать, например, в документе по жизненному циклу ПО, просто вбиваем в гугл требование, ищем подобные документы, и делаем как в ВУЗе рефераты. И да, инсталляха Вашего проекта должна быть очень легкая в установке. В идеале, чтобы у комиссии вообще не возникало вопросов при установке.
Заходим на сайт https://reestr.digital.gov.ru и просто подаем заявление. Но есть нюансы. Интерфейс подачи заявления с первого взгляда кажется дружественным и понятным. Но не стоит забывать, что мы имеем дело с государством. Не надо расслабляться! Я расслабился, и не стал читать инструкцию по заполнению (вот эту). И в результате забыл прикрепить одну справку. В результате мне отказали в принятии заявления (пришло email c заголовком «Установлен статус «отказ в регистрации» для заявления о включении сведений»). Как я расстроился, ведь повторно можно подавать только через год. Но внимательно изучив документы, я понял, что мне отказали не в регистрации ПО, а принятии заявления. Это совсем другое дело! Повторно в этом случае можно подавать хоть через минуту, исправив указанные недочеты. И я, получив таки эту очень важную справку, через месяц опять подал заявление.
Если честно, то подавая заявление был какой-то мандраж. Там рядом с моими заявлениями были всякие РосТелеСтрой из Сколково, или РобоНаноЦентр из Питера. И тут я такой условный Вася Пупкин из провинциального Урюпинска. Думал, откажут, еще и посмеются – типа куда со своим свиным рылом да в калашный ряд. Но потом, поразмышляв, подумал, а что я теряю? Ну не включат, да и хрен с ним! Программист в современном мире всегда работу найдет! Да, заявление я подавал от своего имени от частного лица.
Но все прошло хорошо. В течении пары месяцев мне пришли следующие email:
Установлен статус «передано на регистрацию» для заявления о включении сведений
Установлен статус «зарегистрировано» для заявления о включении сведений
Заявление размещено на сайте
Установлен статус «подготовка голосования» для заявления о включении сведений
Установлен статус «принятие решения» для заявления о включении сведений
Установлен статус «включено в реестр» для заявления о включении сведений
P.S.: готов ответить на любые Ваш вопросы по теме поста!
P.P.S.: тут просят "рыбу" жизненного цикла ПО - ловите! Хочу отметить, что она далеко неидеальна. Но проверку вроде прошла.
Комментарии (23)
gdt
17.01.2022 18:42Подскажите, пожалуйста, почему не рассматривали установку Visual Studio на Windows 10 (11)? Это же рабочая машина должна быть, если все правильно понимаю.
korvint Автор
17.01.2022 19:23Так не было ни одного рабочего компа с Windows 10.
В смысле были, но вот чтобы для эксперимента - нет.
eiim
17.01.2022 19:23Не нашел в методических рекомендациях явный запрет на .NET Framework, но опять же есть пункт, разрешающий «Платформы с открытой лицензией». Получается что не разрешено, то запрещено?
korvint Автор
17.01.2022 19:24Может оно и так, но .NetCore есть явно среди разрешенных.
А все, что написано под .NET Framework можно перегнать на .NetCore. По крайней мере большую часть точно.
almaz1c
17.01.2022 23:37Прочитал с интересом, спасибо!
Не хочу показаться занудой, но увидев заголовок статьи, я ожидал увидеть данный субж:
очень тщательно заполнить / подготовить все указанные там документы
Хотя бы галопом по Европам. Это как в инструкции по эксплуатации написать: "а теперь вдумчиво соберите устройство")
korvint Автор
18.01.2022 09:30+1Какой смысл повторять вот эту инструкцию? Я просто привел на нее ссылку и указал, что без ее вдумчивого изучения Вы правильно документы не подадите. Каким бы дружественным и понятным не казался интерфейс подачи заявления!
ifap
18.01.2022 00:17иметь подтверждённую учётную запись на госуслугах
Разве достаточно учетки физлица, не "корпоративная" нужна?
korvint Автор
18.01.2022 11:07+1Да, совсем забыл про усиленную квалифицированную ЭЦП - без нее никак не подписать заявление. Добавил в пост.
gosha-z
19.01.2022 12:28+1Если заявитель - юрлицо, то у него уже должна быть КЭЦП и лицензия на сертфицированный криптопровайдер, поскольку то ли с 2012 то ли с 2013, не помню точно, НД по НДС сдается исключительно в электронном виде, соотв. всё вышеперечисленное должно быть в бухгалтерии. А если есть КЭЦП - считайте, есть аккаунт на госуслугах...
korvint Автор
19.01.2022 16:03Тут в личке просят привести "рыбу" жизненного цикла. Сделал и выставляю ее тут. Не стану утверждать, что она идеальна, но проверку прошла. Не забудьте тщательно изменить ее под свое ПО и свои ФИО! Попробую ее сейчас добавить и в сам пост.
Daddyz
Поздравляю с включением! Стоило бы, пожалуй, в паре предложений написать о назначении своего ПО, истории его развития, есть ли уже в реестре конкурирующее ПО. Я посмотрел ваши публикации на Хабре и пришел к выводу, что ваше ПО предназначено для автоматизации складского учёта. Поправьте, если не так.
korvint Автор
Все верно, высокоуровненое ПО для управления складскими роботами. Я когда-то делал про него пост на хабре: https://habr.com/ru/post/155303/
За эти годы система сильно продвинулась. Сейчас научилась управлять до 4-х роботов включительно на одном рельсе. Сейчас реально рулит огромными комплексами размерами с футбольное поле и с ~40-ка роботами.
Конкурирующего ПО в реестре не нашел, но похожее есть.