0. m-rv 736 16.04.19 11:15 Сейчас в теме

Как прикрутить ГУИД к регистру сведений

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

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. VmvLer 16.04.19 13:15 Сейчас в теме
много текста и сразу необходимо вникать в чьи-то проблемы

не логичнее ли в первой строке простынь ответить понятно и просто одной строкой зачем это нужно?
zurapa; sergey_garin; lukyan; the1; Идальго; Xershi; +6 1 Ответить
2. Xershi 673 16.04.19 13:57 Сейчас в теме
В 1С для этого хеш используют. Возможно вы про это не слышали?
Статью не читал!
3. m-rv 736 16.04.19 14:59 Сейчас в теме
(2) нет, не слышал, расскажите пожалуйста подробнее: от чего вычисляется хэш и какие гарантии это даёт?
4. Xershi 673 16.04.19 16:24 Сейчас в теме
(3) ну хеш это как у пароля есть контрольная сумма, которая шифруется.
Как простой пример. Зашифровать дату записи и его значения измерений. Если изменилось хоть одна запись, то хеш будет другой.
Сам не применял, но например в обработке игры в шахматы видел алгоритм.
Плюс есть регистры в типовых или нет, не скажу, которые как раз используют реквизит с одноименным названием.
На 8.3 вычисления хеша кажись уже можно платформой делать. До этого использовали компоненту.
5. m-rv 736 16.04.19 20:30 Сейчас в теме
(4) да, эта история понятна, но хэширование не дает гарантировано уникальный хэш на каждое новое значение. Хэширование дает очень высокую вероятность уникального значения, но не гарантию, поэтому в строгих алгоритмах его использовать нельзя, только для вспомогательных нужд. Об этом собственно и статья )
6. Xershi 673 16.04.19 21:35 Сейчас в теме
(5) что на 1 хеш можно 2 пароля придумать и авторизуешься?
Где такое вычитали?
7. m-rv 736 17.04.19 07:41 Сейчас в теме
(6) к этому вопросу можно подойти с двух сторон: гугла и логики.
пример двух строк с одинаковым хэшем MD5 можно найти например тут: https://en.wikipedia.org/wiki/MD5
логически можно рассудить, что MD5 состоит из 32 шеснадцатиричных цифр 0-9,a-f. Соответственно, если мы хэшируем все варианты строк, состоящих из 33 шеснадцатиричных цифр - количества вариантов хэшей не хватит на все варианты исходных строк и какие-то строки неизбежно будут иметь одинаковые хэши
8. Xershi 673 17.04.19 11:37 Сейчас в теме
(7) да про Коллизии MD5 не слышал. Теперь в курсе.
Но там говорится про суффиксы. Не думаю что они будут отличаться в 1С. Также есть же и другие алгоритмы шифрования? И там говорится только про 128 битный ключ. А про 256 ничего.
10. m-rv 736 18.04.19 09:12 Сейчас в теме
(8) 128, 256, 512... все это будет уменьшать вероятность дублей, но не исключать их
11. Xershi 673 18.04.19 09:15 Сейчас в теме
(10) вы не поняли. хеш я так представляю формируется по перфиксам из 1С, а суффикс остается всегда один. Поэтому коллизий не будет.
Алгоритм формирования не читал.
9. o.nikolaev 191 17.04.19 23:38 Сейчас в теме
По разделу "Мелкий шрифт", есть же концепция CRDT - бесконфликтная синхронизация данных, где данная возможность зашивается в прям в сам тип который передается.
13. vdmkvrshn 13 19.04.19 11:05 Сейчас в теме
Статью прочитал на 80-90% - всё надеялся найти в тексте обоснование, для чего это нужно в реальной задаче и не нашел.
Единственная описанная проблема: "записали набор с одной записью, выгружаем 100500". Ну допустим... А как Ваше решение поможет этого избежать? Может я что-то пропустил по тексту, но я ответа на этот вопрос не нашел.
По-моему, если надо идентифицировать набор записей ссылкой, то хорош способ, применяемый в типовых конфигурациях на УФ для контроля уникальности элементов справочника по значениям реквизитов. Это регистр сведений и справочник с одинаковым набором измерений регистра и ключевых реквизитов справочника, по которым необходимо контролировать уникальность. Я говорю про справочники КлючиАналитикиУчетаХХХХХ и регистры сведений АналитикаУчетаХХХХХ.

Ещё, так сказать, замечание не по теме.
Вы пишете такое:
В первую колонку будем складывать сигнатуры наборов записей, а во вторую идентификаторы этих наборов (просто Новый УникальныйИдентификатор)

На своем опыте могу утверждать, что "Новый УникальныйИдентификатор()" дает дубли при циклическом вызове. Была как-то необходимость связать строки нескольких деревьев значений на форме: при изменении значения в строке одного дерева менять также в другом дереве. Было решено для простоты генерации ключа строки использовать УникальныйИдентификатор. В общем практика показала, что он иногда НЕ уникальный. Его 99.(9)% уникальность гарантирована только в составе ссылок в рамках одной таблицы базы данных. (За годы работы более десяти баз по модели РИБ не появилось ни одного дубля ссылки среди документов одного типа, но была один раз группа номенклатуры с такой же ссылкой, как элемент в другой базе, что привело к останоке обмена, естественно).
14. m-rv 736 19.04.19 13:10 Сейчас в теме
(13)
Зачем мне это нужно - я постарался описать в спойлере «суть моей проблемы».
Вести пару РС-справочник для каждого регистра - это довольно нудное мероприятие (хотя для задачи, где задействовано 1-2-3 регистра - может подойти), плюс такой подход будет довольно затратным с точки зрения производительности
Про неуникальность ГУИДа - мое мнение - все такие случаи - это недорасследованные ошибки в коде. Я не хочу вас обидеть, у всех есть факапы, а сам я так иногда косячу, что аж п-ц, но когда в следующий раз такое увидите - ищите свой баг
15. vdmkvrshn 13 19.04.19 14:17 Сейчас в теме
(14) Я понимаю Ваше подозрение на мой баг, но после замены гуида на последовательно назначаемые номера все проблемы ушли сразу без прочих правок кода. Минус такого подхода - необходимость вести глобальный счетчик этих номеров в реквизите формы, например. Поэтому хотелось использовать гуиды.
12. m-rv 736 18.04.19 09:23 Сейчас в теме
Интересная концепция, спасибо. У меня получается state-based CRDT, я в тренде ))
Но основная то проблема в том, что когда писали РТ имели в виду strong consistency и то, что все работает - весьма интересный результат
16. shiaju 08.07.19 13:17 Сейчас в теме
Самое полезное, что я вынес из этой статьи - это пассаж про компьютер сайенс, и да, я этим буду пользоваться, спасибо большое! xD
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 120 000 руб.
Полный день

Консультант 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день

Программист стажер 1С
Нижний Новгород
зарплата от 30 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 100 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству