Хм... В хранилище... Что я туда выложу? Это не отдельная обработка, это часть справочника "Кассиры" моей конфигурации...
Вот, все процедуры, связанные с этим, кому нужно - сообразят, что с этим делать:
Перем БитоваяМаска;
Перем ScrCtrl;
Перем ПарУКМ;
Функция Перевод_2в10(Знач Стр2)
Стр=СокрЛП(Стр2);
Рез=0;
Для н=1 по СтрДлина(Стр) Цикл
Рез=Рез*2+Число(Сред(Стр,н,1));
КонецЦикла;
Возврат рез;
КонецФункции
Процедура СформБитМаску()
БитоваяМаска = Строка(Ф16) + Строка(Ф15) + Строка(Ф14) + Строка(Ф13) + Строка(Ф12) + Строка(Ф11) + Строка(Ф10) + Строка(Ф9)
+ Строка(Ф8) + Строка(Ф7) + Строка(Ф6) + Строка(Ф5) + Строка(Ф4) + Строка(Ф3) + Строка(Ф2) + Строка(Ф1);
КонецПроцедуры
Функция СлучайноеЧислоMS(Знач Предел)
СлучайноеЧисло = ScrCtrl.Eval("rnd");
СлучайноеЧисло = 1+Цел(СлучайноеЧисло * Предел);
Возврат СлучайноеЧисло;
КонецФункции
Функция СгенерироватьСлучЧасть()
СЗ = СоздатьОбъект("СписокЗначений");
Спр = СоздатьОбъект("Справочник.Кассиры");
Записан = Выбран();
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Если Записан = 1 Тогда
Если Спр.ТекущийЭлемент() = ТекущийЭлемент() Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Если Спр.СлучЧасть = 0 Тогда
Продолжить;
КонецЕсли;
СЗ.ДобавитьЗначение(Спр.СлучЧасть);
КонецЦикла;
СлЧ = 0;
Пока (СЗ.НайтиЗначение(СлЧ) > 0) Или (СлЧ = 0) Цикл
СлЧ = СлучайноеЧислоMS(65535);
КонецЦикла;
Возврат СлЧ;
КонецФункции
Процедура СгенерироватьПароль()
Если СтрДлина(СокрЛП(Пароль)) > 0 Тогда
Если Вопрос("У кассира " + СокрЛП(Сотрудник) + " уже есть пароль, Вы уверены, что хотите сформировать новый?", 4, 10) <> 6 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
W = Перевод_2в10(Число(БитоваяМаска));
Z = СгенерироватьСлучЧасть();
ПарольКассира = W * 65536 + Z;
Пароль = ПарольКассира;
ПриВводеПодтвПароля();
ПарУКМ = 1;
КонецПроцедуры
// Это в конце модуля формы пишется, вне процедур и функций, инициализируется СкриптКонтрол для генерации случайного числа.
Попытка
ScrCtrl = CreateObject("MSScriptControl.ScriptControl");
ScrCtrl.Language="VBscript";
ScrCtrl.ExecuteStatement("randomize");
Исключение
Предупреждение("Не удалось создать объект MSScriptControl, для жеребьевки используйте ГСЧ средствами 1С, переключить в константах!");
КонецПопытки;
"Фхх" - реквизиты справочника, тип число(галочка на форме)..
Вот так все это в конфигураторе выглядит: