Цель:
отслеживать изменение содержимого реквизитов, имеющих тип Хранилище, например, при реализации механизма хранения истории изменения прикрепленных к объекту файлов в типовой конфигурации.
Задача:
получить инструмент, позволяющий сравнивать двоичные данные на основании их строкового представления.
Решение:
Представляю Вам функцию для сравнения значений типа Хранилище:
Функция СравнитьХранилища(Хранилище1, Хранилище2)
Если ТипЗнч(Хранилище1)=Тип("ХранилищеЗначения") Тогда
ДвоичныеДанные1 = Хранилище1.Получить();
ИначеЕсли ТипЗнч(Хранилище1)=Тип("ДвоичныеДанные") Тогда
ДвоичныеДанные1 = Хранилище1;
Иначе
Возврат Неопределено;
КонецЕсли;
Если ТипЗнч(Хранилище2)=Тип("ХранилищеЗначения") Тогда
ДвоичныеДанные2 = Хранилище2.Получить();
ИначеЕсли ТипЗнч(Хранилище2)=Тип("ДвоичныеДанные") Тогда
ДвоичныеДанные2 = Хранилище2;
Иначе
Возврат Неопределено;
КонецЕсли;
Если (ДвоичныеДанные1 = Неопределено ИЛИ ДвоичныеДанные2 = Неопределено)
И НЕ (ДвоичныеДанные1 = Неопределено И ДвоичныеДанные2 = Неопределено)
Тогда
Возврат Ложь;
КонецЕсли;
Base64Строка1 = Base64Строка(ДвоичныеДанные1);
Base64Строка2 = Base64Строка(ДвоичныеДанные2);
Возврат Base64Строка1 = Base64Строка2;
КонецФункции
Вместо непосредсвенного использования Base64Строка для сравнения можно использовать хэши, сформированные, например, с помощью решения представленного здесь: "Простая и быстрая хэш функция (hash) средствами 1С (оптимизированный вариант)".
ВНИМАНИЕ: Начиная с версии платформы 8.3 вместо формирования строки Base64 уместее использовать получение хеша MD5 или CRC32 с помощью объекта "ХешированиеДанных".
...
Хеш = ПолучитьMD5_Сервер(ТекстДляХеша);
...
Функция ПолучитьMD5_Сервер(Текст)
ОбъектХеш = Новый ХешированиеДанных(ХешФункция.MD5);
ОбъектХеш.Добавить(Текст);
Возврат ОбъектХеш.ХешСумма;
КонецФункции // ПолучитьMD5_Сервер