Перейти к содержимому


Возможно ошибка в КБ


Сообщений в теме: 6

#1 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 17 Ноябрь 2011 - 11:01

Версия: 1.9.4
Ревизия: 2682 от 2011-10-17

Вычисление в таблице не срабатывало на поле цена, пока вычисление в самом этом поле цена не было удалено, ПРИЧЁМ вычисление в самом поле цена было закомментировано через /**/ и видимо всегда выдавало 0.
Похоже на глюк программы!
Или это фича?
*Свободный программер.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Ноябрь 2011 - 12:26

Конкретно - где, когда, в какой таблице, в каком поле? Конфигурация стандартная/персональная? Вносились ли свои изменения?

#3 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 17 Ноябрь 2011 - 13:24

Просмотр сообщенияРазработчик (17.11.2011, 12:26) писал:

Конкретно - где, когда, в какой таблице, в каком поле? Конфигурация стандартная/персональная? Вносились ли свои изменения?
Конфигурация стандартная + Вносились свои изменения в вычисления полей и таблиц.

Тут видимо вот в чём дело: если в вычислении поля написать /**/ , то возвращаться в него будет значение false и это скорее всего в любой таблице такое (любого пользовательского поля).

Только что проверил, так и есть.
Завёл поле тест - текстовое, заполнил данными, всё ок. В его вычислении написал /* return 999; */, в итоге поле теперь всегда выводит пустое значение и ничего не сохраняет в него.
*Свободный программер.

#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 17 Ноябрь 2011 - 13:42

Ну вообще-то это очевидно, что если вы ничего явно не возвращаете из вычисления поля, то из него будет возвращаться false, что при записи в БД эквивалетно пустой строке. Т.к. сам текст вычисления есть (оно не пустое), то программа пытается вернуть из него результат, в данном случае - пустой. Если же вычисление удалить, то программа не будет ничего вычислять. Глюка как такового здесь нет, хотя и "фичей" это назвать нельзя, скорее недоработка. Я так понимаю, Вы предлагаете проверять результат на falsе, и в случае его наличия не перезаписывать значение поля?

#5 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 18 Ноябрь 2011 - 12:00

Т.к. результатом вычисления поля тоже м.б. false , мало ли ... то тут возможно необходимо проверять на NULL и если NULL , то в случае его наличия не перезаписывать значение поля.
*Свободный программер.

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Ноябрь 2011 - 13:26

В php нет значения NULL, это значение поля в БД.

Просмотр сообщенияkok (18.11.2011, 13:00) писал:

Т.к. результатом вычисления поля тоже м.б. false , мало ли ...
А вот это уже может быть фичей, т.е. можно будет специально возвращать из вычисления такой результат, для предотвращения записи в БД. Записывать само значение false в БД смысла нет, т.к. таких значений там не бывает (как я уже писал он преобразуется в пустую строку или 0).

#7 kok

    Активный участник

  • Пользователи
  • PipPipPip
  • 78 сообщений
  • Пол:Мужчина

Отправлено 18 Ноябрь 2011 - 13:37

Еще бы задокументировать эту фичу (желательно с примером).
*Свободный программер.





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных