Mimic — Данные в фейсплейтах

Стартовая страница Форумы Понять, как работает ПО Mimic — Данные в фейсплейтах

Просмотр 13 сообщений - с 1 по 13 (из 13 всего)
  • Автор
    Сообщения
  • #40554
    Imya
    Участник

    Здравствуйте.
    В фейсплейте вывожу данные в текст через args.dataProvider.getCurData(), но столкнулся с проблемой, что если никакой компонент на текущей схеме не использует тот-же номер канала, то данных нет.
    И второй вопрос — как можно через скрипты минуя привязку свойств обращаться к каналу по коду тега?

    #40557
    Mikhail
    Модератор

    Добрый день!
    Фейсплейт по задумке является универсальным компонентом, поэтому он не должен ссылаться на конкретные каналы. Сделайте, пожалуйста, скриншоты, чтобы была понятнее ситуация в целом. Попробуем найти альтернативное решение.

    как можно через скрипты минуя привязку свойств обращаться к каналу по коду тега?

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

    На мой взгляд, нужно подойти к созданию фейсплейта с другой стороны — у фейсплейта есть экспортируемые свойства. К конкретным каналам они привязываются уже на той схеме, на которую добавлен фейсплейт. Скрипт фейсплейта может реагировать на значения этих свойств, но не извлекать данные каналов напрямую.

    #40558
    Imya
    Участник

    Задумка была такова: передавать фейсплейту номер объекта (или устройства), несколько дополнительный параметров (по типу наименования объекта) и иметь некое самостоятельное окно, по сути шаблон, которое в несколько кликов можно вынести и настроить.

    На мой взгляд, нужно подойти к созданию фейсплейта с другой стороны — у фейсплейта есть экспортируемые свойства. К конкретным каналам они привязываются уже на той схеме, на которую добавлен фейсплейт. Скрипт фейсплейта может реагировать на значения этих свойств, но не извлекать данные каналов напрямую.

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

    Сделайте, пожалуйста, скриншоты, чтобы была понятнее ситуация в целом.

    const addlStatData = args.dataProvider.getCurData(absObjectNum * 1000 + 1); // хотел брать по тегу
    addlStat.properties.text = (addlStatData.d.val == 2) ? «Тех.работы» :
    (addlStatData.d.val == 1) ? «Авария» : «Доп.статус»;
    addlStat.properties.foreColor = (addlStatData.d.val == 1) ? «red» : «white»;
    addlStat.properties.visible = (addlStatData.d.val == 0) ? false : true;

    • Ответ изменён 1 месяц назад пользователем Imya. Причина: Картинка
    #40560
    Imya
    Участник

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

    С передачей значения нашелся ответ, если вдруг кому надо: в привязке свойств готового фейсплейта (который уже расположен на мнемосхеме) в имени свойства указывается название экспортируемого параметра в который нужно передать значение, в источник — номер канала.

    Насчет моей проблемы вопрос закрыт, спасибо за помощь.

    Задумка была такова: передавать фейсплейту номер объекта (или устройства), несколько дополнительный параметров (по типу наименования объекта) и иметь некое самостоятельное окно, по сути шаблон, которое в несколько кликов можно вынести и настроить.

    #40561
    Mikhail
    Модератор

    Да, в предыдущем сообщении Вы сделали всё верно.
    На текущий момент всё получилось или остались вопросы?

    #40562
    Imya
    Участник

    На текущий момент всё получилось или остались вопросы?

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

    • Ответ изменён 1 месяц назад пользователем Imya.
    #40567
    Mikhail
    Модератор

    Сделайте, пожалуйста, скриншот экпортируемого свойства в фейсплейте. Если используется скрипт, то ещё нужен код скрипта.

    #40590
    Imya
    Участник

    class extends ComponentScript {
      dataUpdated(args) {
        const absObjectNum = args.component.properties.deviceNumber / 100;    
        let connectionLevel = args.component.properties.connectionLevel;
        let additionalStatus = args.component.properties.additionalStatus;
        const background = args.component.children.find(c => c.name == "background");
        const objectLink = args.component.children.find(c => c.name == "objectLink");
        const connection = args.component.children.find(c => c.name == "connection");
        const addlStat = args.component.children.find(c => c.name == "addlStat");
        const frame1 = args.component.children.find(c => c.name == "frame1");
        // Ссылка на главную страницу объекта
        objectLink.properties.clickAction.linkArgs.viewID = absObjectNum * 100;
        // Связь
        connection.properties.foreColor = (connectionLevel == 1) ? "red" : // цвет связи
          (connectionLevel > 1) && (connectionLevel < 5) ? "yellow" :
          (connectionLevel == 5) ? "green" : "white";
        connection.properties.blinking = (connectionLevel == 1) ? true : false; // мигание
        // Дополнительный статус
        addlStat.properties.text = (additionalStatus == 2) ? "Тех.работы" : // текст доп.статуса
          (additionalStatus == 1) ? "Авария" : "Доп.статус";
        addlStat.properties.foreColor = (additionalStatus == 1) ? "red" : "white"; // цвет доп.статуса
        addlStat.properties.visible = (additionalStatus == 0) ? false : true; // видимость
        //
        args.propertyChanged = true;
      }
    }
    
    • Ответ изменён 3 недели, 6 дней назад пользователем Mikhail.
    #40596
    Mikhail
    Модератор

    Какое конкретно свойство обсуждаем?
    Нужно нажать кнопку Редактировать и сделать скрин свойств этого свойства внутри.

    #40598
    Mikhail
    Модератор

    Добавьте в метод dataUpdated вывод информации в консоль console.log(«информация»)
    Было бы полезно проверить как часто вызывается метод и меняются ли значения свойств.

    #40607
    Imya
    Участник

    Попытался добавить console.log() и потом найти что-нибудь, но в итоге понял что скрипты будто вообще перестали работать. Оставил на тест один параметр ..

    class extends ComponentScript {
    domCreated(args) {
    const objectName = args.component.children.find(c => c.name == «objectName»);
    objectName.properties.foreColor = «red»;
    console.log(«test»);
    args.propertyChanged = true;
    }
    domUpdated(args) {
    const objectName = args.component.children.find(c => c.name == «objectName»);
    objectName.properties.foreColor = «red»;
    console.log(«test»);
    args.propertyChanged = true;
    }
    dataUpdated(args) {
    const objectName = args.component.children.find(c => c.name == «objectName»);
    objectName.properties.foreColor = «red»;
    console.log(«test»);
    args.propertyChanged = true;
    }
    }

    .. и все равно никакого результата. Если делаю привязку через свойства то все хорошо, пытаюсь через скрипт — никак.

    #40608
    Imya
    Участник

    2025-10-08 15:23:45 [scada-test][root][ACT] Вебстанция 6.2.2.0 запущена
    2025-10-08 15:23:45 [scada-test][root][ACT] Хранилище FileStorage 6.4.0.0 загружено из файла /opt/scada/ScadaWeb/FileStorage.dll
    2025-10-08 15:23:46 [scada-test][root][ERR] Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/ScadaCommon.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ERR] Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/ScadaWeb.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgChart 6.1.0.0 загружен из файла /opt/scada/ScadaWeb/PlgChart.dll
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgMain 6.1.1.0 загружен из файла /opt/scada/ScadaWeb/PlgMain.dll
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgMimic 6.0.0.0 загружен из файла /opt/scada/ScadaWeb/PlgMimic.dll
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgMimicEditor 6.0.0.0 загружен из файла /opt/scada/ScadaWeb/PlgMimicEditor.dll
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgMimBasicComp 6.0.0.0 загружен из файла /opt/scada/ScadaWeb/PlgMimBasicComp.dll
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgScheme 6.1.1.0 загружен из файла /opt/scada/ScadaWeb/PlgScheme.dll
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgSchBasicComp 6.1.0.0 загружен из файла /opt/scada/ScadaWeb/PlgSchBasicComp.dll
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgStore 6.1.0.1 загружен из файла /opt/scada/ScadaWeb/PlgStore.dll
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgWebPage 6.1.1.0 загружен из файла /opt/scada/ScadaWeb/PlgWebPage.dll
    2025-10-08 15:23:46 [scada-test][root][ERR] Плагин PlgChart: Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/PlgChart.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ERR] Плагин PlgMain: Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/PlgMain.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ERR] Плагин PlgMimic: Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/PlgMimic.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ERR] Плагин PlgMimicEditor: Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/PlgMimicEditor.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ERR] Плагин PlgMimBasicComp: Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/PlgMimBasicComp.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ERR] Плагин PlgScheme: Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/PlgScheme.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ERR] Плагин PlgStore: Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/PlgStore.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ERR] Плагин PlgWebPage: Файл словарей не найден и заменён файлом по умолчанию: /opt/scada/ScadaWeb/lang/PlgWebPage.ru.xml
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgMimic: Добавление компонентов из плагина PlgMimBasicComp
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgScheme: Извлечение компонентов схем из установленных плагинов
    2025-10-08 15:23:46 [scada-test][root][ACT] Плагин PlgScheme: Добавлены компоненты из плагина PlgSchBasicComp
    2025-10-08 15:23:46 [scada-test][root][ACT] Приём базы конфигурации
    2025-10-08 15:23:46 [scada-test][root][ACT] База конфигурации получена успешно
    2025-10-08 15:23:46 [scada-test][root][INF] Приложение готово к работе
    2025-10-08 15:23:48 [scada-test][root][ERR] Пользователь с ид. 107 не найден при создании контекста пользователя
    2025-10-08 15:23:48 [scada-test][root][ERR] Пользователь с ид. 107 не найден при создании контекста пользователя
    2025-10-08 15:23:48 [scada-test][root][ERR] Ошибка при загрузке представления с ид. 2300 по пути Тест\Главная.mim:
    Scada.Protocol.ProtocolException: Ошибка при чтении файла [View]\Faceplates/GUI/Objects/guiObjMainPageName.fp: Файл не найден
    at Scada.Client.ClientBase.DownloadFile(RelativePath path, Int64 offset, Int32 count, Boolean readFromEnd, DateTime newerThan, Boolean throwOnFail, Func`1 createStreamFunc, DateTime& lastWriteTime, FileReadingResult& readingResult, Stream& stream)
    at Scada.Client.ClientBase.DownloadFile(RelativePath path, Stream stream, Boolean throwOnFail)
    at Scada.Web.Code.ViewLoader.LoadViewFromServer(ViewBase view, String path)
    at Scada.Web.Code.ViewLoader.GetView(View viewEntity, Type viewType, ViewBase& view, String& errMsg)

    #40621
    Mikhail
    Модератор

    Попробуйте этот фейсплейт. В нём скрипт пишет в консоль браузера.

Просмотр 13 сообщений - с 1 по 13 (из 13 всего)
  • Для ответа в этой теме необходимо авторизоваться.