Автоподключение к хранилищу. Изменение сохраненного пароля

Yasnovidyashii Открыто

Если при первом подключении к хранилищу (расширения точно, на конфигурации не проверял) в окне ТурбоКонфа ввести неверный пароль, то в последствии не предоставляется возможности его изменить, несмотря на неудачные попытки авторизации.

Video_2024-03-02_222851.mp4

[20242902 22-29-Ссылка скрыта

Комментарии

Yasnovidyashii
#1, 10 апреля 2024 11:05

ИскомыеСтрокиОшибок = "Ошибка аутентификации в хранилище конфигурации!
|Проверьте правильность введенного имени пользователя и пароля.|Неклассифицированная ошибка работы с хранилищем конфигурации.";

Результат = ТК.НайтиЭлементПоИмени(ИскомыеСтрокиОшибок, "панель");

Отладчик показывает Результат = Ложь, несмотря на то, что окно с таким текстом на экране присутствует. Что конкретно означает второй параметр метода и как определить, какое значение уместно подставлять в него в моем случае, не разобрался.


bolsun
#2, 10 апреля 2024 13:19

(1) Yasnovidyashii, нужно посмотреть какой тип элемента и какой там текст программой Inspect.

https://disk.yandex.ru/d/MdIIKE3uX6p2oQ

После использования программы Inspect лучше ее сразу закрывать, т.к. она будет мешать работе TurboConf.


Yasnovidyashii
#3, 10 апреля 2024 13:51

(2) bolsun, тип элемента — это параметр LocalizedControlType? Или ContolType?


bolsun
#4, 10 апреля 2024 13:52

(3) Yasnovidyashii, LocalizedControlType


Yasnovidyashii
#5, 10 апреля 2024 13:59

(4) bolsun, тогда все совпадает. По крайней мере визуально. Но при этом не работает. Больше не знаю, что могу сам сделать. В целом момент не критичный для меня.


Yasnovidyashii
#6, ред. 10 апреля 2024 14:05

(4) bolsun, а, не. Обманул. Невнимательность проявил. В модуле:

ИскомыеСтрокиОшибок = "Ошибка аутентификации в хранилище конфигурации!
|Проверьте правильность введенного имени пользователя и пароля.|Неклассифицированная ошибка работы с хранилищем конфигурации.";

А у меня

ИскомыеСтрокиОшибок = "Ошибка аутентификации в хранилище конфигурации!
|Проверьте правильность введенного имени пользователя и пароля.";

Вот в таком варианте заработало.


Yasnovidyashii
#7, 10 апреля 2024 14:10

(6) Yasnovidyashii, а теперь снова не работает. Все как-то нестабильно.


bolsun
#8, ред. 10 апреля 2024 14:12

(5) Yasnovidyashii, да, так должно быть. В скрипте баг


Yasnovidyashii
#9, 10 апреля 2024 14:14

(8) bolsun, предположу, у меня не всегда это окно появляется в течение секунды. Поэтому срабатывает не всегда даже в правильном варианте. Попробую увеличить.


bolsun
#10, 10 апреля 2024 14:17

Может вообще нет смысла проверять, сообщение об ошибке?
Если появилось модальное окно "Конфигуратор", то значит что-то не так пошло и можно предложить сбросить пароль?
Или может какое-то другое модальное окно возникнуть теоретически после успешного подключения?


bolsun
#11, 10 апреля 2024 14:20

Если даже какая-то ошибка возникла не связанная с паролем, то пользователь просто нажмет Нет, на предложение сбросить пароль.


Yasnovidyashii
#12, 10 апреля 2024 14:22

(10) bolsun, после успешного вряд ли. А вот ошибки с неуспешным соединением могут быть разными. Например, само хранилище не найдено по указанному пути. Или если кто-то другую базу подключил под этим же логином, то возникнет соответствующая ошибка.

Предлагаю проверку на текст оставить, но при этом увеличить ожидание окна до 2000 мс.


Yasnovidyashii
#13, 10 апреля 2024 14:22

(11) bolsun, да. Вполне вариант. Может так и надежнее будет.


bolsun
#14, ред. 10 апреля 2024 14:27

// + 18.11.2022
	Если Не Результат Тогда // на случай англоязычной системы и русскоязычной 1с
		Результат = ТК.НайтиЭлементПоИмени(ИскомыеСтрокиОшибок, "pane");		
	КонецЕсли;
// - 18.11.2022

это по идее лишнее, т.к. НайтиЭлементПоИмени одновременно ищет и с учетом английского названия типа. Видимо было добавлено из-за бага, неправильно переводилась "панель" на "panel" вместо "pane"

Только сейчас нашел этот баг, т.ч. в 6.1 этот код можно будет убрать.
А лучше добавить:

Если Не Разультат Тогда		
	ИскомыеСтрокиОшибок = "Неклассифицированная ошибка работы с хранилищем конфигурации.";
	Результат = ТК.НайтиЭлементПоИмени(ИскомыеСтрокиОшибок, "панель");		
КонецЕсли


bolsun
#15, ред. 10 апреля 2024 14:31

Версия с исправлениями

  • Увеличена задержка ожидания модального окна "Конфигуратор" до 2000 мс.
  • Исправлен баг со сбросом пароля из-за неверного искомого в окне текста.

StgAutoconnect.os


Семён
#16, 11 апреля 2024 09:31

(10) bolsun, Подключение к следующему хранилищу
оно же вроде и расширения тоже при старте подключает , а их может быть пачка


Yasnovidyashii
#17, 11 апреля 2024 09:43

(16) Семён, а что вытекает из этого? В связи с чем упомянуто?
Каждая авторизация в хранилище происходит обособленно от предыдущей. У меня есть такие базы и всё в них работает.


Семён
#18, 11 апреля 2024 09:47

(17) Yasnovidyashii, после модального окна может появиться ещё одно модальное и это не попытка ввода неправильного пароля - про это речь. У нас что-то не выходило в этом моменте в плане отличия одного от другого. Возможно уже можно отличить - тогда вопросов нет.


Yasnovidyashii
#19, 11 апреля 2024 09:51

(18) Семён, в финальном варианте текст в окне проверяется. Так что всё нормально.
Ну и проверил только что авторизацию в хранилищах по цепочке — тоже всё отработало.


Yasnovidyashii
#20, 18 апреля 2024 11:43

Yasnovidyashii изменил статус на Закрыто


tormozit
#21, ред. 08 мая 2024 16:44

Безусловное ожидание 2000мс - многовато. Мне это ожидание создает неудобства в работе, т.к. я часто захожу в конфигуратор подключенный к хранилищу https://turboconf.ru/Tasks/9408
Ожидание можно сделать в цикле порциями по 100мс и после каждого прохода проверять условие (например заголовок/наличие окна или поля). Тогда ожидание станет ровно той длительности которая требуется в каждом случае.


Yasnovidyashii
#22, 14 мая 2024 09:10

(21) tormozit, если я все правильно понял, то вот:

StgAutoconnect.os


tormozit
#23, 14 мая 2024 09:16

Код пока не смотрел. Проверил. Проблема осталась.


bolsun
#24, 14 мая 2024 13:42

(21) tormozit, как ожидание частями поможет сократить время проверки?
Ведь мы не ждем модальное окно "Конфигуратор", мы ждем что оно не появится за заданный интервал. А появиться оно может в интервале до 2000мс.


tormozit
#25, ред. 14 мая 2024 13:47

(24) bolsun, ждать надо появления фокуса ввода у главного окна конфигуратора, т.е. разблокировки ввода. Как только это случилось, дальше ждать нет смысла - операция подключения к хранилищу завершена.


bolsun
#26, ред. 14 мая 2024 13:48

(25) tormozit, возможно. Пока в скрипте вижу только ожидание частями окна Конфигуратор.


tormozit
#27, 14 мая 2024 22:54

Заменил цикл ожидания на

СтароеАктивноеОкно = ТК.ПолучитьАктивноеОкно();
Результат = ТК.ЖдатьСменуАктивногоОкна(СтароеАктивноеОкно, 5000, Ложь);

Блокировка ввода теперь снимается быстро. Но иногда почему то указатель мыши рывками двигается во время ожидания.


tormozit
#28, 16 мая 2024 08:47

Предыдущий вариант часто тормоза указателя мыши вызывает. Теперь пробую такой

Если ЗначениеЗаполнено(Пароль) Тогда
		ТК.ВставитьТекст(Пароль);
	КонецЕсли;
	
	СтароеАктивноеОкно = ТК.ПолучитьАктивноеОкно(); // tormozit
	ТК.Клавиша(Клавиши.Tab, 1);
	ТК.Клавиша(Клавиши.Enter, 1);

	Таймер = 0;
	Указатель = 0;
	Результат = ТК.ЖдатьСменуАктивногоОкна(СтароеАктивноеОкно, 5000, Ложь); // tormozit

	Если Указатель = 0 Тогда
		Возврат;
	КонецЕсли;


bolsun
#29, 16 мая 2024 13:40

(28) tormozit, в этом коде условие всегда будет Истина

Если Указатель = 0 Тогда
		Возврат;
	КонецЕсли;


bolsun
#30, 16 мая 2024 13:43

(28) tormozit, думаю нужно просто в ожидание частями добавить проверку на активное окно = главному окну конфигуратора, после каждого этапа.


tormozit
#31, ред. 26 мая 2024 12:04

Вот новый код. Прошу его внести в общий скрипт.

СтароеАктивноеОкно = ТК.ПолучитьАктивноеОкно();
ТК.Клавиша(Клавиши.Tab, 1);
ТК.Клавиша(Клавиши.Enter, 1);

ТК.ЖдатьСменуАктивногоОкна(СтароеАктивноеОкно, 2000, Истина);
Если ТК.ПолучитьЗаголовокТекущегоОкна() <> "Конфигуратор" Тогда
	Возврат;
КонецЕсли;


tormozit
#32, ред. 26 мая 2024 12:07

(31) tormozit, почему то иногда вызов метода ЖдатьСменуАктивногоОкна() в этом скрипте тормозит движение указателя мыши. Видимо какая то недоработка внутри Турбоконфа.
Ссылка скрыта
Опять тут же нужно более простое и надежное ожидание доступности ввода https://turboconf.ru/Tasks/9449


Для вставки изображения или файла, перетащите его в поле редактора или вставьте файл из буфера