⟵ сюдатуда ⟶
  • Отладка
  • Глобальные ошибки
  • Нехватка оперативной памяти
  • Смертельное зацикливание таблицы
  • Ошибка времени выполнения скрипта
  • Максимальный размер файла загружаемый в поле файл
  • Ошибка вывода utf-содержимого или слишком большого пакета данных
  • Включение отладки
  • Чтение отладочных логов
  • Доступе через кнопку Лог
  • Код
  • Код действия
  • Последовательная запись действий
  • Код селекта
  • Форматирование
  • Пересчеты и селекты
  • Время расчета полей
  • Документация

    Отладка и оптимизация

    Отладка

    Глобальные ошибки

    Нехватка оперативной памяти

    Если вместо загрузки страницы вы столкнулись с белым экраном содержащим такую ошибку:

    Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes)
    

    Разрешите на сервере больше оперативной памяти для PHP. Эта ошибка возникает, когда для выполнения текущей операции в том числе и для открытия таблицы недостаточно оперативной памяти.

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

    Эта же ошибка может быть вызвана бесконечным циклом в кодах. Смотрите следующий пункт.

    Смертельное зацикливание таблицы

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

    Например: код в любом поле хедера вида:

    =: recalculate(table: $#ntn)
    

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

    Для исправления подобный ситуаций вы можете открыть настройки полей через Состав таблиц по пути Системные таблицы — Основные — Таблицы и поля — Состав таблиц и отфильтровать поля по нужной вам таблице.

    Настройки полей хранятся в поле Параметры поля

    Ошибка времени выполнения скрипта

    Если выполнение изменения в таблице или действия было остановлено по максимальному времени выполнения скрипта — увеличьте доступное для PHP время выполнения:

    max_execution_time

    Максимальный размер файла загружаемый в поле файл

    Если вы столкнулись с тем, что файл не загружается в поле [Файл][] то проверьте на сервере параметры PHP:

    upload_max_filesize и post_maxsize.

    Ошибка вывода utf-содержимого или слишком большого пакета данных

    Возможно у вас включено логирование (в верхнем правом углу экрана) и логи слишком велики для отображения. Откройте любую другую таблицу и отключите логи.

    Включение отладки

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

    • Код — отслеживание секции вычисления значений полей.

    • Код действия — отслуживание секции выполнения действий.

    • Селекты — отслеживание секции расчета отображений селектов.

    • Форматирование — отслуживанивание секции форматирования.

    • Пересчеты и селекты — показывает количество пересчетов таблиц по результатам выполнения кодов действий и автоматических взаимосвязей, а также обращениях, выполняемых в процессе работы функций. Просмотр данных — по кнопке Лог. Полезно при непонятном поведении циклов из множества таблиц.

    • Время расчета полей — записывает время расчета полей по различным секциям кода, для оптимизации быстродействия больших таблиц. Результат работы вызывается при клике на иконку таблицы рядом с галочкой после обновления таблицы.

    Рекомендуется одновременно включать не больше двух!

    После включения лога необходимо совершить целевое действие для записи.

    В файле настроек Conf.php можно включить логирование SQL-запросов, ошибок и выполнения cron-скриптов. В этом месте нужно быть аккуратнее — SQL-логи могут достигать очень большого размера.

    Включение отладки

    Логи расчетов нигде не хранятся, отдаются в веб-интерфейс вместе с таблицей при изменении таблицы.

    Логи доступны по кнопке Лог в правом верхнем углу таблицы. Для просмотра логов по конкретной ячейке возможно вызвать окно отладки из панельки по правой кнопке мыши.

    Вызов окна отладки из панельки

    Чтение отладочных логов

    В логе можно увидеть последовательность выполнения строк кода, их результаты, входящие параметры и используемые переменные. Также можно выяснить на каком этапе возникла ошибка. Ошибка всплывает к пусковой строке кода.

    Доступе через кнопку Лог

    Придоступе к логам через кнопку Лог поля разделены на Строчную часть и поля вне ее. Внутри строчной части адресация осуществляется по id строки.

    Адресация в кнопке ЛОГ

    Код

    example1: if(condition: $otkl > 0; then: $otkl; else: 0)
    otkl: #norma - #otrabotano_chasov
    

    Обозначения:

    • Ванд — секция кода и ее итоговое значение.

    • Ког — часть исполняемого кода без пробелов и комментариев.

    • Диез — параметр и его значение.

    • Рука — обозначает секцию кода вычисленную и зафиксированную в предыдущей операции.

    • Дробь — вывод значений списков. Выводятся частично.

    Код

    Код действия

    example2: while(preaction: $count; action: $set1)
    count: if(condition: $#nfv < #so_sklada; then: $err)
    err: errorExeption(text: "КОЛИЧЕСТОВ НЕ МОЖЕТ БЫТЬ МЕНЬШЕ, ЧЕМ ВЗЯТО СО СКЛАДА — ОТМЕНИТЕ БРОНЬ СКЛАДА")
    set1: set(table: 'proizvodstvo'; field: 'kolichestvo' = #kolichestvo; where: 'privyazka' = #id)
    

    Обозначения: аналогично коду.

    Код действия

    Последовательная запись действий

    При включенном логгировании кодов действий ведется последовательная запись коды действий вызываемых совершаемыми на странице действиями.

    В логе действия помещаются в секции Изменение, Добавление, Удаление в хронологической последовательности сверху-вниз.

    Если код действия вызывает изменение нескольких таблиц, то таблицы внутри секции будут показаны в случайном порядке!

    = : while(action: $recalc; action: $clear)
    recalc: reCalculate(table: 'tables';  where: 'id'=$ids)
    ids: listAdd(list: $diff1; list: $diff2)
    clear: clear(table: $#ntn; field: 'tree_off'; where: 'id'=#id)
    
    diff1: listMinus(list: #tree_off; list: #old.tree_off)
    diff2: listMinus(list: #old.tree_off; list: #tree_off)
    

    Запись действий

    Код селекта

    example3: selectRowListForSelect(table: 'statusy_zakazov_sport'; field: 'status'; where: 'id' = $list)
    list: listcreate(item: 1; item: 7; item: 8; item: 9; item: 10; item: 11; item: 12; item: 13; item: 14; item: 15)
    

    Обозначения: аналогично коду.

    Код селекта

    Форматирование

    f1=: setformat(bold: true)
    f2=: setformat(condition: #cvet = ""; background: "NavajoWhite")
    f3=: setformat(condition: #cvet = 40; background: "yellow")
    f4=: setFormat(condition: $#nr = 7; condition: #status != $list2; block: true)
    list2: listCreate(item: 10; item: ""; item: 12)
    

    Обозначения: аналогично коду.

    Форматирование

    Пересчеты и селекты

    Показывает пересчеты таблиц,

    • Ресайкл — показывает пересчет таблицы и количество раз пересчета за цикл (если 1, то не показывается).

    • Часы — время пересчета таблицы.

    • Стопка — объем оперативной памяти требуемой для расчета.

    • Бутерброд — показывает к каким таблицам были выполнены [селекты][331] и в каком количестве.

    Пересчеты и селекты

    Время расчета полей

    Используется для отладки быстродействия и нагрузки.

    • Таблица — таблица в которой измеряется время выпонения кодов полей.

    • field — name полей.

    • type — тип выполнения операции:

    • Общее время выполнения расчета — общее время выполнения кодов по типу в этом поле в секундах.

    • Количество раз выполнения — количество раз, которое был выполнен код. Для хедера и футера для поля это будет 1 раз, для строчной части — по количество строк.

    Время расчета полей

    ⟵ сюда туда ⟶