Карточка с форума разработчиков Описание ==== По комбинации *пути к хранилищу* и *имени пользователя* подбирать пароль из файла настроек и подставлять в окне подключения к хранилищу конфигурации. Да, получается, что пароли будут незащищёнными, но на рабочем или домашнем ПК такое, в принципе, можно себе позволить. Если получится реализовать ввод настроек через ТурбоКонф, а сам файл с паролями хранить в шифрованном виде, под мастер-паролем, то прям вообще лепота.
#1, 13 декабря 2018 16:46
Такой скрипт можно было бы и самому написать, но я не имею понятия как делать так, чтобы скрипт стартовал не по клавиатурной комбинации, а сразу, при запуске ТК и отрабатывал по какому-нибудь событию, например при открытии указанного окна.
#2, 13 декабря 2018 17:28
@lankaster я сейчас активно занят ТК 5.6, подсказками и т.д. Поэтому думаю будет быстрее вынести в API возможность вызывать скрипт по событию. Чуть позже попробую сделать.
#3, 21 декабря 2018 13:29
bolsun переместил(а) эту карточку из списка Предложения и идеи в список Принятые предложения
#4, 21 декабря 2018 13:29
добавил возможность триггеров в SDK 5.6, скоро будет обновление
#5, 21 декабря 2018 17:20
@bolsun А есть ли возможность отладки скриптов ТК в VSCode?
И если есть, то подскажите пожалуйста где можно прочесть о том, как всё это правильно настроить.
#6, 21 декабря 2018 17:36
@lankaster такой возможности нет, и я даже не представляю пока как увязать отладку ТК с VSCode.
Самый простой на текущий момент вариант, в следующей версии могу вывести Сообщить() в лог.
Пока можно использовать
ПоказатьПодсказку / ShowHint()
Показывает подсказку в окне конфигуратора
Параметры
text : Текст уведомления. Строка
#7, 21 декабря 2018 17:42
@bolsun ОК, спасибо. Вариант с ShowHint() всё же лучше чем ничего)
#8, 23 декабря 2018 21:40
Пользователь прикрепил(а) вложение Иллюстрация.gif
#9, 23 декабря 2018 21:40
<Комментарий слишком большой и доступен только в Trellо>
#10, 23 декабря 2018 21:45
Пользователь прикрепил(а) вложение Иллюстрация.gif
#11, 24 декабря 2018 00:04
Пользователь прикрепил(а) вложение АвтоподключениеКХранилищу.zip
#12, 24 декабря 2018 00:28
И вдогонку второе предложение/пожелание:
Реализовать в API возможность хранения каких-то промежуточных значений на время выполнения скрипта. Что-то вроде пары методов: СохранитьЗначение(Ключ, Значение) и ПолучитьХранимоеЗначение(Ключ).
#13, 24 декабря 2018 00:54
Пользователь прикрепил(а) вложение АвтоподключениеКХранилищу.zip
#14, 24 декабря 2018 01:03
Пользователь прикрепил(а) вложение АвтоподключениеКХранилищу.zip
#15, 24 декабря 2018 14:44
@lankaster добавлю сохранение и восстановление значений. Еще мне не очень нравится идея хранить пароли в открытом виде, попробую сделать возможность сохранять значения в зашифрованном виде.
#16, 24 декабря 2018 21:10
@lankaster добавил возможность сохранять и восстанавливать значения. В пределах текущего сеанса и постоянно. С шифрованием и без.
https://vk.com/wall-123020382_456
#17, 24 декабря 2018 21:34
@lankaster теперь можно запрашивать у пользователя пароль, если он еще не сохранен и сохранять с шифрованием.
Также можно сохранить в сеансе неудачные попытки входа.
#18, 24 декабря 2018 23:27
@bolsun Шикарно! Большое спасибо!
#19, 24 декабря 2018 23:27
thumbs up 👍
#20, 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
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
#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
#22, 25 декабря 2018 04:50
@lankaster добавлю 😃
#23, 25 декабря 2018 21:10
@lankaster опубликуешь потом, что получится? очень интересно
#24, 04 января 2019 23:29
Есть ли возможность из скрипта узнать текущий путь соединения ИБ? Это бы очень помогло, ибо настройки автоподключения к хранилищу лучше хранить в разрезе разных информационных баз. Ведь у каждой базы хранилище, как минимум, лежит по отдельному адресу.
#25, 05 января 2019 11:14
@demon_infernal при подключении, есть поле "Путь к хранилищу", его же можно использовать?
#26, 05 января 2019 19:27
@bolsun не совсем понял.
В ситуации, когда происходит первый запуск конфигуратора, поле "путь к хранилищу" не заполнено. Мы же хотим сделать, чтобы оно заполнялось автоматически, то есть один раз ввел - программа запомнила и подставляет. Для этого где то нужно хранить набор данных "путь, логин и пароль" для каждой базы,а еще лучше - для каждого пользователя. В качестве уникального идентификатора, ключа, с которым сохранять настройки, проще всего использовать строку соединения ИБ. Ее как то можно получить из скрипта?
#27, 05 января 2019 19:44
Пользователь прикрепил(а) вложение image.png
https://trello-attachments.s3.amazonaws.com/5aec736d7dec7207a7f7c6df/5c125f8b6af70a8ddca1ff80/db663ca4be328e8414252162a772979a/image.png
#28, 05 января 2019 19:44
Из скрипта пока не получить строку соединения.
Опять же путь к хранилищу ведь сохраняется, если хотя бы раз подключались. Тогда можно взять из этого поля + Имя пользователя. Будет уникальный ключ.
#29, 05 января 2019 21:48
Пользователь прикрепил(а) вложение stg_autoconnect.os
#30, 05 января 2019 21:51
@bolsun Приложил то, что получилось.
Делает следующее:
При появлении окна подключения к хранилищу проверяет, заполнены ли путь и логин. Если да - по ним ищет сохраненный пароль. Если пароля нет - спрашивает его и сохраняет.
Затем вводит пароль и нажимает "Ок". Если попыток ввести пароль будет больше трех (например, изменился пароль и сохраненный пароль уже не подходит) - предлагает сбросить сохраненный пароль.
#31, 05 января 2019 21:51
thumbs up 👍
#32, 05 января 2019 21:59
Пользователь прикрепил(а) вложение stg_autoconnect.os
#33, 06 января 2019 10:24
@demon_infernal работает 😃
парочка мелких замечаний.
Сможете опубликовать на форуме или мне выложить?
#34, 07 января 2019 08:22
Пользователь прикрепил(а) вложение Stg_autoconnect.os
#35, 07 января 2019 08:23
@bolsun Мелкие замечания поправил.
При неудачном входе запрашивать пароль повторно не всегда правильно, ведь проблема может быть не только в пароле. Хранилище может переехать или стать поврежденным, и тогда пользователь даже не сможет поменять путь к нему, потому что постоянно будет выдаваться запрос пароля.
Я посмотрел, как это было сделано в аналогичном скрипте снегопата, и сделал так же.
Выложите сами на форум, если не трудно
#36, 07 января 2019 08:23
thumbs up 👍
#37, 07 января 2019 17:28
@bolsun Есть еще одна проблема.
В данный момент счетчик попыток подключения сохраняется один для всех информационных баз, его тоже нужно хранить в разрезе баз. Использовать ключ "путь к хранилищу + логин" здесь не получится, потому что при первом запуске конфигуратора путь к хранилищу и логин будут пустыми у любой базы. Нужен какой то другой уникальный ключ. Очень хочется иметь возможность получить из скрипта строку соединения.
Так же счетчик подключений нужно очищать в случае успешного подключения, но мне не известно, как отловить событие именно "успешного подключения к хранилищу".
#38, 07 января 2019 17:32
Пользователь прикрепил(а) вложение Stg_autoconnect.os
#39, 07 января 2019 17:33
Пользователь прикрепил(а) вложение Stg_autoconnect.os
#40, 08 января 2019 08:56
@demon_infernal для определения успешности подключения, можно после ввода пароля подождать окно об ошибке, как в варианте @lankaster
ТК.ЖдатьОкно("Конфигуратор", 1000, Ложь);
В случае если окна не будет, возникнет исключение. Значит соединение успешно.
Строку соединения просто не получить, для этого нужно вызывать окно о программе.
Может подойдет идентификатор процесса конфигуратора или название конфигурации?
#41, 08 января 2019 09:10
@bolsun Идентификатор процесса будет каждый раз разный от запуска к запуску.
Название конфигурации тоже не подойдет, у меня три разных хранилища для трех боевых баз, все называются "БухгалтерияПредприятия", к каждой из них есть еще тестовая база, итого 6 информационных баз с одинаковыми названиями.
Может средствами 1script как то можно получить строку соединения?
#42, 08 января 2019 09:25
@demon_infernal я не знаю других способов получить, кроме как из окна О программе, но его не вызвать при открытом окне хранилища.
Может можно без счетчика обойтись, в случае неуспешного входа, показать вопрос о сбросе пароля?
И еще вопрос. Пароль же всегда одинаковый в разрезе ПутьКХранилищу/Пользователь ? Почему не использовать этот ключ для счетчика?
#43, 08 января 2019 10:29
@demon_infernal последняя версия скрипта не работает.
ошибка, вместо ЗначениеЗаполнено(Пароль) нужно ЗначениеЗаполнено(Значение)
#44, 08 января 2019 10:41
Пользователь прикрепил(а) вложение StgAutoconnect.os
#45, 08 января 2019 10:42
@bolsun Да, заметил, что УстановитьЗначение() не работает, закоментил эту строку.
Убрал счетчик попыток, выдаю вопрос о сбросе сохраненного пароля при каждом неудачном входе, попробуйте новую версию скрипта.
#46, 08 января 2019 10:43
Пользователь прикрепил(а) вложение StgAutoconnect.os
#47, 08 января 2019 10:44
Пользователь прикрепил(а) вложение StgAutoconnect.os
#48, 08 января 2019 10:53
@demon_infernal отлично, теперь все работает и без счетчиков 😃
#49, 08 января 2019 10:55
bolsun переместил(а) эту карточку из списка Принятые предложения в список Баги новые и на выяснении
#50, 08 января 2019 10:55
bolsun переместил(а) эту карточку из списка Баги новые и на выяснении в список Принятые предложения
#51, 08 января 2019 11:00
@bolsun Публикуйте тогда на форуме
#52, 08 января 2019 11:05
@demon_infernal @lankaster спасибо всем, кто участвовал в разработке этого скрипта и API 😃
скрипт опубликую на форуме
#53, 08 января 2019 11:05
thumbs up 👍
#54, 08 января 2019 11:05
bolsun переместил(а) эту карточку из списка Принятые предложения в список Завершено
#55, 09 января 2019 19:06
@bolsun @demon_infernal Позволил себе расслабиться во время каникул, а по возвращении вижу уже готовый скрипт. Супер!
#56, 09 января 2019 19:42
@bolsun Для полного счастья остаётся добавить форме ввода значения свойство ВводПароля, чтобы вводимое значение затиралось звёздочками 😄
#57, 09 января 2019 20:05
@lankaster с возвращением 😃
согласен, звездочки не помешают, добавлю
#58, 09 января 2019 20:05
thumbs up 👍
#59, 09 января 2019 23:47
@bolsun @lankaster Появилась новая проблема. Когда на разных машинах строка соединения разная (например, на одной машине имя сервера "server1c", на другой "sql"), после подключения к хранилищу конфигуратор выдает сообщение "расположение информационной базы изменилось. продолжить подключение? да нет", на что тригерится скрипт, воспринимая это сообщения как сообщение об ошибке входа. Есть какая то возможность ожидать не просто появления окна с заголовком "Конфигуратор", а исключить из списка ожиданий конкретно это окно с предупреждением?
#60, 10 января 2019 11:07
@demon_infernal Насколько я знаю, метод ЖдатьОкно() (равно как и прочие методы по получению или ожиданию окна) пока ориентируются только на текст заголовка окна (чего, с очень информативными заголовками "Конфигуратор" у значительной части окон, не всегда хватает). Пусть Михаил поправит если я ошибаюсь.
#61, 10 января 2019 11:26
@demon_infernal @lankaster да, пока только по заголовку. Но мысли на эту тему есть. Попробую что-нибудь сделать.
#62, 11 января 2019 22:51
@bolsun Заметил еще кое что. Почему то при использовании скрипта автоподключения к хранилищу не устанавливается заголовок окна конфигуратора. Иногда выдается сообщение о том, что превышено время ожидания, иногда нет, но заголовок окна не устанавливается никогда, у меня, во всяком случае. Может, для скрипта установки заголовка сделать возможность настройки таймаута ожидания окна?
#63, 12 января 2019 17:31
Пользователь прикрепил(а) вложение StgAutoconnect.os
https://trello-attachments.s3.amazonaws.com/5aec736d7dec7207a7f7c6df/5c125f8b6af70a8ddca1ff80/024d1f6793d9e4bd8c4dba4e3c4c1747/StgAutoconnect.os
#64, 12 января 2019 17:34
@demon_infernal @lankaster
добавил скрытие пароля при ввода
при появлении сообщения после ввода пароля, добавлена дополнительная проверка, что окно сообщения содержит текст "Ошибка аутентификации в хранилище конфигурации!..."
Необходимо обновить скрипт и ТК.
#65, 15 января 2019 19:44
@demon_infernal проблема с заголовком актуальная? если да, прошу создать карточку с логом
#66, 15 января 2019 19:51
@bolsun да, актуальна. Где искать лог?
#67, 15 января 2019 19:53
@demon_infernal Ctrl+Alt+Shift+L