Сравнение значений типа Хранилище

28.08.12

Разработка - Групповая разработка (Git, хранилище)

Сравнение значений типа Хранилище (простое решение для тех, кто не нашел ничего подобного на просторах интернета и не имеет навыков быстрого формирования контрольных сумм CRC, md5 средствами 1С, но имеет желание или необходимость выполнения такого сравнения). * было актуально для платформы 8.2, платформа 8.3 уже позволяет получить хеш MD5 или CRC32

Цель:

отслеживать изменение содержимого реквизитов, имеющих тип Хранилище, например, при реализации механизма хранения истории изменения прикрепленных к объекту файлов в типовой конфигурации.

Задача:

получить инструмент, позволяющий сравнивать двоичные данные на основании их строкового представления.

Решение:

Представляю Вам функцию для сравнения значений типа Хранилище:

Функция СравнитьХранилища(Хранилище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_Сервер

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    13824    124    0    

85

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.3 1С 8.5 Бесплатно (free)

В прошлой статье у ERP оставалось 89 отказов загрузки, у ЗУП — 19. Теперь обе конфигурации совпали с эталонами, а собранные файлы прошли круг через платформу. Развертка выделена в открытый репозиторий cf-unwrapper: библиотека на Rust и консольная утилита. Показываю результаты, объясняю границы «100%» и приглашаю к проверкам и развитию проекта.

02.11.2026    306    oyti    1    

1

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Разработчик 1С:Предприятие 8 Россия Бесплатно (free)

Практическое руководство для команд, которые хотят уйти с хранилища конфигурации на git, не переходя на новую среду разработки. Подойдёт разработчикам и тимлидам, которые настраивают командную разработку на типовых и собственных конфигурациях.

02.11.2026    598    vanya_gonchar    2    

6

Файловый обмен (TXT, XML, DBF), FTP DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Системный администратор Разработчик 1С 8.5 Бесплатно (free)

В прошлой статье я выгрузил Бухгалтерию в XML байт в байт и спросил, на чем проверить дальше. Вы ответили: ERP, старые релизы, зарплата. Прогнал пять конфигураций, от клиента ЭДО до ERP на 120 тысяч файлов. Рассказываю, что сломалось после Бухгалтерии, почему эталону платформы нельзя верить на слово, как выгрузить одну конфигурацию в формат трех версий платформы - и почему cf-конвертер становится отдельным продуктом, Разверткой.

02.11.2026    405    oyti    2    

3

Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Стажер 1С 8.3 Абонемент ($m)

Два разработчика, по десять правок «Нано-УТ 2.0» в git: длинные ветки против слияния после каждой правки, 22 слияния с загрузкой main в чистую базу. ConfigDumpInfo.xml конфликтовал в 11 слияниях из 11, построчное объединение ломало XML и модули. Показываю, что убрать строкой в .gitattributes, что разбирать целыми вставками и как увидеть конфликты до слияния. Прилагаются инструмент с 38 тестами и материалы опыта.

1 стартмани

29.10.2026    403    Ninel_S    3    

-1

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С 8.5 Бесплатно (free)

Выгрузка типовой Бухгалтерии в XML через базу занимает больше четырёх минут. Я написал движок, который читает файл конфигурации напрямую и выгружает его за 35 секунд, совпадая с выгрузкой платформы байт в байт во всех 90 385 файлах. Загрузка обратно тоже работает: круг через платформу совпадает полностью. Рассказываю, как ускоряли, как проверяем и что при загрузке XML теряет сама платформа. А в конце спрашиваю, нужно ли это кому-то, кроме меня, и на какой конфигурации проверить следующей.

27.10.2026    964    oyti    20    

16

Рефакторинг и качество кода Групповая разработка (Git, хранилище) Разработчик 1С 8.3 Абонемент ($m)

Скрипт на Python посчитал метрики 2711 общих модулей УТ 11.5: 26 модулей длиннее 10 000 строк кода. Проверила счёт на синтетических модулях и показала, где рейтинг ошибается: самый длинный модуль оказался в нём ниже девяти коротких. Для разработчиков 1С. В архиве скрипт, тесты и журналы.

1 стартмани

26.10.2026    442    Ninel_S    8    

-3

Групповая разработка (Git, хранилище) Разработчик 1С 8.3 Абонемент ($m)

Общие модули 1С вынесла в подмодуль Git и подключила к двум проектам на выгрузке «Нано-УТ» и платформе 8.3.27. Подмодуль на весь каталог CommonModules загружается; клон без --recursive даёт код 1, а забытый указатель и смена ветки молча дают базу не той версии. Переименованная процедура прошла /CheckModules при 28 вызовах. В архиве скрипты, диагностика подмодулей, тесты и журналы.

1 стартмани

26.10.2026    426    Ninel_S    0    

-1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. anig99 2867 19.10.11 08:28 Сейчас в теме
Банальное фуфло. Не стоит публикации
2. pumbaE 19.10.11 13:17 Сейчас в теме
Если бы автор еще md5 высчитывал от хранилища, а потом их и сравнивал, вот это да. Тогда можно было бы говорить что в хранилище структура с ключами md5 и хранилище, при помещении в базу рассчитывается md5...
anig99 прав, фуфло. При постановке задачи первое, что приходит на ум base64 (для тех кто хотя бы раз читал справку по объекту Хранилище).
3. anig99 2867 19.10.11 13:53 Сейчас в теме
(2) а кто не читал, то ЗначениеВСтроку.
MikZ; probkaotjizni; cargobird; +3 – Ответить
6. cargobird 324 03.12.17 10:29 Сейчас в теме
(3)Помогло, спасибо.
4. artbear 1590 19.10.11 15:42 Сейчас в теме

Если (ДвоичныеДанные1 = Неопределено ИЛИ ДвоичныеДанные2 = Неопределено)
И НЕ (ДвоичныеДанные1 = Неопределено И ДвоичныеДанные2 = Неопределено)
Тогда
Возврат Ложь;
КонецЕсли;

Код нужен, чтобы максимально запутать себя и читателей кода? :(
vz1987; pavlo; +2 – Ответить
5. пользователь 27.11.12 12:45
Сообщение было скрыто модератором.
...
7. user658699_heinrich2906 21.12.21 15:34 Сейчас в теме
Помог, спасибо.
Ну а высоколобые хейтеры - они всегда были, есть и будут
Для отправки сообщения требуется регистрация/авторизация