Подстановка имени базы данных в начало заголовка окон с программой 1С (конфигуратор и предприятие).
Удобно при одновременной работе с большим количеством баз данных.
Скрипт интересен будет как для программистов, так и для администраторов баз данных.
Заголовок можно менять для любой программы, не только для 1С, для этого требуется немного исправить скрипт.
Программисту 1С не составит труда переделать скрипт.
Удобно при одновременной работе с большим количеством баз данных.
Скрипт интересен будет как для программистов, так и для администраторов баз данных.
Заголовок можно менять для любой программы, не только для 1С, для этого требуется немного исправить скрипт.
Программисту 1С не составит труда переделать скрипт.
Когда ведется разработка с несколькими базами, устаешь кликать на значок "Показать информацию о программе". Предлагаю небольшой скрипт для удобства. Скрипт уже включен в поставку программы Faster, его надо только активировать.
Программу можно скачать здесь: Многофункциональный ускоритель Faster
Для тех кто не пользуется автоподстановкой в программе — отключите "Перехват клавиш и мыши" (см. рис. 2).
Вот сам скрипт (его можно переписать под себя, как вам удобно, язык похож на 1С) :
// корректируем заголовок во всех запущенных 1С
// в начало заголовка добавляем имя базы данных
// если Компьютеры.Запрос возвращает ошибку, то вероятно на компьютере не запущена служба WMI
// данный скрипт лучше запускать в отдельном потоке, для этого добавьте код в скрипт'Старт'
// НС="Подмена заголовка 1С";
// Если(Окна.Есть(НС,"TFormMainDefy")=0)Тогда Скрипты.Запустить(, НС, 5);Конец;
Окна1С = Окна.Определить(, "V8TopLevelFrame");
Для Окно1С Из Окна1С Цикл
ЗаголовокБыл = Окно1С.'Заголовок окна';
ПервыйСимвол = Строки.Подстрока(ЗаголовокБыл, 1, 1);
Если (Строки.Есть(ПервыйСимвол, ".,:,·")) Тогда Продолжить; Конец;
ИдОкна = Окно1С.'Идентификатор окна';
Список = Компьютеры.Запрос("SELECT CommandLine FROM WIN32_Process WHERE ProcessId="+Окна.Процесс(ИдОкна));
Если (Список<=0) Тогда
Сообщить("Ошибка при вызове Компьютеры.Запрос", Ошибки.Строка(Список));
Этот.Отмечен = 0; // отключаем автовыполнение скрипт
Возврат;
Конец;
Для Объект Из Список Цикл
Стр = Объект.Текст;
Если (Строки.Подстрока(Стр, 1, 11)="CommandLine") Тогда
// Сообщить(Стр);
ИмяБД = "";
ПрефиксИмени = "";
ПараметрыКоманды = Строки.Разделить(Стр, " ", , """");
Для Параметр Из ПараметрыКоманды Цикл
Если (Строки.Подстрока(Параметр, 1, 2)="/F") Тогда // файловая база
ИмяБД = Параметр; ПрефиксИмени = ".";
Прервать;
Конец;
Если (Строки.Подстрока(Параметр, 1, 2)="/S") Тогда // серверная база
ИмяБД = Параметр; ПрефиксИмени = ":";
Прервать;
Конец;
Если (Строки.Подстрока(Параметр, 1, 7)="/IBName") Тогда // имя базы в списке баз стартера 1С
ИмяБД = Строки.Заменить(Параметр, "IBName", ""); ПрефиксИмени = "·";
Прервать;
Конец;
Конец;
Если (ИмяБД<>"") Тогда
Поз = Строки.Найти(ИмяБД, Символы.ОС, 1, 1);
Если (Поз=0) Тогда Поз = Строки.Найти(ИмяБД, "/", 1, 1); Конец;
ИмяБД = Строки.Подстрока(ИмяБД, Поз+1, Строки.Длина(Параметр)-Поз);
ИмяБД = Строки.Заменить(ИмяБД, """", "");
ЗаголовокНовый = ПрефиксИмени + ИмяБД + " - "+ ЗаголовокБыл;
// Сообщить(ЗаголовокНовый);
Окна.Заголовок(ИдОкна, ЗаголовокНовый);
Иначе
Сообщить("ИмяБД не определено", Стр);
Конец;
Конец;
Конец;
Конец;
А просто скрипт, который будет работать в виндах без дополнительных «окружений» — не…?
(1) Без дополнительных окружений — надо писать на английском…
А я программист 1С — я привык думать и программировать на русском.
Надо любить свой язык, спасибо 1С за это…
Да и не было бы 1С и этого сайта, если бы компания 1С выбрала основной язык программирования на английском…
Я знаю много языков программирования и занимаюсь кодом 20 лет, но писать код и думать на родном языке оказалось проще…
Это факт.
(1) скрипт на AutoIt :
https://infostart.ru/public/462685/
(3) только конфигуратор?
Пишет ошибку: «Ошибка при вызове Компьютеры.Запрос — Доступ запрещен»
WMI запущен и отвечает
PS C:UsersSlawa> get-wmiobject Win32_OperatingSystem
SystemDirectory : C:Windowssystem32
Organization :
BuildNumber : 14393
RegisteredUser :
SerialNumber : 00378-20000-00003-AA087
Version : 10.0.14393
Пробовал запустить faster через «Запуск от имени администратора» — не помогло
Windows 10 х64
Вероятно исправил, обновите программу, и проверьте…
Ошибка ушла
Но выявилась новая:
Пишет:
ИмяБД не определено — CommandLine=»C:Program Files (x86)1cv88.3.13.1644in1cv8.exe» DESIGNER /IBName»ХФ ДВИ ОПТ SQL» /ConfigurationRepositoryF «D:DataBaseХранилищеКонфигурацийХФБухОпт30» /ConfigurationRepositoryN «SlawaWork» …
Поставил вывод Параметра в цикле «Для Параметр Из ПараметрыКоманды Цикл»
Получил:
Параметр — CommandLine=»C:Program Files (x86)1cv88.3.13.1644in1cv8.exe» DESIGNER /IBName»ХФ ДВИ ОПТ SQL»
Параметр — /ConfigurationRepositoryF
Параметр — «D:DataBaseХранилищеКонфигурацийХФБухОпт30» /ConfigurationRepositoryN
Параметр — «SlawaWork» /ConfigurationRepositoryP
…
Похоже ПараметрыКоманды = Строки.Разделить(Стр, » «, , «»»»); работает неверно
(7) Я выполнил простой скрипт в Faster на основе ваших данных, все работает корректно, разделяет на строки правильно:
CommandLine=»CommandLine=»»C:Program Files (x86)1cv88.3.13.1644in1cv8.exe»» DESIGNER /IBName»»ХФ ДВИ Розн SQL»» /ConfigurationRepositoryF «»D:DataBaseХранилищеКонфигурацийХФБухРозн30″» /ConfigurationRepositoryN «»SlawaWork»» /ConfigurationRepositoryP «»1111″» /AppAutoCheckMode /AppAutoCheckVersion /AppAutoInstallLastVersion+»;
такая не работает
вот
еще
(10) На скриншоте видно что перед и после слова DESIGNER не пробел…
скопируйте в буфер данную строку и в Faster (два раза правый Ctrl) можно посмотреть что за символы там (закладка Строки).
А когда вы копируете сюда (в сообщения то они превращаются в пробелы) и все работает…
Там по два пробела до и после
(13) сделайте пока замену двух пробеллов на один:
я посмотрю проблему разделения строки при двух пробелах…
Это заработало
А эта строка не работает:
«C:Program Files (x86)1cv88.3.13.1644in1cv8.exe» DESIGNER /IBConnectionString «File=»»D:ПроектыВрем\_ХФ Розн 3.0.57.10 CFG»»;» /AppAutoCheckMode
Добавил в скрипт:
Если (Строки.Подстрока(Параметр, 2, 5)=»File=») Тогда // файловая база
ИмяБД = Параметр; ПрефиксИмени = «.»;
Прервать;
Конец;
Не помогло
Перед добавленным фрагментом вывел:
Сообщить(Строки.Подстрока(Параметр, 2, 5));
Сообщить((Строки.Подстрока(Параметр, 2, 5)=»File=»));
Получил:
File=
0
Не пойму в чем проблема
(15)
Здесь два раза в двойные кавычки обернута строка, зачем?
Я не знаю
https://infostart.ru/public/274485/
Пользуюсь для запуска стартером
(17)
Исправлено, обновите программу, и проверьте…
Работает
Спасибо
Зачем так сложно?
В модуле управляемого приложения, в процедуре «При начале работы системы».
Читаем имя рабочей базы и меняем заголовок.
ТекЗаголовок=ПолучитьЗаголовокКлиентскогоПриложения();
СтрокаДобавления=ВРег(СтрокаСоединенияИнформационнойБазы());
УстановитьЗаголовокКлиентскогоПриложения(СтрокаДобавления+ТекЗаголовок);
Собственно и всех проблем!
(20) А если конфигураций разных много и все на поставке…? А как вашим способом поменять в конфигураторе заголовок?
Зачем менять заголовок в конфигураторе не понятно.
«На поставке», это что значит? Не снято с сопровождения?
Так используйте расширение конфигурации.
(22) Если открыто 10 конфигураторов, то это просто удобно…
Не меняется заголовок самого окна в режиме Предприятие, хотя в скриншотах панели задач заголовок изменён.
Наверное сама 1С-ка мешает
Нельзя ли это исправить?
Видеть что за база запущена не лишне было-бы.
Как быть линуксовым клиентам?
решение не универсальное.
да уж 🙂
каждый делает под себя и делится тем, что сделал
и за это ему огромное спасибо
ну нету у автора линукса 🙂