Последняя версия DataExpress 3 beta от 12 февраля 2020 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Баг в SetField

Здесь содержаться темы из данного форума, потерявшие свою актуальность ввиду того, что ошибка (баг) программы устранён разработчиком или данное поведение программы не являлось ошибкой и не требует вмешательства разработчика.
Аватара пользователя
Develop-Soft
Сообщения: 1232
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 292 раза
Контактная информация:

Баг в SetField

Сообщение Develop-Soft » Чт окт 10, 2019 10:38 am

Выдает "Stack overflow" в КП или просто тихий вылет:
setfield.zip
(46.36 КБ) 22 скачивания

Upd:

Код: Выделить всё

// [Флажок]
block(
  setfield(replace('Датабля','бля',''),Date)
)

Аватара пользователя
admin
Разработчик
Сообщения: 4703
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 23 раза
Поблагодарили: 192 раза

Баг в SetField

Сообщение admin » Чт окт 10, 2019 7:39 pm

В комментариях же [дата], поэтому и зацикливание. Это не баг.

Аватара пользователя
Develop-Soft
Сообщения: 1232
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 292 раза
Контактная информация:

Баг в SetField

Сообщение Develop-Soft » Чт окт 10, 2019 8:24 pm

Вылет случился тут:
ФПК-КЛИМАТ.zip
(796.65 КБ) 17 скачиваний

Заявка -> История -> Штамп времени -> Выражение

admin писал(а):В комментариях же [дата], поэтому и зацикливание. Это не баг.
Вот без комментариев:

Код: Выделить всё

// [Флажок]
block(
  msgbox('',text('Сегодня: [Дата]')),
  setfield('Дата',Date)
)             

Способ, описанный выше - позволяет так же выйти из зацикливания.

Аватара пользователя
admin
Разработчик
Сообщения: 4703
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 23 раза
Поблагодарили: 192 раза

Баг в SetField

Сообщение admin » Чт окт 10, 2019 9:19 pm

Какая разница. В выражении есть [дата]. Выражение в поле "Штамп времени" меняет поле "Дата". Изменяется поле "Дата", вызывая пересчет поля "Штамп времени" и так по кругу. Это обычное зацикливание. Нельзя так выражения писать.

Аватара пользователя
Develop-Soft
Сообщения: 1232
Зарегистрирован: Вт мар 05, 2019 6:09 pm
Благодарил (а): 114 раз
Поблагодарили: 292 раза
Контактная информация:

Баг в SetField

Сообщение Develop-Soft » Чт окт 10, 2019 9:36 pm

В первом случае все работает, если убрать из даты и времени "значение по-умолчанию". Иначе вылетает при попытке добавить запись. Но даже если предположить, что выражение некорректно - вылетать-то зачем..? Где Красный Пятачок..?
Во втором случае msgbox перестает циклить, если поделить борщ пополам: 'Да'+'та'. То есть - само по себе выражение - корректно, но стоит в text в суе попасть какому-то "неправильному" слову и выходит вислер...

Аватара пользователя
admin
Разработчик
Сообщения: 4703
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 23 раза
Поблагодарили: 192 раза

Баг в SetField

Сообщение admin » Чт окт 10, 2019 9:57 pm

Вообщем-то баг не в setfield, а в том, что "редактор выражений" не увидел потенциальное зацикливание. Но он это и не может увидеть, т. к. setfield - это функция, а не поле. Кроме setfield, еще можно понапридумывать кучу функций, меняющих поле. Надо какую-то защиту от зацикливания в реал-тайме придумывать.


Вернуться в «РЕШЕНО: Закрытые вопросы.»