Skip to content

Instantly share code, notes, and snippets.

@a-sitnikov a-sitnikov/file.bsl
Created Sep 15, 2017

Embed
What would you like to do?
Перебор паролей на 1С
&НаКлиенте
Процедура КомандаПеребор(Команда)
Значения = Новый Массив;
Значения.Добавить("а");
Значения.Добавить("б");
Значения.Добавить("в");
МаксЗначение = Значения.Количество() - 1;
МаксДлина = 3;
СчетчикМассив = Новый Массив;
СчетчикМассив.Добавить(0);
ПоследнийЭлемент = Ложь;
Пока НЕ ПоследнийЭлемент Цикл
Стр = СобратьСтроку(Значения, СчетчикМассив);
Сообщить(Стр);
ПоследнийЭлемент = Следующий(СчетчикМассив, МаксЗначение, МаксДлина);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция СобратьСтроку(Значения, СчетчикМассив)
Стр = "";
// Собираем в обратную сторону
Для каждого Элемент из СчетчикМассив Цикл
Стр = Значения[Элемент] + Стр;
КонецЦикла;
Возврат Стр;
КонецФункции
&НаКлиенте
Функция Следующий(СчетчикМассив, МаксЗначение, МаксДлина)
ДлинаСчетчика = СчетчикМассив.Количество();
Счетчик = 0;
Пока Истина Цикл
СчетчикМассив[Счетчик] = СчетчикМассив[Счетчик] + 1;
Если СчетчикМассив[Счетчик] > МаксЗначение Тогда
СчетчикМассив[Счетчик] = 0;
Счетчик = Счетчик + 1;
Если Счетчик = ДлинаСчетчика
И Счетчик < МаксДлина Тогда
СчетчикМассив.Добавить(0);
Возврат Ложь;
ИначеЕсли Счетчик = МаксДлина Тогда
Возврат Истина;
КонецЕсли;
Иначе
Возврат Ложь;
КонецЕсли;
КонецЦикла;
КонецФункции
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.