Автоподключение к хранилищу

Карточка с форума разработчиков Описание ==== По комбинации *пути к хранилищу* и *имени пользователя* подбирать пароль из файла настроек и подставлять в окне подключения к хранилищу конфигурации. Да, получается, что пароли будут незащищёнными, но на рабочем или домашнем ПК такое, в принципе, можно себе позволить. Если получится реализовать ввод настроек через ТурбоКонф, а сам файл с паролями хранить в шифрованном виде, под мастер-паролем, то прям вообще лепота.

Комментарии

Поддержка TurboConf
#1, 13 декабря 2018 16:46

Такой скрипт можно было бы и самому написать, но я не имею понятия как делать так, чтобы скрипт стартовал не по клавиатурной комбинации, а сразу, при запуске ТК и отрабатывал по какому-нибудь событию, например при открытии указанного окна.


Поддержка TurboConf
#2, 13 декабря 2018 17:28

@lankaster я сейчас активно занят ТК 5.6, подсказками и т.д. Поэтому думаю будет быстрее вынести в API возможность вызывать скрипт по событию. Чуть позже попробую сделать.


Поддержка TurboConf
#3, 21 декабря 2018 13:29

bolsun переместил(а) эту карточку из списка Предложения и идеи в список Принятые предложения


Поддержка TurboConf
#4, 21 декабря 2018 13:29

добавил возможность триггеров в SDK 5.6, скоро будет обновление


Поддержка TurboConf
#5, 21 декабря 2018 17:20

@bolsun А есть ли возможность отладки скриптов ТК в VSCode?
И если есть, то подскажите пожалуйста где можно прочесть о том, как всё это правильно настроить.


Поддержка TurboConf
#6, 21 декабря 2018 17:36

@lankaster такой возможности нет, и я даже не представляю пока как увязать отладку ТК с VSCode.

Самый простой на текущий момент вариант, в следующей версии могу вывести Сообщить() в лог.

Пока можно использовать

ПоказатьПодсказку / ShowHint()
Показывает подсказку в окне конфигуратора
Параметры
text : Текст уведомления. Строка


Поддержка TurboConf
#7, 21 декабря 2018 17:42

@bolsun ОК, спасибо. Вариант с ShowHint() всё же лучше чем ничего)


Поддержка TurboConf
#8, 23 декабря 2018 21:40

Пользователь прикрепил(а) вложение Иллюстрация.gif


Поддержка TurboConf
#9, 23 декабря 2018 21:40

<Комментарий слишком большой и доступен только в Trellо>


Поддержка TurboConf
#10, 23 декабря 2018 21:45

Пользователь прикрепил(а) вложение Иллюстрация.gif


Поддержка TurboConf
#11, 24 декабря 2018 00:04

Пользователь прикрепил(а) вложение АвтоподключениеКХранилищу.zip


Поддержка TurboConf
#12, 24 декабря 2018 00:28

И вдогонку второе предложение/пожелание:
Реализовать в API возможность хранения каких-то промежуточных значений на время выполнения скрипта. Что-то вроде пары методов: СохранитьЗначение(Ключ, Значение) и ПолучитьХранимоеЗначение(Ключ).


Поддержка TurboConf
#13, 24 декабря 2018 00:54

Пользователь прикрепил(а) вложение АвтоподключениеКХранилищу.zip


Поддержка TurboConf
#14, 24 декабря 2018 01:03

Пользователь прикрепил(а) вложение АвтоподключениеКХранилищу.zip


Поддержка TurboConf
#15, 24 декабря 2018 14:44

@lankaster добавлю сохранение и восстановление значений. Еще мне не очень нравится идея хранить пароли в открытом виде, попробую сделать возможность сохранять значения в зашифрованном виде.


Поддержка TurboConf
#16, 24 декабря 2018 21:10

@lankaster добавил возможность сохранять и восстанавливать значения. В пределах текущего сеанса и постоянно. С шифрованием и без.
https://vk.com/wall-123020382_456


Поддержка TurboConf
#17, 24 декабря 2018 21:34

@lankaster теперь можно запрашивать у пользователя пароль, если он еще не сохранен и сохранять с шифрованием.
Также можно сохранить в сеансе неудачные попытки входа.


Поддержка TurboConf
#18, 24 декабря 2018 23:27

@bolsun Шикарно! Большое спасибо!


Поддержка TurboConf
#19, 24 декабря 2018 23:27

thumbs up 👍


Поддержка TurboConf
#21, 24 декабря 2018 23:36

Вот бы ещё возможность отобразить диалог появилась 😃 https://trello.com/c/KcNqy03P/240-%D1%84%D0%BE%D1%80%D0%BC%D0%B0-%D0%B2%D0%BE%D0%BF%D1%80%D0%BE%D1%81%D0%B0-%D0%B4%D0%BB%D1%8F-%D1%82%D0%BA


Поддержка TurboConf
#22, 25 декабря 2018 04:50

@lankaster добавлю 😃


Поддержка TurboConf
#23, 25 декабря 2018 21:10

@lankaster опубликуешь потом, что получится? очень интересно


Поддержка TurboConf
#24, 04 января 2019 23:29

Есть ли возможность из скрипта узнать текущий путь соединения ИБ? Это бы очень помогло, ибо настройки автоподключения к хранилищу лучше хранить в разрезе разных информационных баз. Ведь у каждой базы хранилище, как минимум, лежит по отдельному адресу.


Поддержка TurboConf
#25, 05 января 2019 11:14

@demon_infernal при подключении, есть поле "Путь к хранилищу", его же можно использовать?


Поддержка TurboConf
#26, 05 января 2019 19:27

@bolsun не совсем понял.
В ситуации, когда происходит первый запуск конфигуратора, поле "путь к хранилищу" не заполнено. Мы же хотим сделать, чтобы оно заполнялось автоматически, то есть один раз ввел - программа запомнила и подставляет. Для этого где то нужно хранить набор данных "путь, логин и пароль" для каждой базы,а еще лучше - для каждого пользователя. В качестве уникального идентификатора, ключа, с которым сохранять настройки, проще всего использовать строку соединения ИБ. Ее как то можно получить из скрипта?


Поддержка TurboConf
#27, 05 января 2019 19:44

Пользователь прикрепил(а) вложение image.png
https://trello-attachments.s3.amazonaws.com/5aec736d7dec7207a7f7c6df/5c125f8b6af70a8ddca1ff80/db663ca4be328e8414252162a772979a/image.png


Поддержка TurboConf
#28, 05 января 2019 19:44

Из скрипта пока не получить строку соединения.
Опять же путь к хранилищу ведь сохраняется, если хотя бы раз подключались. Тогда можно взять из этого поля + Имя пользователя. Будет уникальный ключ.


Поддержка TurboConf
#29, 05 января 2019 21:48

Пользователь прикрепил(а) вложение stg_autoconnect.os


Поддержка TurboConf
#30, 05 января 2019 21:51

@bolsun Приложил то, что получилось.
Делает следующее:
При появлении окна подключения к хранилищу проверяет, заполнены ли путь и логин. Если да - по ним ищет сохраненный пароль. Если пароля нет - спрашивает его и сохраняет.
Затем вводит пароль и нажимает "Ок". Если попыток ввести пароль будет больше трех (например, изменился пароль и сохраненный пароль уже не подходит) - предлагает сбросить сохраненный пароль.


Поддержка TurboConf
#31, 05 января 2019 21:51

thumbs up 👍


Поддержка TurboConf
#32, 05 января 2019 21:59

Пользователь прикрепил(а) вложение stg_autoconnect.os


Поддержка TurboConf
#33, 06 января 2019 10:24

@demon_infernal работает 😃
парочка мелких замечаний.

  1. Перед вставкой пароля, проверить, что сохраненный пароль не пустая строка, т.к. при вставке через буфер, может возникнуть ошибка.
  2. Текст формы ввода пароля дублирует заголовок, может добавить в тексте, что пароль будет сохранен для последующего автоматического входа?
  3. Может быть при неудачном входе предложить ввести пароль заново? но тут я пока не уверен

Сможете опубликовать на форуме или мне выложить?


Поддержка TurboConf
#34, 07 января 2019 08:22

Пользователь прикрепил(а) вложение Stg_autoconnect.os


Поддержка TurboConf
#35, 07 января 2019 08:23

@bolsun Мелкие замечания поправил.
При неудачном входе запрашивать пароль повторно не всегда правильно, ведь проблема может быть не только в пароле. Хранилище может переехать или стать поврежденным, и тогда пользователь даже не сможет поменять путь к нему, потому что постоянно будет выдаваться запрос пароля.
Я посмотрел, как это было сделано в аналогичном скрипте снегопата, и сделал так же.
Выложите сами на форум, если не трудно


Поддержка TurboConf
#36, 07 января 2019 08:23

thumbs up 👍


Поддержка TurboConf
#37, 07 января 2019 17:28

@bolsun Есть еще одна проблема.
В данный момент счетчик попыток подключения сохраняется один для всех информационных баз, его тоже нужно хранить в разрезе баз. Использовать ключ "путь к хранилищу + логин" здесь не получится, потому что при первом запуске конфигуратора путь к хранилищу и логин будут пустыми у любой базы. Нужен какой то другой уникальный ключ. Очень хочется иметь возможность получить из скрипта строку соединения.
Так же счетчик подключений нужно очищать в случае успешного подключения, но мне не известно, как отловить событие именно "успешного подключения к хранилищу".


Поддержка TurboConf
#38, 07 января 2019 17:32

Пользователь прикрепил(а) вложение Stg_autoconnect.os


Поддержка TurboConf
#39, 07 января 2019 17:33

Пользователь прикрепил(а) вложение Stg_autoconnect.os


Поддержка TurboConf
#40, 08 января 2019 08:56

@demon_infernal для определения успешности подключения, можно после ввода пароля подождать окно об ошибке, как в варианте @lankaster

ТК.ЖдатьОкно("Конфигуратор", 1000, Ложь);

В случае если окна не будет, возникнет исключение. Значит соединение успешно.

Строку соединения просто не получить, для этого нужно вызывать окно о программе.
Может подойдет идентификатор процесса конфигуратора или название конфигурации?


Поддержка TurboConf
#41, 08 января 2019 09:10

@bolsun Идентификатор процесса будет каждый раз разный от запуска к запуску.
Название конфигурации тоже не подойдет, у меня три разных хранилища для трех боевых баз, все называются "БухгалтерияПредприятия", к каждой из них есть еще тестовая база, итого 6 информационных баз с одинаковыми названиями.
Может средствами 1script как то можно получить строку соединения?


Поддержка TurboConf
#42, 08 января 2019 09:25

@demon_infernal я не знаю других способов получить, кроме как из окна О программе, но его не вызвать при открытом окне хранилища.

Может можно без счетчика обойтись, в случае неуспешного входа, показать вопрос о сбросе пароля?

И еще вопрос. Пароль же всегда одинаковый в разрезе ПутьКХранилищу/Пользователь ? Почему не использовать этот ключ для счетчика?


Поддержка TurboConf
#43, 08 января 2019 10:29

@demon_infernal последняя версия скрипта не работает.

  1. Я писал, что нужно использовать УстановитьЗначение(), вместо ВставитьТекст(), но я ошибся, извиняюсь. Этой функции еще нет в публичном API. Поэтому пока можно использовать ВставитьТекст().
  2. В процедуре ОбработчикВводаЗначения(Значение, Отказ)
    ошибка, вместо ЗначениеЗаполнено(Пароль) нужно ЗначениеЗаполнено(Значение)


Поддержка TurboConf
#44, 08 января 2019 10:41

Пользователь прикрепил(а) вложение StgAutoconnect.os


Поддержка TurboConf
#45, 08 января 2019 10:42

@bolsun Да, заметил, что УстановитьЗначение() не работает, закоментил эту строку.
Убрал счетчик попыток, выдаю вопрос о сбросе сохраненного пароля при каждом неудачном входе, попробуйте новую версию скрипта.


Поддержка TurboConf
#46, 08 января 2019 10:43

Пользователь прикрепил(а) вложение StgAutoconnect.os


Поддержка TurboConf
#47, 08 января 2019 10:44

Пользователь прикрепил(а) вложение StgAutoconnect.os


Поддержка TurboConf
#48, 08 января 2019 10:53

@demon_infernal отлично, теперь все работает и без счетчиков 😃


Поддержка TurboConf
#49, 08 января 2019 10:55

bolsun переместил(а) эту карточку из списка Принятые предложения в список Баги новые и на выяснении


Поддержка TurboConf
#50, 08 января 2019 10:55

bolsun переместил(а) эту карточку из списка Баги новые и на выяснении в список Принятые предложения


Поддержка TurboConf
#51, 08 января 2019 11:00

@bolsun Публикуйте тогда на форуме


Поддержка TurboConf
#52, 08 января 2019 11:05

@demon_infernal @lankaster спасибо всем, кто участвовал в разработке этого скрипта и API 😃

скрипт опубликую на форуме


Поддержка TurboConf
#53, 08 января 2019 11:05

thumbs up 👍


Поддержка TurboConf
#54, 08 января 2019 11:05

bolsun переместил(а) эту карточку из списка Принятые предложения в список Завершено


Поддержка TurboConf
#55, 09 января 2019 19:06

@bolsun @demon_infernal Позволил себе расслабиться во время каникул, а по возвращении вижу уже готовый скрипт. Супер!


Поддержка TurboConf
#56, 09 января 2019 19:42

@bolsun Для полного счастья остаётся добавить форме ввода значения свойство ВводПароля, чтобы вводимое значение затиралось звёздочками 😄


Поддержка TurboConf
#57, 09 января 2019 20:05

@lankaster с возвращением 😃
согласен, звездочки не помешают, добавлю


Поддержка TurboConf
#58, 09 января 2019 20:05

thumbs up 👍


Поддержка TurboConf
#59, 09 января 2019 23:47

@bolsun @lankaster Появилась новая проблема. Когда на разных машинах строка соединения разная (например, на одной машине имя сервера "server1c", на другой "sql"), после подключения к хранилищу конфигуратор выдает сообщение "расположение информационной базы изменилось. продолжить подключение? да нет", на что тригерится скрипт, воспринимая это сообщения как сообщение об ошибке входа. Есть какая то возможность ожидать не просто появления окна с заголовком "Конфигуратор", а исключить из списка ожиданий конкретно это окно с предупреждением?


Поддержка TurboConf
#60, 10 января 2019 11:07

@demon_infernal Насколько я знаю, метод ЖдатьОкно() (равно как и прочие методы по получению или ожиданию окна) пока ориентируются только на текст заголовка окна (чего, с очень информативными заголовками "Конфигуратор" у значительной части окон, не всегда хватает). Пусть Михаил поправит если я ошибаюсь.


Поддержка TurboConf
#61, 10 января 2019 11:26

@demon_infernal @lankaster да, пока только по заголовку. Но мысли на эту тему есть. Попробую что-нибудь сделать.


Поддержка TurboConf
#62, 11 января 2019 22:51

@bolsun Заметил еще кое что. Почему то при использовании скрипта автоподключения к хранилищу не устанавливается заголовок окна конфигуратора. Иногда выдается сообщение о том, что превышено время ожидания, иногда нет, но заголовок окна не устанавливается никогда, у меня, во всяком случае. Может, для скрипта установки заголовка сделать возможность настройки таймаута ожидания окна?


Поддержка TurboConf
#63, 12 января 2019 17:31

Пользователь прикрепил(а) вложение StgAutoconnect.os
https://trello-attachments.s3.amazonaws.com/5aec736d7dec7207a7f7c6df/5c125f8b6af70a8ddca1ff80/024d1f6793d9e4bd8c4dba4e3c4c1747/StgAutoconnect.os


Поддержка TurboConf
#64, 12 января 2019 17:34

@demon_infernal @lankaster
добавил скрытие пароля при ввода
при появлении сообщения после ввода пароля, добавлена дополнительная проверка, что окно сообщения содержит текст "Ошибка аутентификации в хранилище конфигурации!..."

Необходимо обновить скрипт и ТК.


Поддержка TurboConf
#65, 15 января 2019 19:44

@demon_infernal проблема с заголовком актуальная? если да, прошу создать карточку с логом


Поддержка TurboConf
#66, 15 января 2019 19:51

@bolsun да, актуальна. Где искать лог?


Поддержка TurboConf
#67, 15 января 2019 19:53

@demon_infernal Ctrl+Alt+Shift+L


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