Как привязать оборудование в магистрали точки учета? [5955]

Решил попробовать написать скрипт, о котором говорится в предложении
http://forum.lers.ru/viewtopic.php?f=8&t=3493
У меня получилось добавить оборудование в объект.
Но я ни как не могу понять, как его привязать к конкретной точке учета, а еще лучше к трубопроводу точки учета.
Подскажите, возможно ли это сделать?

Такая возможность сейчас отсутствует. У нас в планах этот вопрос назначен на версию R17, но возможен и его перенос на R18.

Это очень актуально. Без решения этого вопроса - нельзя начать полноценно работать со списками поверки. Поэтому прошу реализовать как можно быстрее.

Скажите, когда все-таки будет реализована данная возможность?

У нас на следующей неделе будет формироваться план работ. Ответ будет дан только после этого. Ожидайте.

Привязать оборудование к точке учета вы можете уже сейчас. Сделать это довольно просто:

measurePoint.Device = equipment;
measurePoint.Save();

Дошли руки попробовать. Не получилось.
Мне кажется, что свойство measurePoint.Device отдает тип вычислителя.
ms_device.jpg
Я попробовал заменить его на расходомер, но при сохранении получил ошибку.
ms_device_saveError.jpg
Еще раз напишу, чтобы освежить диалог.
У меня есть список приборов в файле. Нужен способ, который позволит привязать прибор к конкретной трубе точки учета!

Пожалуйста, воспроизведите ошибку и приложите журнал c:programdatalerslogsserverserver_error.log.
Посмотрим что конкретно произошло на сервере.

Может быть я чего то не понимаю. Но у Вас в описании MeasurePoint.Device - свойство - Возвращает или задает устройство, используемое для считывания данных по этой точке учета. Я же хочу датчик привязать к трубопроводу точки учета.
ms_device.jpg
В логе сервера при операции сохранения возникает ошибка
2017-02-08 10:31:09.364 C:188 CS:218 Ошибка выполнения запроса “Изменение точки учета”. Ссылка на объект не указывает на экземпляр объекта. (Имя входа: data_import) Lers.SystemLog
server_error.2017-02-08.log (2.19 KB)

Ранее вы писали:

Сейчас вы пишите:

Так все таки что вы хотите привязать к точке учета: датчик или прибор?

В свойствах точки учета - это “датчики”.
В свойствах объекта - это “оборудование”.
Наверное есть смысл привести все к одному названию.
Нужно заполнить поля, как на скриншоте:
датчики.jpg

Нет, пока что привязать датчик к точке учета программно через Lers Framework возможности нет. Мы поставили в план работ добавление такого функционала, пока что без привязки к конкретной версии.

Конкретизируйте, пожалуйста сроки, уже не первый год пытаемся автоматизировать работу по поверке, и все еще не можем закончить.
Уже планируется новая поверка 2017. Поэтому определенность по этому вопросу для нас очень важна.

Точные сроки реализации назвать очень сложно. Однозначно можно сказать лишь то, что данный функционал будет реализован не раньше R23.

Версия R23 появилась. Задача также актуальна. Что можете сказать про сроки?

Это не простая задача, поэтому сроки ее реализации постоянно сдвигаются. На данный момент она запланирована на следующую версию R24.

Можно ожидать появление обещанного в 24-ой версии, планы не поменялись? Вы ведь сейчас ее заканчиваете. Нам очень нужна это возможность.

Работа над решением этой задачи ведется. Функционал не появится в 24-й версии.

Всё-таки успеваем включить в R24. В этой версии добавляется метод MeasurePoint.SetSensorsAsync, который позволяет установить датчики. Пример использования

private async Task<Equipment> CreateSensorEquipment(Node node, EquipmentModel sensorModel);
{
	Assert.NotNull(sensorModel);

	// Создаём оборудование найденной модели.
	var sensorEquipment = this.Server.Equipment.NewEquipment(sensorModel, "123115");
	sensorEquipment.Modification = sensorModel.Modifications.FirstOrDefault();

	// Сохраняем оборудование и сразу добавляем его в выбранный объект.
	await sensorEquipment.SaveNewRecordAndAddToNodeAsync(node.Id);

	return sensorEquipment;
}


// Получаем первую попавшуюся модель, которая может быть использована в качестве датчика расхода.
var models = await this.Server.Equipment.GetModelListAsync();

flowSensorEquipment = await CreateSensorEquipment(node, models.FirstOrDefault(x => x.IsFlowSensor));
tempSensorEquipment = await CreateSensorEquipment(node, models.FirstOrDefault(x => x.IsTemperatureSensor));
pressSensorEquipment = await CreateSensorEquipment(node, models.FirstOrDefault(x => x.IsPressureSensor));

var flowSensor = new Sensor(flowSensorEquipment, Lers.Data.DataParameter.V_in);
var tempSensor = new Sensor(tempSensorEquipment, Lers.Data.DataParameter.T_in);
var pressSensor = new Sensor(pressSensorEquipment, Lers.Data.DataParameter.P_in);

// Устанавливаем датчик в точку учёта.
await measurePoint.SetSensorsAsync(new[] { flowSensor, pressSensor, tempSensor });