Вся проблема в том, что ГенераторСлучайныхЧисел на производительных компьютерах так быстро генерит число, что получается много дубликатов даже в больших числах в конце интервала. Что я имею в виду? Например, мне необходимо было сгенерировать случайным образом 10-ти значные ИНН пусть 20 штук, сделал так:
Для н=1 по 20 Цикл
Код = "";
Для у=1 по 10 Цикл
ГСЧ = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
Число = ГСЧ.СлучайноеЧисло(0,9);
Код = Код + Формат(Число,"ЧЦ=1; ЧН=0; ЧВН=; ЧГ=0");
КонецЦикла;
Сообщить(Код);
КонецЦикла;
Результат
5555333333
3333333333
3333333333
3333333333
3444444444
4444444444
4999999999
9999999999
9555555555
5555555555
2222222222
2222222222
6666666666
6666666666
2222222222
2222222222
3333333333
3333333333
1111111111
1111111115
Как видите, получилось много дубликатов. В публикации //infostart.ru/public/553616/ говорится о регистре сведений, в котором все хранится и происходит проверка на наличие дублей, я бы тоже использовал такой вариант при необходимости, но мне просто нужно было нагенерить ИНН, и я использовал Массив, в котором проверяю уже существующие коды
Массив = Новый Массив();
Для н=1 по 20 Цикл
Найден = Истина;
Пока Найден Цикл
ГСЧ = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
Код = "";
Для у=1 по 10 Цикл
Число = ГСЧ.СлучайноеЧисло(0,9);
Код = Код + Формат(Число,"ЧЦ=1; ЧН=0; ЧВН=; ЧГ=0");
КонецЦикла;
Результат = Массив.Найти(Код);
Если Результат=Неопределено Тогда
Найден = Ложь;
Массив.Добавить(Код);
КонецЕсли;
КонецЦикла;
Сообщить(Код);
КонецЦикла;
Результат
8043056388
9102338554
6249282932
1198388359
0526412897
7009103148
0571174217
8993611720
3929803898
7864312503
9471210028
0252270828
4561671060
9351136286
3376451113
7216940055
4858606383
3378262630
6057792110
0900779364
Может, кому-то поможет!