Государственная информационная система жилищно-коммунального хозяйства с точки зрения рядового потребителя услуг в теории представляет собой некоторый единый интерфейс для получения соответствующих отчетов и взаимодействия с другими участниками системы (работа с обращениями, договорами, оплата услуг, решение "общедомовых" вопросов). Для реализации данного функционала поставщики информации и исполнители услуг (управляющие компании - далее УК, ресурсоснабжающие организации - далее РСО, операторы капитального ремонта, операторы по обращению с твердыми бытовыми отходами, расчетные центры, органы государственной власти, ФНС, Росреестр и др.) должны интегрироваться с ГИС в разрезе набора предопределенных видов объектов (договоры, услуги, объекты недвижимости и т.д.).Текст ниже будет полезен на начальном этапе интеграции.
Предположим, что вы уже обзавелись доступом в личный кабинет организации под правами уполномоченного специалиста или выше (этап создания учётной записи в ЕСИА, настройки прав и работы в личном кабинете хорошо описан в инструкции - на нём останавливаться не будем). Теперь нужно определиться с тем, "что", "в какие сроки" и "как" выгружать. На вопросы "что выгружать" и "в какие сроки" отвечает приказ №74-114-пр (с изменениями 319-906-пр и 550-1434-пр) - текст можно найти здесь. Далее рекомендую изучить инструкции, в которых кроме прочего содержится описание типов объектов и порядок их интеграции (на примере для РСО): «Технологическая инструкция_РСО», «Регламент взаимодействия внешних систем с ГИС ЖКХ» и «Альбом ТФФ» с раздела 2.2.6 (два последних документа находятся в архиве «Регламент и форматы информационного взаимодействия внешних информационных систем с ГИС ЖКХ»). Описанные выше инструкции можно скачать в разделе «Регламенты и инструкции» верхнего меню главной страницы сайта. Теорию нужно подкреплять практикой - для этого предназначены стенды интеграционного тестирования ГИС ЖКХ (СИТ01 - для текущей версии форматов и СИТ02 - для следующей версии). Доступ к стендам предоставляет служба технической поддержки после подачи заявки. Кроме доступа по основной роли (РСО, УК и т.д.) можно запросить доступ и для других ролей (например, роль потребителя услуг, чтобы посмотреть, как будут выглядеть платежные документы в его личном кабинете). Следует иметь ввиду, что некоторые проблемы интеграции можно обнаружить только на промышленном программно-аппаратном комплексе (далее ППАК), так как СИТ может быть не заполнен сведениями в вашем населённом пункте. Другими словами, большинство видов объектов между СИТ01, СИТ02 и ППАК не синхронизируются (за исключением данных Росреестра и ФИАС). Доступ на добавление/изменение данных в зависимости от ролей описан в «Альбом ТФФ». Также рекомендую подать заявку на доступ к Jira ГИС ЖКХ (поиск по коду ошибок, возможность создания заявок, голосование за интересные предложения по развитию системы и т.д.). Из открытых источников будут полезны чат и группа Telegram.
Настала пора определиться с тем, какой вариант интеграции использовать: личный кабинет, с помощью шаблонов и API (в терминах ГИС "легковесная интеграция"). При этом по возможностям самым бедным из них является вариант с шаблонами. Для понимания работы связей между различными объектами советую создать по нескольку штук каждого вида через личный кабинет. Совсем маленьким организациям этого может быть достаточно - интерфейс более-менее понятный, на сайте присутствуют подробные инструкции, доступна история изменений и вариативность для некоторых видов объектов. Хотя данный вариант и считается "ручным", но в основе своей работы содержит API (документацию к нему в открытых источниках пока найти не удалось). Кроме этого, можно воспользоваться JavaScript для автоматизации некоторых действий. Например, для быстрого удаления договоров ресурсоснабжения (далее ДРСО) в стадии «Проект» на примере Google Chrome можно сделать следующее: зайти на страницу с договорами, выбрать отображение по 100 штук на страницу, открыть инструменты разработчика (ctrl+shift+i), зайти на складку Console и последовательно с задержкой (ГИС порой очень "задумчива") выполнить
$(".dropdown-base__menu-i-action:contains('Удалить')").each(function( index ) { $( this ).click(); });
и
$(".btn-action[ng-click='yes(\'ok\')']").each(function( index ) { $( this ).click(); });
HtmlUnit, Selenium и их аналоги использовать не советую - продуктивнее потратить время на легковесную интеграцию или через шаблоны.
С помощью шаблонов на текущий момент можно синхронизировать большинство видов объектов. Изменения в шаблоны вносит практическая каждая новая версия системы - надеюсь, что со временем данный вид интеграции по функциональным возможностям будет соответствовать легковесной. Имея опыт работы в личном кабинете, разобраться с шаблонами будет достаточно просто. Обычно шаблон соответствует некоторому виду объекта и представляет собой файл формата "xlsx". Часть шаблонов можно скачать в открытой части ГИС (раздел «Шаблоны» в меню «Регламенты и инструкции» на главной странице), некоторые через личный кабинет (содержимое скрытых листов в этом случае заполняется в зависимости от роли организации). Особый вид шаблонов - выгрузки списка объектов (при этом для большинства видов действуют установленные на момент выгрузки фильтры). Рассмотрим схему размещения информации через шаблоны на примере РСО.
На рисунке выше базовой информацией в системе являются ДРСО, но на самом деле базой являются дома, идентификация которых по большей части осуществляется по ФИАС. В случае отсутствия дома в ФИАС участник системы может подать заявку на создание временного идентификатора дома в ГИС ЖКХ. Если для одного дома существует более одного идентификатора, то указывать нужно "основной" (выделяется жирным цветом в выдаче сервиса «Узнать код дома в ГИС ЖКХ» на странице https://dom.gosuslugi.ru/#!/eServices). Кратко рассмотрим некоторые из основных этапов.
1. Выгружаем и размещаем ДРСО с указанием идентификаторов домов ФИАС (или временных идентификаторов ГИС ЖКХ). Для жилых/нежилых помещений МКД дополнительно нужно указывать номер помещения. С жилыми все просто - обычно это порядковый номер квартиры. С нежилыми интереснее - как таковой номер может отсутствовать (тогда в свидетельстве права собственности присутствует описание местоположения помещения или номер на плане). Нужно иметь ввиду следующий момент: дом в ДРСО и дом в объектах жилищного фонда (далее ОЖФ) представляют собой разные объекты (хотя они и связаны идентификатором ФИАС). С помещениями аналогично - поэтому желательно, чтобы номера в справочнике ОЖФ и в договоре совпадали, но на практике только по данным из вашей информационной системы (далее ИС) сделать это проблематично (пример из практики, когда другой поставщик информации в качестве номера нежилого помещения указал строку "офис ФГУП Почта России"). Чтобы получить данные по ОЖФ - нужно иметь размещенный ДРСО, чтобы "правильно" (с точки зрения ГИС ЖКХ) заполнить ДРСО - нужно получить выгрузку ОЖФ. Для решения проблемы можно организовать "многоходовочку" - разместить ДРСО с номерами нежилых из вашей ИС, сделать выгрузку ОЖФ и затем переопубликовать ДРСО с номерами ГИС ЖКХ. На текущий момент номер можно заполнять любыми удобными для дальнейшей идентификации в вашей ИС значениями, а синхронизацию с ОЖФ сделать позже. Вариантов синхронизации нежилых помещений немного: ФИАС + кадастровый номер (заполняется очень редко), ФИАС + номер помещения (обычно в номере наименование организации владельца/арендатора и т.п.), ФИАС + площадь (наиболее рабочий вариант в случаях, когда в доме нет помещений с одинаковой площадью). К сожалению, в шаблоне выгрузки ОЖФ площадь не указывается (можно посмотреть через личный кабинет или в легковесной интеграции). В результате каждому ДРСО присваивается некоторый идентификатор.
2. Синхронизируем данные по домам. Для жилых домов и МКД достаточно идентификатора ФИАС (или временного идентификатора дома ГИС ЖКХ), для домов блочной застройки дополнительно нужно знать номер блока.
3. Импорт/Экспорт ОЖФ (жилые/нежилые помещения и комнаты). В случае выгрузки нежилых рекомендую указывать кадастровый номер. Для жилых помещений желательно указывать номер подъезда, так как без него выгруженные помещения будут созданы "с отдельным входом". По результатам данного пункта все помещения в вашей ИС должны иметь уникальные номера ОЖФ ГИС ЖКХ (они понадобятся в пунктах 4 и 5).
4. Для создания лицевых счетов нужно указывать уникальный номер ОЖФ или адрес. В результате для каждого лицевого счета вашей ИС будет создан единый лицевой счет и идентификатор жилищно-коммунальной услуги.
5. Приборы учёта нужно заводить в разрезе лицевого счета и ОЖФ (в данном случае можно указывать только уникальный номер). В результате для каждого прибора ГИС ЖКХ сформирует уникальный номер, который понадобится для выгрузки показаний.
6. Создаем платежные документы в разрезе лицевых счетов и жилищно-коммунальных услуг. Желательно заполнять все поля (даже те, которые ГИС может рассчитать самостоятельно). По поводу долговых платежных документов – для себя решил не заполнять их вообще или заполнять только при первой выгрузке по лицевому счету (существуют ошибки с отображением информации по долгам в личном кабинете потребителя услуг – должны исправить в ближайших версиях). В результате для каждого платежного документа получаем его уникальный номер.
7. С автоквитированием все не очень хорошо в ГИС на текущий момент (лучше отключить через личный кабинет). Вообще, механизм квитирования вызываем много вопросов и споров – давать рекомендации по работе с ним пока не возьмусь. Шаблон о внесении платы очень простой (дата, сумма и данные по платежному документу и/или жилищно-коммунальной услуге).
Периодически нужно обновлять информацию в вашей ИС с помощью загрузки шаблона со списком актуальных объектов: у дома может поменяться тип, у ДРСО закончиться срок действия, у контрагента измениться статус в ЕГРЮЛ/ЕГРИП и т.д. Все шаблоны рекомендую какое-то время сохранять (для "разбора полетов"), а в случае хранения в ИС - в качестве отдельных реквизитов записывать версию шаблона и его тип (можно найти на скрытом листе "conf"). Следует отметить, что выборки данных из вашей ИС для шаблонов будут схожи с выборками для легковесной интеграции.
Легковесная интеграция является самой сложной в реализации. Для 1С по этой теме удалось найти только эту статью. В качестве подготовительного этапа рассмотрим пример получения информации по своей организации на СИТ. Сперва нужно получить сертификат от тестового центра - весь процесс подробно описан в инструкции, но есть пара интересных моментов:
• для работы защищенного соединения и бесплатной версии утилиты P12FromGostCSP во время генерации сертификата нужно выбирать GOST R 34.10-2001 CSP;
• до начала генерации сертификата ActiveX должен быть включен;
• заявка на добавление информационной системы на тестовых серверах переводится в статус "Утверждена" автоматически сразу же после добавления;
• в случае возникновения ошибки длины ИНН - добавить соответствующее количество нулей в начало.
В случае успеха (сертификат получен, права собственной ИС через личный кабинет делегированы, stunnel настроен) можно попробовать открыть в браузере адрес вида http://[ipи порт из настроек stunnel, например 127.0.0.1:8080]/ext-bus-org-registry-common-service/services/OrgRegistryCommon?wsdl. Если в ответе не то, что ожидали - первым делом советую проверить выполнение всех шагов из инструкции с сайта ГИС ЖКХ в плане создания шифрованного туннеля. Настало время выполнить запрос без XAdES-BES подписи - открываем любимый SOAP клиент, в качестве тела запроса указываем (не забывая заполнить реквизиты basic аутентификации и ОГРН вашей организации в ГИС ЖКХ):
<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:base="http://dom.gosuslugi.ru/schema/integration/base/" xmlns:org="http://dom.gosuslugi.ru/schema/integration/organizations-registry-common/" xmlns:xd="http://www.w3.org/2000/09/xmldsig#" xmlns:org1="http://dom.gosuslugi.ru/schema/integration/organizations-base/" xmlns:org2="http://dom.gosuslugi.ru/schema/integration/organizations-registry-base/">
<soapenv:Header>
<base:ISRequestHeader>
<base:Date>2018-01-28T03:18:33.560+03:00</base:Date>
<base:MessageGUID>${=java.util.UUID.randomUUID()} </base:MessageGUID>
</base:ISRequestHeader>
</soapenv:Header>
<soapenv:Body>
<org:exportOrgRegistryRequestbase:version="10.0.2.1">
<org:SearchCriteria>
<org1:OGRN>{ОГРН}</org1:OGRN>
</org:SearchCriteria>
</org:exportOrgRegistryRequest>
</soapenv:Body>
</soapenv:Envelope>
В результате получаем информацию по организации, в том числе orgPPAGUID (должен совпадать с тем, что указан в личном кабинете):
Для любого варианта интеграции при работе с ГИС возникают ошибки и задержки в обработке запросов. Для организаций, которым не подходит вариант работы только через личный кабинет, имеет смысл рассмотреть возможность реализации и легковесной интеграции и через шаблоны одновременно. Например, если легковесная интеграция не работает (задержки по нескольку дней), то при этом может отлично работать загрузка шаблонов и наоборот.
Особенно важным критерием для подготовительного этапа является корректность и актуальность данных в разрезе объектов недвижимости вашей ИС. Для домов это идентификатор ФИАС и тип дома (МКД, жилой/частный дом и дом блочной застройки), для нежилых помещений - кадастровый номер. В случае 1С - ФИАС в типовых конфигурациях не содержит идентификатор дома (только улицы, для домов доступен только список номеров) и тип дома, работа с кадастровыми номерами в типовых мне не встречались. Рассмотрим некоторые варианты актуализации вышеописанных данных. Следует иметь ввиду, что работоспособность описанных ниже методик зависит от региона/города, данные по которому нужно актуализировать.
Для получения идентификатора ФИАС дома при наличии идентификатора родительского объекта (улицы, района, населенного пункта) и номера дома достаточно скачать полную базу ФИАС и обработать таблицу HOUSE. Если адрес хранится не в структурированном виде, то автоматизировать такой процесс без сторонних сервисов (например, DaData.ru) достаточно сложно.
Тип дома необходим только для создания новой сущности в ОЖФ (если дом уже был кем-то внесён ранее, то его тип можно получить из шаблона выгрузки списка или соответствующим запросом в случае легковесной интеграции). Для уточнения типов "МКД" и "дом блочной застройки" можно воспользоваться сервисом РеформаЖКХ. Доступ к сервису предоставляется после заявки в службу технической поддержки через электронную почту. API сервиса хорошо описан - скорее всего вам понадобятся методы «GetHouseInfo» (для получения общей информации по дому и его уникальный код в сервисе с отбором по идентификатору ФИАС), «GetHouseProfile988» (получение типа дома по его уникальному коду) и «GetHouseProfileSFActual» (для порционного получения детальной информации по всем домам). Кроме этого, тип дома можно определить по его описанию в 2Gis. Исходный код (C#, vs2017) для формирования текстового файла с данными по домам из десктопной версии 2Gis (адреса, описание зданий, координаты) размещён ниже и на github (со времен студенчества на шарпе не писал - просьба "понять и простить"). Другой вариант - использовать 2Gis online. Следует иметь ввиду, что описание дома может не совпадать с реальностью, поэтому рекомендую делать сравнение результатов из разных источников.
Работу с кадастровыми номерами можно реализовать с помощью сервиса apirosreestr.ru и открытым API Росреестра (результаты специфичны для каждого региона). Оба бесплатны и при этом позволяют по адресу производить поиск кадастровых номеров и сопутствующей информации для домов и жилых/нежилых помещений. Другими словами, по адресу можно сформировать список доступных помещений и выбрать нужное. Если же в вашей ИС уже присутствует сам кадастровый номер, то с помощью сервисов можно получать площадь, тип объекта и другую полезную информацию.
На этом описание подготовительного этапа можно считать завершенным. Осталось продумать связи между объектами в вашей ИС и ГИС ЖКХ, реализовать/проверить выбранный вариант интеграции на тестовом стенде и затем начинать работать с ППАК. На текущий момент ГИС ещё находится в разработке и не реализовывает все тонкости законодательной базы (кроме этого редко бывает доступна в выходные дни, присутствуют ошибки в логике и по превышению таймаутов, содержит некорректные данные, может терять некоторые сущности) - в основном система уже работает :) Надеюсь данная статья поможет вам подготовиться к интеграции!
Дополнительные полезные ссылки:
https://github.com/springjazzy/Xades
https://github.com/gizmo75rus/HCS (XAdES-BES без КриптоПро .NET)
P.S.: Данная публикация описывает личное мнение. Конструктивная критика приветствуется. Опечатки просьба отправлять в личном сообщении.