Добрый день.
Столкнулись с проблемой, подскажите, как это можно решить.
У нас есть MasterDetailScreen, где edit часть реализована фрагментом.
Изначально запись свободна для редактирования, и для того, чтобы Cuba предложила сохранить изменения, достаточно поменять значение поля во фрагменте (то есть объект не заблокирован до нажатия кнопки “Изменить”, как в оригинале, и все его поля по умолчанию RW, перед началом измененияне требуется нажать кнопку “Изменить”.).
То есть если в оригинале экран выглядит вот так:
То в нашей реализации вот так:
При изменении записи срабатывает лиснер инстанс-контейнера ItemPropertyChangeListener.
У нас возникает проблема, если мы очень быстро переключаемся между записями: тогда экран может спонтанно перейти в режим сохранения, как будто я внес в него изменения, но по факту мы ничего не меняем.
Ранее это происходило, потому что по какой-то причине в системе у записей самостоятельно менялись системные атрибуты (даты и версии, и некоторые коллекции, но мы это устранили, отсеяв в листнере).
Мы проанализировали, какая информация поступает в листнер в момент “изменения”, и обнаружили, что система самостоятельно меняет поля даты, если они есть у объекта.
Причем система меняет значения полей на те, которые были у соседней записи.
То есть если я переключусь с записи СЗ00000021 на запись СЗ00000007, то система проставит для СЗ00000007 значения дат полей “Дата создания” и “Дата затрат” из объекта СЗ00000021, сработает листнер ItemPropertyChangeListener и попросит сохранить изменения.
Такое замечено только для значений дат.
Подскажите, пожалуйста, это нормально?
И что с этим можно сделать?