Обнаружилось ещё одно "новшество" в форме ЖБД в 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), то всё нормализуется и мы в форме ЖБД увидим изменения, связанные с регистром текста.