Подмена заголовка 1С

Программирование - Универсальные функции

Windows Администрирование Программирование Утилиты Настройки Удобные доработки.

17
Подстановка имени базы данных в начало заголовка окон с программой 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, Строки.Длина(Параметр)-Поз);
                ИмяБД          = Строки.Заменить(ИмяБД,  """",  "");
                ЗаголовокНовый = ПрефиксИмени            +      ИмяБД + " - "+ ЗаголовокБыл;
                // Сообщить(ЗаголовокНовый);
                Окна.Заголовок(ИдОкна, ЗаголовокНовый);
            Иначе
                Сообщить("ИмяБД не определено", Стр);
            Конец;
        Конец;
    Конец;
Конец;

 

17

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. CheBurator 3532 10.12.18 00:17 Сейчас в теме
А просто скрипт, который будет работать в виндах без дополнительных "окружений" - не...?
2. moolex 769 10.12.18 07:26 Сейчас в теме
(1) Без дополнительных окружений - надо писать на английском...
А я программист 1С - я привык думать и программировать на русском.
Надо любить свой язык, спасибо 1С за это...
Да и не было бы 1С и этого сайта, если бы компания 1С выбрала основной язык программирования на английском...
Я знаю много языков программирования и занимаюсь кодом 20 лет, но писать код и думать на родном языке оказалось проще...
Это факт.
DarkUser; K_Ilia; +2 Ответить
3. kuzyara 578 04.01.19 09:03 Сейчас в теме
4. moolex 769 04.01.19 10:22 Сейчас в теме
Оставьте свое сообщение