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

Добавил: lankaster, 13 декабря 2018 16:32, обновлено: 15 января 2019 19:53

Раздел: Предложения


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


К списку тем

Комментарии

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

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


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

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


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

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


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

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


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

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


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

@lankaster такой возможности нет, и я даже не представляю пока как увязать отладку ТК с VSCode. Самый простой на текущий момент вариант, в следующей версии могу вывести Сообщить() в лог. Пока можно использовать ПоказатьПодсказку / ShowHint() Показывает подсказку в окне конфигуратора Параметры text : Текст уведомления. Строка


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

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


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

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


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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

thumbs up 👍


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

Пользователь прикрепил(а) вложение 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 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
24 декабря 2018 23:36: #21

Вот бы ещё возможность отобразить диалог появилась :) 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
25 декабря 2018 04:50: #22

@lankaster добавлю :)


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

thumbs up 👍


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

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


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

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


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

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


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

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


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

thumbs up 👍


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

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


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

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


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

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


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

@demon_infernal для определения успешности подключения, можно после ввода пароля подождать окно об ошибке, как в варианте @lankaster ТК.ЖдатьОкно("Конфигуратор", 1000, Ложь); В случае если окна не будет, возникнет исключение. Значит соединение успешно. Строку соединения просто не получить, для этого нужно вызывать окно о программе. Может подойдет идентификатор процесса конфигуратора или название конфигурации?


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

@demon_infernal @lankaster спасибо всем, кто участвовал в разработке этого скрипта и API :) скрипт опубликую на форуме


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

thumbs up 👍


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

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


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

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


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

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


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

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


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

thumbs up 👍


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

@demon_infernal Ctrl+Alt+Shift+L


TurboConf

Расширение возможностей

Конфигуратора 1С

Скачать

Бесплатный пробный период 14 дней