/
Определение уникальности роли

Определение уникальности роли

Тут надо было решить несколько задач.

Первая – не загружать те роли, которые уже по факту были загружены и не изменились.

Для этого мы воспользовались технологией хешей, а именно, вначале происходит чтение текстового файла, потом считается его хеш вот такой вот функцией:

Function HashMD5(Data) Export Hash = New DataHashing(HashFunction.MD5); Hash.Append(Data); HashSum = Hash.HashSum; HashSumString = String(HashSum); HashSumString = StrReplace(HashSumString, " ", ""); HashSumStringUUID = Left(HashSumString, 8) + "-" + Mid(HashSumString, 9, 4) + "-" + Mid(HashSumString, 15, 4) + "-" + Mid(HashSumString, 18, 4) + "-" + Right(HashSumString, 12); Return HashSumStringUUID; EndFunction

Она возвращает строку, которую можно преобразовать UUID. Можно, конечно, передавать сам бинарник, тогда как бы и не надо было бы читать файл, однако, нам все равно из файла надо получить UUID роли, чтобы сопоставить с тем, что в базе.

И этот же UUID из ролей – является UUID элемента справочника ролей. Поэтому, если вы по какой-то причине потеряли эти UUID, а их можно иногда потерять, например, при слиянии конфигураций по наименованию, а не ID объектов. То тогда можно получить дубли.