diff --git a/Hcs.Client/Client/Api/HouseManagementApi.cs b/Hcs.Client/Client/Api/HouseManagementApi.cs
index 1176b43..3f03297 100644
--- a/Hcs.Client/Client/Api/HouseManagementApi.cs
+++ b/Hcs.Client/Client/Api/HouseManagementApi.cs
@@ -118,6 +118,18 @@ namespace Hcs.Client.Api
return await request.ExecuteAsync(payload, token);
}
+ ///
+ /// Импорт прибора учета
+ ///
+ /// Прибор учета
+ /// Токен отмены
+ /// true, если операция выполнена успешно, иначе - false
+ public async Task ImportMeteringDeviceDataAsync(MeteringDeviceFullInformationType meteringDevice, CancellationToken token = default)
+ {
+ var request = new ImportMeteringDeviceDataRequest(client);
+ return await request.ExecuteAsync(meteringDevice, token);
+ }
+
///
/// Импорт новости для информирования граждан
///
diff --git a/Hcs.Client/Client/Api/Registry/Registry16.cs b/Hcs.Client/Client/Api/Registry/Registry16.cs
new file mode 100644
index 0000000..060aee5
--- /dev/null
+++ b/Hcs.Client/Client/Api/Registry/Registry16.cs
@@ -0,0 +1,20 @@
+using Hcs.Service.Async.HouseManagement;
+
+namespace Hcs.Client.Api.Registry
+{
+ ///
+ /// НСИ "Межповерочный интервал" (реестровый номер 16).
+ /// Взято из https://dom.gosuslugi.ru/opendataapi/nsi-16/v1.
+ ///
+ public static class Registry16
+ {
+ ///
+ /// 4 года
+ ///
+ public static nsiRef Element4 => new()
+ {
+ Code = "4",
+ GUID = "296aff1b-0fbe-4111-9aea-1693a6e58db0"
+ };
+ }
+}
diff --git a/Hcs.Client/Client/Api/Request/HouseManagement/ImportMeteringDeviceDataRequest.cs b/Hcs.Client/Client/Api/Request/HouseManagement/ImportMeteringDeviceDataRequest.cs
new file mode 100644
index 0000000..0b2f140
--- /dev/null
+++ b/Hcs.Client/Client/Api/Request/HouseManagement/ImportMeteringDeviceDataRequest.cs
@@ -0,0 +1,56 @@
+using Hcs.Client.Api.Request.Exception;
+using Hcs.Client.Internal;
+using Hcs.Service.Async.HouseManagement;
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Hcs.Client.Api.Request.HouseManagement
+{
+ internal class ImportMeteringDeviceDataRequest(ClientBase client) : HouseManagementRequestBase(client)
+ {
+ protected override bool CanBeRestarted => false;
+
+ internal async Task ExecuteAsync(MeteringDeviceFullInformationType meteringDevice, CancellationToken token)
+ {
+ // http://open-gkh.ru/HouseManagement/importMeteringDeviceDataRequest.html
+ var request = new importMeteringDeviceDataRequest
+ {
+ Id = Constants.SIGNED_XML_ELEMENT_ID,
+ version = "11.1.0.8",
+ MeteringDevice =
+ [
+ new importMeteringDeviceDataRequestMeteringDevice()
+ {
+ TransportGUID = Guid.NewGuid().ToString(),
+ Item = meteringDevice
+ }
+ ]
+ };
+
+ var result = await SendAndWaitResultAsync(request, async asyncClient =>
+ {
+ var response = await asyncClient.importMeteringDeviceDataAsync(CreateRequestHeader(), request);
+ return response.AckRequest.Ack;
+ }, token);
+
+ result.Items.OfType().ToList().ForEach(error =>
+ {
+ throw RemoteException.CreateNew(error.ErrorCode, error.Description);
+ });
+
+ var importResults = result.Items.OfType();
+ var commonResults = GetCommonResults(importResults);
+ foreach (var commonResult in commonResults)
+ {
+ if (commonResult.ItemElementName == ItemChoiceType26.importMeteringDevice)
+ {
+ return commonResult.Item is getStateResultImportResultCommonResultImportMeteringDevice;
+ }
+ }
+
+ return false;
+ }
+ }
+}
diff --git a/Hcs.Client/Hcs.Client.csproj b/Hcs.Client/Hcs.Client.csproj
index b156b4e..7d460dd 100644
--- a/Hcs.Client/Hcs.Client.csproj
+++ b/Hcs.Client/Hcs.Client.csproj
@@ -74,6 +74,7 @@
+
@@ -101,6 +102,7 @@
+
diff --git a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs
index d0901be..fd1a2e7 100644
--- a/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs
+++ b/Hcs.TestApp/TestApp/Scenario/HouseManagementScenario.cs
@@ -183,6 +183,41 @@ namespace Hcs.TestApp.Scenario
Console.WriteLine("Scenario execution " + (result ? "succeeded" : "failed"));
}
+ internal void ImportMeteringDeviceData()
+ {
+ var result = client.HouseManagement.ImportMeteringDeviceDataAsync(new MeteringDeviceFullInformationType()
+ {
+ BasicChatacteristicts = new MeteringDeviceBasicCharacteristicsType()
+ {
+ MeteringDeviceNumber = "Н43733003",
+ MeteringDeviceStamp = "-",
+ MeteringDeviceModel = "-",
+ CommissioningDate = new DateTime(2021, 1, 1),
+ CommissioningDateSpecified = true,
+ RemoteMeteringMode = false,
+ FirstVerificationDate = new DateTime(2021, 1, 1),
+ FirstVerificationDateSpecified = true,
+ VerificationInterval = Registry16.Element4,
+ FactorySealDate = new DateTime(2021, 1, 1),
+ FactorySealDateSpecified = true,
+ TemperatureSensor = false,
+ PressureSensor = false,
+ Item = new MeteringDeviceBasicCharacteristicsTypeResidentialPremiseDevice()
+ {
+ PremiseGUID = ["6e011824-3d8a-48d7-b0ee-7b36be7096bf"],
+ AccountGUID = ["019917a8-6eb6-74cc-99b7-58350127ac50"]
+ }
+ },
+ Item = true,
+ Items = [new MunicipalResourceNotElectricBaseType()
+ {
+ MunicipalResource = Registry239.Element4,
+ MeteringValue = "0"
+ }]
+ }).Result;
+ Console.WriteLine("Scenario execution " + (result ? "succeeded" : "failed"));
+ }
+
internal void ImportNotificationData()
{
var payload = new ImportNotificationDataPayload()