Size: a a a

1С, БСП, DevOps и Архитектура

2019 December 21

АС

Антон Степанов in 1С, БСП, DevOps и Архитектура
Денис Злобин
Коллеги, добрый вечер. Натолкните на мысль.

Я занимаюсь загрузкой справочников из внешней системы (SaaS). У меня есть элемент справочника во внешней системе с ИД например "1675". Соответственно при загрузке элемента я хочу собственноручно формировать для него уникальный идентификатор в 1С и присваивать его исходя из ИД внешней системы, чтоб если я вдруг его удалил из справочника 1С и затем загрузил обратно, у него сформировался абсолютно тот же уникальный идентификатор (чтоб избежать Объект не найден). Как бы Вы решали подобную задачу ?

Я как-то криво объяснил условие задачи, могу попробовать объяснить на примерах, чего хочу добиться.
Если ИД реально короткий, то можно захардкодить типа

ИД = "1234";
уи = Новый УникальныйИдентификатор("066f6492-9c9e-43e4-abb4-435f38e2" + ИД);
Сообщить(уи);
источник

ДЗ

Денис Злобин in 1С, БСП, DevOps и Архитектура
Антон Степанов
Если ИД реально короткий, то можно захардкодить типа

ИД = "1234";
уи = Новый УникальныйИдентификатор("066f6492-9c9e-43e4-abb4-435f38e2" + ИД);
Сообщить(уи);
Разве в разных базюках начало уникального идентификатора всегда будет статичное? на одних и тех же метаданных
источник

АС

Антон Степанов in 1С, БСП, DevOps и Архитектура
Т.к. эти идентификаторы будут синтетические и в рамках одного метаданного, то похер. Я не могу придумать ситуации, когда это приведет к конфликту
источник

АС

Антон Степанов in 1С, БСП, DevOps и Архитектура
Если вдруг этот справочник уйдет в другую базу и там уже есть записи с этими ИД, то согласно твоей логике - это как раз одни и есть те же объекты
источник

Z

ZEEGIN in 1С, БСП, DevOps и Архитектура
Денис Злобин
Коллеги, добрый вечер. Натолкните на мысль.

Я занимаюсь загрузкой справочников из внешней системы (SaaS). У меня есть элемент справочника во внешней системе с ИД например "1675". Соответственно при загрузке элемента я хочу собственноручно формировать для него уникальный идентификатор в 1С и присваивать его исходя из ИД внешней системы, чтоб если я вдруг его удалил из справочника 1С и затем загрузил обратно, у него сформировался абсолютно тот же уникальный идентификатор (чтоб избежать Объект не найден). Как бы Вы решали подобную задачу ?

Я как-то криво объяснил условие задачи, могу попробовать объяснить на примерах, чего хочу добиться.
как уже сказал @Stepa86 тебе надо написать хэш-функцию которая значения твоего естественного ключа внешней системы преобразует в uuid 1С.
источник

ДЗ

Денис Злобин in 1С, БСП, DevOps и Архитектура
Ну в целом в голове и было 2 варианта, либо как предлагает Антон тупо в лоб записывать ИД в УИД, либо как-то полностью конвертировать ИД в УИД. Но первый вариант вроде более читаемый и упрощенный в данном случае. Смысла рассчитывать хэш вероятнее всего нет.
источник

Z

ZEEGIN in 1С, БСП, DevOps и Архитектура
Вообще пофиг какая реализация.
Она просто должна обладать свойствами хэш-функции и на выходе иметь формат uuid
источник

Z

ZEEGIN in 1С, БСП, DevOps и Архитектура
будешь ты просто соль добавлять к идентификатору внешнему или что-то еще делать не важно.
источник

ДЗ

Денис Злобин in 1С, БСП, DevOps и Архитектура
спс, пошел кодить)
источник
2019 December 22

C

Combot in 1С, БСП, DevOps и Архитектура
Hein Kipas has been banned! Reason: CAS ban.
источник
2019 December 23

D

Dmitriy in 1С, БСП, DevOps и Архитектура
Денис Злобин
Я понимаю, но наверняка из строки можно например как нибудь расчитать хэшсумму, которую успешно с конвертировать в ГУИД как вариант
1. Это очень плохая идея. Так как глобальный уникальный идентификатор становится локальным уникальным идентификатором.
Алгоритмы (как платформы, так и БСП на это не рассчитаны).
2. В целом это неправильный подход. Правильно:
- либо один раз создать ГУИД в центральной системе SaaS точно по тем же правилам, что в 1С:Предприятии (не помню, чтобы эти правила были документированы), хранить его постоянно и отправлять этот ГУИД в остальные системы при обмене;
- либо делать сопоставление при загрузке (впервые загруженный элемент отмечается в регистре в виде пары Код, новый ГУИД).
источник

АС

Антон Степанов in 1С, БСП, DevOps и Архитектура
Dmitriy
1. Это очень плохая идея. Так как глобальный уникальный идентификатор становится локальным уникальным идентификатором.
Алгоритмы (как платформы, так и БСП на это не рассчитаны).
2. В целом это неправильный подход. Правильно:
- либо один раз создать ГУИД в центральной системе SaaS точно по тем же правилам, что в 1С:Предприятии (не помню, чтобы эти правила были документированы), хранить его постоянно и отправлять этот ГУИД в остальные системы при обмене;
- либо делать сопоставление при загрузке (впервые загруженный элемент отмечается в регистре в виде пары Код, новый ГУИД).
Да нормальный подход. Чо там может сломаться то? Ну стал уид ууидом, а не гуидом, и чо? Какой алгоритм в БСП или в платформе от этого начнет работать неверно?
А вот с РСом можно сделать херню и за значительно большее время
источник

D

Dmitriy in 1С, БСП, DevOps и Архитектура
Антон Степанов
Да нормальный подход. Чо там может сломаться то? Ну стал уид ууидом, а не гуидом, и чо? Какой алгоритм в БСП или в платформе от этого начнет работать неверно?
А вот с РСом можно сделать херню и за значительно большее время
Например, ГУИД, созданный системой при автоматическом добавлении служебного пользователя совпадет с существующим.
источник

OT

Oleg Tymko in 1С, БСП, DevOps и Архитектура
Dmitriy
Например, ГУИД, созданный системой при автоматическом добавлении служебного пользователя совпадет с существующим.
Какова вероятность?
источник

АС

Антон Степанов in 1С, БСП, DevOps и Архитектура
Не совпадет
источник

АС

Антон Степанов in 1С, БСП, DevOps и Архитектура
Точнее вероятность совпадения ровно такая же, как и совпадение с любым другим идентификатором, который пришел через обмен. А с учетом того, что при формировании гуида системой последние блок буквоцифр формируется исходя от текущей системы, то вероятность совпадения еще меньше
источник

АС

Антон Степанов in 1С, БСП, DevOps и Архитектура
Да и вообще, если сам zeegin сказал, что так можно делать, значит любая неправильная работа в БСП и в платформе означает, что там есть косяк.
источник

IR

Iurii Reason ™ in 1С, БСП, DevOps и Архитектура
Антон Степанов
Да и вообще, если сам zeegin сказал, что так можно делать, значит любая неправильная работа в БСП и в платформе означает, что там есть косяк.
Смелое заявление
источник

ИС

Игорь Сторожук in 1С, БСП, DevOps и Архитектура
Бывает совпадение гуид-ов, да, чаще всего человеческий фактор, но ИМХО зачем становиться статистикой, лучше использовать механизмы полностью исключающие эту вероятность, если это возможно.
источник

D

Dmitriy in 1С, БСП, DevOps и Архитектура
Oleg Tymko
Какова вероятность?
В данном случае, вероятность - функция различий алгоритма создания ГУИД в платформе и алгоритма создания ГУИД иным способом. Вероятность может быть и маленькой и большой. Для расчета нужны оба алгоритма, далее нужно провести их математический анализ области пересечения и тогда уже вычислить вероятность совпадения.
источник