Simple-Scada forum

Simple-Scada 2 => Ваши вопросы => Тема начата: ilnurikK от 01 Октября 2025, 14:39:46

Название: Инициализация таблицы
Отправлено: ilnurikK от 01 Октября 2025, 14:39:46
Добрый день! Необходимо проинициализировать ячейки таблицы после запуск и выполнить скрипт 1 раз.
Создал таблицу с 4 колонками (4 строки). Каждой ячейке привязал доп.переменную, из которой берется начальное значение для инициализации.
Создал скрипт Проект полностью запущен:
Код: (delphi)
var
  i : integer;
begin
    for i := 0 to Table1.RowCount do
       if GetBit(Table1.VariableEx.AsInt, i) then
        begin
          Table1.GetCell(4, i).Text := 'Вкл';
          Table1.GetCell(4, i).Color := clGreen;
        end
        else
        begin
          Table1.GetCell(4, i).Text := 'Выкл';
          Table1.GetCell(4, i).Color := clRed;
        end;
И этот скрипт почему то не инициализирует таблицу.
В чем может быть проблема?
end.
Название: Re: Инициализация таблицы
Отправлено: Simple_Scada от 01 Октября 2025, 22:31:29
Здравствуйте.

1. В любых непонятных ситуациях нужно в первую очередь проверить журнал сервера Simple-Scada (https://simple-scada.com/help/manual/server-journal.html). С большой вероятностью в нем будут содержаться ошибки или предупреждения, которые укажут, в чем именно проблема.
2. Строки и столбцы таблицы нумеруются с 0. В коде скрипта "Table1.GetCell(4, i)" идёт обращение к пятому столбцу.
3. "Table1.VariableEx.AsInt" - здесь выполняется обращение к доп. переменной таблицы, а не ячейки.
4. Если ячейке назначена основная переменная, то не имеет смысла менять текст ячейки через скрипты, т.к. скада будет автоматически заменять текст на значение связанной с ячейкой переменной.
5. В Вашем случае, текст и цвет ячейки можно менять по изменению доп. переменной, связанной с ячейкой. Для этого необходимо использовать скрипт на событие таблицы OnCellDatachangeEx (https://simple-scada.com/help/script/by-obj-event.html) (изменилось значение доп. переменной ячейки). Пример скрипта:
Код: (delphi)
begin
  if Cell.VariableEx <> nil then  // если к ячейке привязана доп. переменная
    if GetBit(Cell.VariableEx.AsInt, Cell.Row) then
    begin
      Cell.Text := 'Вкл';
      Cell.Color := clGreen;
    end else
    begin
      Cell.Text := 'Выкл';
      Cell.Color := clRed;
    end;
end.
6. Если не разберетесь, то пришлите на support@simple-scada.com текущую версию Вашего проекта из директории "..\Simple-Scada 2\Projects\" и укажите скрипт, который нужно проверить.