Показать сообщение отдельно
Старый 11.09.2022, 12:59   #14  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Обнаружилось ещё одно "новшество" в форме ЖБД в D365.
На вкладке "История" теперь нельзя увидеть изменения регистра в строковых полях. Имеются в виду случаи когда вы в поле поменяли значение с "test" на "Test". В форме при отображении эти изменения игнорируются. А в журнал базы данных они попадают.
X++:
            if (fieldId != 0 && (!System.String::IsNullOrEmpty(newValue) || !System.String::IsNullOrEmpty(oldValue)))
            {
                // If field was saved as array field, we use the field index to get the field id
                fieldId = this.getExtendedFieldIdByIdx(useExtendedFieldId, fieldId, SysDatabaseLogDataParser::IsArrayFieldName(fieldNameDb) ? idx : 1);
                if (newValue != oldValue && (this.LogType != DatabaseLogType::Update || fieldName != 'RecVersion'))
                {
                    list.addStart([fieldId, newValue, oldValue]);
                }
            }
Причина в том что в X++ сравнение двух переменных newValue и oldValue происходит без учёта регистра. Аксапта - это case insensitive система, мы это знаем.
Если в этом участке кода переменные newValue и oldValue сравнивать с помощью newValue.Equals(oldValue), то всё нормализуется и мы в форме ЖБД увидим изменения, связанные с регистром текста.
__________________
Дмитрий
За это сообщение автора поблагодарили: S.Kuskov (2).