DeviceDataType.Month. Сохранение месячных данных

День добрый!
Сталкнулся со следующей ситуацией:
Раньше мы сохраняли текущие и часовые данные и всё работало отлично. Но вот понадобилось нам записывать еще и дневные и месячные. При запиcи месячных данных выходит ошибка:
Метка времени месячных данных 10.07.2017 0:00:00 содержит дни, часы, минуты, либо секунды.

 MeasurePointConsumptionRecordCollection data =  new MeasurePointConsumptionRecordCollection(DeviceDataType.Month);
MeasurePointConsumptionRecordWater record = new MeasurePointConsumptionRecordWater(DateTime.Now.Date);
 record.V_in = value; // Объем перекаченной воды
 data.Add(record); //Здесь ошибка
  1. Я так понимаю библиотеке не нравится что у даты есть время. Но как его убрать?

  2. И еще если Записывать последовательно друг за другом текущие, часовые, дневные и месячные данные - то запишутся только текущие. Остальные в Бд почему то не попадают. Но если делать между записями небольшую задержку, то все записи попадают в БД.

  3. Не пишутся дневные данные. Если после записи зайти в таблицу в ЛЕРС, то там будут только расчетные значения дневного архива.

  1. Покажите сообщение об ошибке.
    1. Покажите пример кода по каждому пункту.
  1. Ошибка, возникающая при последовательной записи всех архивов без задержки:
    2017-07-11 11:24:48.4350|Error| Ошибка отправки данных в LERS: Lers.NoConnectionException: Соединение с сервером не установлено или было разорвано.
    в Lers.Networking.UserSession.ExecuteRequestAsync(Int32 operationId, PropertyBag requestData, Int32 timeOut, AsyncOperationCallback callback, Object userState, ISynchronizeInvoke synchronizeInvoke)
    в Lers.Core.MeasurePointData.SetConsumptionAsync(MeasurePointConsumptionRecordCollection consumption, MeasurePointSetConsumptionOptions options, AsyncOperationCallback callback, Object userState)
    в Lers.Core.MeasurePointData.SetConsumption(MeasurePointConsumptionRecordCollection consumption, MeasurePointSetConsumptionOptions options)
    в LERSService.LERSTools.SendToLERS(ImpulseModel model, Boolean DisconnectWhenFinished, DeviceDataType typeValue) в D:ProjectsGitLersService1LERSServiceCoapUILERSTools.cs:строка 179
    2017-07-11 11:24:48.5100|Error| Проблема с закрытием соединения с сервером LERS: Lers.NoConnectionException: Соединение с сервером не установлено или было разорвано.
    в Lers.LersServer.Disconnect(Int32 logoutTimeout)
    в LERSService.LERSTools.DisconnectServer() в D:ProjectsGitLersService1LERSServiceCoapUILERSTools.cs:строка 85

Ошибка, возникающая при записи месячного архива:
2017-07-11 11:26:34.3171|Error| System.ArgumentException: Метка времени месячных данных 05.07.2017 0:00:00 содержит дни, часы, минуты, либо секунды.
в Lers.Data.MeasurePointConsumptionRecordCollection.CheckDateTimeValue(DateTime dateTime, DeviceDataType dataType)
в Lers.Data.MeasurePointConsumptionRecordCollection.Add(MeasurePointConsumptionRecord item)
в LERSService.LERSTools.SendToLERS(ImpulseModel model, Boolean DisconnectWhenFinished, DeviceDataType typeValue) в D:ProjectsGitLersService1LERSServiceCoapUILERSTools.cs:строка 162: System.ArgumentException: Метка времени месячных данных 05.07.2017 0:00:00 содержит дни, часы, минуты, либо секунды.
в Lers.Data.MeasurePointConsumptionRecordCollection.CheckDateTimeValue(DateTime dateTime, DeviceDataType dataType)
в Lers.Data.MeasurePointConsumptionRecordCollection.Add(MeasurePointConsumptionRecord item)
в LERSService.LERSTools.SendToLERS(ImpulseModel model, Boolean DisconnectWhenFinished, DeviceDataType typeValue) в D:ProjectsGitLersService1LERSServiceCoapUILERSTools.cs:строка 162
2.

// Сохраняем суточные данные о потреблении по точке учета.
                                // Чтобы сохранить данные по воде, используйте Lers.Data.WaterConsumptionRecord, по электроэнергии - Lers.Data.ElectricConsumptionRecord.

                                MeasurePointConsumptionRecordCollection data =
                                    new MeasurePointConsumptionRecordCollection(typeValue);
                                MeasurePointTotalsRecordCollection data2 = new MeasurePointTotalsRecordCollection();
                                if (typeValue == DeviceDataType.Hour || typeValue == DeviceDataType.Day || typeValue == DeviceDataType.Month);
                                {
                                    MeasurePointConsumptionRecordWater record =
                                        new MeasurePointConsumptionRecordWater(
                                            getDateTime(typeValue, time));
                                    record.V_in = value*commentObj.mulriplier; // Объем перекаченной воды
                                    data.Add(record);
                                }
                                else
                                {
                                    MeasurePointTotalsRecordWater record = new MeasurePointTotalsRecordWater(getDateTime(typeValue, time));
                                    record.V_in = value*commentObj.mulriplier;
                                    data2.Add(record);
                                }

                                // Устанавливаем флаг для перезаписи существующих данных и сохраняем данные.

                                MeasurePointSetConsumptionOptions options = new MeasurePointSetConsumptionOptions();
                                options.OverwriteExistingRecords = true;
                                MeasurePointSetTotalsOptions options2 = new MeasurePointSetTotalsOptions();
                                options2.OverwriteExistingRecords = true;
                                try
                                {
                                    if (typeValue == DeviceDataType.Hour);
                                    {
                                        measurePoint.Data.SetConsumption(data, options);
                                    }
                                    else { measurePoint.Data.SetTotals(data2, options2); } 
                                    Log.Logger.Info(
                                        string.Format(
                                            "Успешная отправка данных в LERS - значение - {0}, номер входа -{1}, время - {2}",
                                            value, i, model.DateTime));
                                }
                                catch (Exception ex);
                                {
                                    Log.Logger.Error(ex, "Ошибка отправки данных в LERS");
                                    success = false;
                                }

где getDateTime:

private static DateTime getDateTime(DeviceDataType typeValue, DateTime time);
        {
            switch (typeValue);
            {
                case DeviceDataType.Hour: return new DateTime(time.Year, time.Month, time.Day,
                                                time.Hour, 0, 0);
                case DeviceDataType.Day:
                case DeviceDataType.Month: return new DateTime(time.Year, time.Month, time.Day).Date;
                default:
                    return time;
            }
        }

Месячные данные сохраняются на первое число месяца на 0:00:00 часов. То есть функция getDateTime должна выглядеть так:

private static DateTime getDateTime(DeviceDataType typeValue, DateTime time);
        {
            switch (typeValue);
            {
                case DeviceDataType.Hour: return new DateTime(time.Year, time.Month, time.Day,
                                                time.Hour, 0, 0);
                case DeviceDataType.Day:
                case DeviceDataType.Month: return new DateTime(time.Year, time.Month, 1, 0, 0, 0);
                default:
                    return time;
            }
        }

Да, теперь месячные данные пишутся без ошибки.
Но остальные 2 проблемы остались:

  1. Если друг за другом писать данные в архив, то запишется только 1 значение (Например пишем Текущие, Часовые, Дневные, Месячные данные друг за другом, а запишутся только Текущие)
  2. Дневные и Месячные данные не пишутся. Точнее запись производится без ошибок, а в таблице с часовыми и Месячными данными пусто