Оптимальный способ расчета контрольной суммы объекта/записи регистра (CRC32, MD5, SHA1, SHA256)
Разработка - Обработки - Универсальные обработки
В данной обработке приведен способ расчета контрольной суммы объекта базы данных 1С. При любом изменении данных объекта, контрольная сумма меняется. Вариант расчета контрольной суммы меняем программно. В моем случае CRC32 как раз подходит - это число.
Это может быть полезно:
- При сравнении документов в различных базах, и не только РИБ
- В механизме определения, изменен ли объект в журналах изменений.
- В тех областях, о которых я еще не знаю.
Вот сам код обработки:
&НаСервере
Процедура Рассчитать()
Объект=Ссылка.ПолучитьОбъект();
ПолучитьХешОбъекта(Объект);
КонецПроцедуры
&НаСервере
Процедура ПолучитьХешОбъекта(Объект)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML,Объект);
ДанныеСтрока=ЗаписьXML.Закрыть();
Хеш=Новый ХешированиеДанных(ХешФункция.CRC32);
Хеш.Добавить(ДанныеСтрока);
Сообщить(Хеш.ХешСумма);
КонецПроцедуры
Обновлено от 03.08.2016! Если нужно получить контрольную сумму ссылочного объекта, то код выше это делает. Если нужно получить контрольную сумму записей регистров сведений, например, то лучше использовать либо наборы записей (медленный способ), либо получить данные записей запросом, и каждую запись преобразовать в структуру, и уже ее использовать для расчета контрольной суммы (быстрый способ).
Вот примерный код:
СтрокаИзмерений="";
Для каждого Измерение Из ОбъектМетаданных.Измерения Цикл
СтрокаИзмерений=СтрокаИзмерений+?(ПустаяСтрока(СтрокаИзмерений),Измерение.Имя,","+Измерение.Имя);
КонецЦикла;
Если ОбъектМетаданных.ПериодичностьРегистраСведений<>Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
СтрокаИзмерений=СтрокаИзмерений+?(ПустаяСтрока(СтрокаИзмерений),"Период",",Период");
КонецЕсли;
Для каждого Ресурс Из ОбъектМетаданных.Ресурсы Цикл
СтрокаИзмерений=СтрокаИзмерений+?(ПустаяСтрока(СтрокаИзмерений),Ресурс.Имя,","+Ресурс.Имя);
КонецЦикла;
Для каждого Реквизит Из ОбъектМетаданных.Реквизиты Цикл
СтрокаИзмерений=СтрокаИзмерений+?(ПустаяСтрока(СтрокаИзмерений),Реквизит.Имя,","+Реквизит.Имя);
КонецЦикла;
СтруктураДанных=Новый Структура(СтрокаИзмерений);
Выборка=РегистрыСведений[Имя].Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(СтруктураДанных,Выборка);
ХешСумма=ПолучитьХешОбъекта(СтруктураДанных);
КонецЦикла;
Обновлено от 09.08.2016! Как показала практика, применение способа ПолучитьОбъект() для расчета контрольной суммы не всегда оптимально (если много объектов и немного оперативной памяти) и приводит к нехватке памяти т.к. полученные объекты не удаляются из оперативной памяти, а остаются там до окончания процесса. Код вида "Объект=Неопределено" никогда не помогает!
Был найден обходной путь, через запрос. При этом память не забивается, а скорость даже возросла.
Вот пример кода для документов:
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ * ИЗ "+ОбъектМетаданных.ПолноеИмя();
Результат=Запрос.Выполнить();
Выборка=Результат.Выбрать();
СтрокаРеквизитов="";
Для каждого Колонка Из Результат.Колонки Цикл
Если Колонка.Имя="ВерсияДанных" ИЛИ Колонка.Имя="МоментВремени" ИЛИ Колонка.Имя="Предсталение" Тогда Продолжить; КонецЕсли;
СтрокаРеквизитов=СтрокаРеквизитов+?(ПустаяСтрока(СтрокаРеквизитов),"",",")+Колонка.Имя;
КонецЦикла;
СтруктураОбъекта=Новый Структура(СтрокаРеквизитов);
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(СтруктураОбъекта,Выборка);
Для каждого ТабЧасть Из ОбъектМетаданных.ТабличныеЧасти Цикл
СтруктураОбъекта.Вставить(ТабЧасть.Имя,Выборка[ТабЧасть.Имя].Выгрузить());
КонецЦикла;
ХешСумма=ПолучитьХешОбъекта(СтруктураОбъекта);
КонецЦикла;
Функция ПолучитьХешОбъекта(Объект)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML,Объект);
ДанныеСтрока=ЗаписьXML.Закрыть();
Хеш=Новый ХешированиеДанных(ХешФункция.CRC32);
Хеш.Добавить(ДанныеСтрока);
Возврат Хеш.ХешСумма;
КонецФункции;
Возможно, так же будут вам полезны мои разработки(ТопчийДЮ):
- //catalog.mista.ru/public/1160676/ - Система принудительной блокировки пользователей по заданным условиям (для платформ 8.3.6+, для ЛЮБЫХ баз)
- //catalog.mista.ru/public/1076549/ - САПП - система анализа на наличие проблем и/или предложений в ЛЮБЫХ базах 1С, работающих на платформе 8.3.4+
- //catalog.mista.ru/public/936948/ - Удобная, быстрая и функциональная подсистема обмена между узлами РИБ для УТ 11, УТ 10.3, Альфа - Авто с заменой ссылок в узлах, сравнением документов, командным управлением узлами (для платформы 8.3+)
- //catalog.mista.ru/public/926433/ - Выгрузка в SPOT 2D / ОРИМИ с произвольной структурой полей в файле для УТ 10.3 и не только (платформа 8.3 +)
- //catalog.mista.ru/public/912717/ - Гибкая система расчета зарплаты по произвольной мотивации для УНФ 1.6 и не только (Расширение + Конфигурация, платформа 8.3+)
- //catalog.mista.ru/public/893115/ - QR - штрихкодирование документов БЕЗ изменения печатных форм и конфигурации, с произвольными алгоритмами создания QR -кода и обработки для УТ 11 (все), ERP 2, КА 2, УТ 10.3, Розница 2.2, УНФ 1.6, БП 3
- //catalog.mista.ru/public/149404/ - Выгрузка-загрузка любых данных между похожими или одинаковыми конфигурациями ЛЮБЫХ баз 1С 8.1-8.3
- //catalog.mista.ru/public/127859/ - Быстрый поиск дублей с четким/нечетким поиском по любому сочетанию реквизитов/реквизитов таб. частей с отбором и быстрой заменой значений в ЛЮБЫХ базах
- //catalog.mista.ru/public/692252/ - Сравнение данных РИБ или обменивающихся баз с одинаковыми конфигурациями по контрольным суммам выбранных реквизитов, работающих на платформе 8.3...и выше
- //catalog.mista.ru/public/201119/ - Проведение/снятие с проведения документов/очистки движений не проведенных, перезаписи ссылочных объектов с отборами для баз 1С 8.1-8.3
- //catalog.mista.ru/public/621962/ - "Что? Где? Когда?" или журнал изменений с восстановлением состояния реквизитов ссылочных объектов
- //catalog.mista.ru/public/543417/ - Одиночная/групповая регистрация объектов/реквизитов объектов для обмена через планы обмена c отборами для ЛЮБЫХ баз 1С на 8.2-8.3
- //catalog.mista.ru/public/175028/ - Удаление данных с отбором и построением дерева ссылок в базах 1С 8.1-8.3
- //catalog.mista.ru/public/420278/ - Загрузка иерархии номенклатуры, картинок, штрихкодов, характеристик, доп. реквизитов, цен, поступлений, номен. поставщиков из xls,xlsx,xlsm,ods,ots,csv для УТ 10.3, БП 2.0, УТ 11.1/11.2/11.3, БП 3, КА 2, ERP 2, УНФ 1.6, Розница 2.2
- //catalog.mista.ru/public/427579/ - Мастер выгрузки ЛЮБЫХ данных (остатков, цен, картинок, иерархии, доп. реквизитов, характеристик, штрихкодов и т.д.) в CSV / XLS / XLSX / MXL / ODS / PDF для ЛЮБЫХ баз, работающих на платформе 8.3... и выше
- //catalog.mista.ru/public/832852/ - Мониторинг цен закупки / цен продаж и наценки для Управления Торговлей 11 (все), ERP 2, КА 2, Розница 2.2
Специальные предложения
См. также
Система принудительной блокировки пользователей по заданным условиям (для платформ 8.3.6+, для ЛЮБЫХ баз) 2
5990 руб.
29.11.2019 679 0
Перенос данных УТ 10.3 => УТ 11 / КА 2 / ERP 2 (ЕРП 2) (документы, остатки и справочная информация из "1С:Управление торговлей, ред. 10.3" в УТ 11 / КА 2 / ERP 2). Обновлен до УТ 10.3.56.х, УТ 11.4.10.х, КА 2.4.10.х и ERP 2.4.10.х! Промо
Уже более 100 компаний приобрели перенос и выполнили переход на УТ 11 / КА 2 / ERP 2 с помощью нашей разработки! Обработка перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2 позволяет перенести не только остатки на указанную дату (как типовой перенос), но и все возможные документы за выбранный период. При выходе новых релизов этих программ оперативно выпускаем обновление обработки. Предоставляем техническую поддержку. Можем сделать бесплатный тестовый перенос!
29700 руб.
Перенос данных БП 3.0 => УТ 11 / КА 2 / ERP 2 (ЕРП) (перенос остатков, документов и справочной информации из "1С:Бухгалтерия предприятия 8", ред.3.0). Обновлено до БП 3.0.73.х, УТ 11.4.10.х, КА 2.4.10.х., ERP 2.4.10.х! Промо
Переносятся документы за выбранный период, справочная информация и остатки по счетам бух. учета в программу УТ 11 / КА 2 / ЕРП 2 (ERP). Переносятся все возможные виды операций ввода остатков на нужную дату. Есть отбор по периоду переноса документов и фильтр по организации, доступен выбор даты ввода остатков. Если нужно переносить что-то дополнительно, то обычно бесплатно добавляем это в перенос . Смотрите видеодемонстрацию со звуком - советами по переносу и рекомендациями настройки программ.
29700 руб.
Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0"). Обновлен до версий КА 1.1.115.х, УПП 1.3.127.х! Промо
Разработка позволяет перенести остатки по всем счетам бух.учета в программу "1С:Бухгалтерия предприятия 8", ред. 3.0 на выбранную дату начала ведения учета. Также переносятся документы за период и вся необходимая справочная информация. Правила оперативно обновляю при выходе новых релизов. Рассылка обновлений правил бесплатно в течение 12 месяцев. Есть видеодемонстрация проведения переноса данных. Конфигурации при использовании обмена остаются полностью типовыми. Перенос данных возможен в Бухгалтерию 3.0 версии ПРОФ, КОРП или базовую.
24700 руб.
Электронная таблица в 1С средствами табличного документа 68
1 стартмани
23.04.2019 7099 46 user706545_kseg1971 36
1С:Предприятие через Интернет. 1С:Fresh Промо
Ведение бухгалтерского и налогового учет, сдача отчетности, управление бизнесом из любой точки мира. Привычные программы «1С» через Интернет без приобретения коробочных программ.
HTML в новой версии 8.3.14 на примере 3-х JavaScript библиотек: AmCharts, HighCharts, DHTMLX 172
1 стартмани
29.01.2019 15698 66 Synoecium 37
1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо
СПАРК помогает предотвратить мошенничество со стороны компаний и предпринимателей, благодаря актуальным сведениям о компаниях и системе выявления факторов риска.Сервис позволяет управлять налоговыми рисками и комплексно оценивать благонадежность контрагентов.
Программы для исполнения 54-ФЗ Промо
С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.
Обнуление остатков регистров бухгалтерии и накопления 41
2 стартмани
19.11.2018 11254 181 morozov.sv 30
Подборка решений для взаимодействия со ФГИС «Меркурий» Промо
С 1 июля 2019 года все компании, участвующие в обороте товаров животного происхождения, должны перейти на электронную ветеринарную сертификацию (ЭВС) через ФГИС «Меркурий». Инфостарт предлагает подборку программ, связанных с этим изменением.
Выгрузка в SPOT 2D / ОРИМИ с произвольной структурой полей в файле для УТ 10.3 и не только (платформа 8.3 +) 5
7990 руб.
19.10.2018 7028 24 0
Новый раздел на Инфостарте - Electronic Software Distribution Промо
Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.
- Низкие цены, без скрытых платежей и наценок
- Оперативная отгрузка
- Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
- Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)
Универсальный инструмент для переноса данных через табличный документ (УФ) 36
5 стартмани
15.10.2018 16705 97 json 32
Перенос данных БП 2.0 => УТ 11 / КА 2 / ERP 2 (перенос остатков, документов и справочников из "1С:Бухгалтерия предприятия 8", ред. 2.0 в "1С:Управление торговлей 8", ред.11 / КА 2 / ERP 2). Обновлено до УТ 11.4.10.х, КА 2.4.10.х, ERP 2.4.10.х! Промо
Перенос позволяет загрузить в УТ 11 / КА 2 / ERP 2 документы за выбранный период, справочную информацию и остатки по счетам бух. учета. Переносятся остатки денежных средств, взаиморасчетов, остатки товаров и материалов на складах. Переносятся девятнадцать основных видов документов за выбранный период и вся нормативно-справочная информация. Есть фильтр по организации. Если нужно переносить что-то дополнительно, то обычно бесплатно дорабатываю правила (перед покупкой согласуйте необходимые доработки).
29700 руб.
Мониторинг цен закупки / цен продаж и наценки для Управления Торговлей 11 (все), ERP 2, КА 2, Розница 2.2, УНФ 1.6 47
2990 руб.
18.05.2018 14071 16
Программы для исполнения 488-ФЗ: Маркировка товаров Промо
1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.
Просмотр, изменение реквизитов объекта. Сравнение двух одинаковых объектов метаданных ИБ 0
1 стартмани
26.04.2018 10096 18 Vin_Tik 0
Онлайн-интенсив "Бизнес-процессы для подготовки к экзамену 1С:Специалист по платформе" 12 декабря 2019 г. Промо
На интенсиве будут рассмотрены все теоретические вопросы, связанные с устройством механизма бизнес-процессов – это необходимо для успешной сдачи экзамена 1С:Специалист по платформе. Также, в качестве практического примера, будет решена задача, аналогичная экзаменационной.
777 рублей
Построение маршрута доставки с расчётом расстояния для любой базы УФ 57
10 стартмани
24.02.2018 21594 36 KorotkovRV 16
Навигация по функциональным опциям типовых конфигураций 130
1 стартмани
30.01.2018 17293 75 kuzyara 12
Перенос данных КА 1.1 => ERP 2 (ЕРП) (обработка переноса документов, остатков и справочной информации из "1С:Комплексная автоматизация, ред. 1.1" в "1С:ERP Управление предприятием, ред 2"). Обновлен до КА 1.1.115.х и ERP 2.4.10.х Промо
Обработка позволяет переносить из КА 1.1 в ERP 2 документы за выбранный период и остатки. Типовая обработка от фирмы 1С документы не переносит. Также исправлены ошибки типовой обработки. При выходе новых релизов обновление высылается бесплатно в течение года. Разработка будет полезна фирмам-франчайзи, которые периодически выполняют такой перенос данных для заказчиков. Вы можете один раз приобрести обработку переноса, и потом бесплатно получать обновления в случае выхода новых релизов конфигураций 1С.
29700 руб.