27.01.2021 17:41
MWWRuza
 
Если интересно, могу выложить текст обработки с аналогичными функциями под 1С7.7, надо кому - ?
27.01.2021 17:59
student
 
Цитата:
MWWRuza могу выложить текст обработки с аналогичными функциями под 1с7.7, надо кому
а почему нет ? если не жалко закинь в хранилище, кому надо переделают :)
27.01.2021 22:03
MWWRuza
 
Хм... В хранилище... Что я туда выложу? Это не отдельная обработка, это часть справочника "Кассиры" моей конфигурации...
Вот, все процедуры, связанные с этим, кому нужно - сообразят, что с этим делать:

Перем БитоваяМаска;
Перем 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С, переключить в константах!");
КонецПопытки;

"Фхх" - реквизиты справочника, тип число(галочка на форме)..
Вот так все это в конфигураторе выглядит:
28.01.2021 00:00
MWWRuza
 
Цитата:
MWWRuza для жеребьевки используйте ГСЧ средствами 1С
Гы... Только сейчас заметил, кусок модуля для генерации случайного числа, скопировал со своей конфы "АРМ секретаря стартов RCCombat"(это мои "самолетики"), там он используется для жеребьевки спортсменов. Так, в исключение, в случае неудачной попытки обращения к скрипт-контролю Windows, про жеребьевку и пишет
Пофик, не на что не влияет, но надо будет месагу поправить Просто реально это исключение никогда не возникает, поэтому и не обращал внимания.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.