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

 

26 Comments

  1. CheBurator

    А просто скрипт, который будет работать в виндах без дополнительных «окружений» — не…?

    Reply
  2. moolex

    (1) Без дополнительных окружений — надо писать на английском…

    А я программист 1С — я привык думать и программировать на русском.

    Надо любить свой язык, спасибо 1С за это…

    Да и не было бы 1С и этого сайта, если бы компания 1С выбрала основной язык программирования на английском…

    Я знаю много языков программирования и занимаюсь кодом 20 лет, но писать код и думать на родном языке оказалось проще…

    Это факт.

    Reply
  3. kuzyara

    (1) скрипт на AutoIt :

    https://infostart.ru/public/462685/

    Reply
  4. moolex

    (3) только конфигуратор?

    Reply
  5. slawa

    Пишет ошибку: «Ошибка при вызове Компьютеры.Запрос — Доступ запрещен»

    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

    Reply
  6. moolex

    Вероятно исправил, обновите программу, и проверьте…

    Reply
  7. slawa

    Ошибка ушла

    Но выявилась новая:

    Пишет:

    ИмяБД не определено — 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

    Похоже ПараметрыКоманды = Строки.Разделить(Стр, » «, , «»»»); работает неверно

    Reply
  8. moolex

    (7) Я выполнил простой скрипт в Faster на основе ваших данных, все работает корректно, разделяет на строки правильно:

    CommandLine=»»»C:Program Files (x86)1cv88.3.13.1644in1cv8.exe»» DESIGNER /IBName»»ХФ ДВИ ОПТ SQL»» /ConfigurationRepositoryF «»D:DataBaseХранилищеКонфигурацийХФБухОпт30″» /ConfigurationRepositoryN «»SlawaWork»»»;
    Сообщить(CommandLine);
    СписокСтрок = Строки.Разделить(CommandLine,» «,,»»»»);
    Для Строка Из СписокСтрок Цикл
    Сообщить(Строка);
    Конец;
    Reply
  9. slawa

    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+»;

    такая не работает

    Reply
  10. slawa

    вот

    Reply
  11. slawa

    еще

    Reply
  12. moolex

    (10) На скриншоте видно что перед и после слова DESIGNER не пробел…

    скопируйте в буфер данную строку и в Faster (два раза правый Ctrl) можно посмотреть что за символы там (закладка Строки).

    А когда вы копируете сюда (в сообщения то они превращаются в пробелы) и все работает…

    Reply
  13. slawa

    Там по два пробела до и после

    Reply
  14. moolex

    (13) сделайте пока замену двух пробеллов на один:

    ПараметрыКоманды = Строки.Разделить(Строки.Заменить(Стр,»   «,» «), » «, , «»»»);

    я посмотрю проблему разделения строки при двух пробелах…

    Reply
  15. slawa

    Это заработало

    А эта строка не работает:

    «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

    Не пойму в чем проблема

    Reply
  16. moolex

    (15)

    «File=»»D:ПроектыВрем\_ХФ Розн 3.0.57.10 CFG»»

    Здесь два раза в двойные кавычки обернута строка, зачем?

    Reply
  17. slawa

    Я не знаю

    Пользуюсь для запуска стартером https://infostart.ru/public/274485/

    Reply
  18. moolex

    (17)

    Исправлено, обновите программу, и проверьте…

    Reply
  19. slawa

    Работает

    Спасибо

    Reply
  20. vkozak

    Зачем так сложно?

    В модуле управляемого приложения, в процедуре «При начале работы системы».

    Читаем имя рабочей базы и меняем заголовок.

    ТекЗаголовок=ПолучитьЗаголовокКлиентскогоПриложения();

    СтрокаДобавления=ВРег(СтрокаСоединенияИнформационнойБазы());

    УстановитьЗаголовокКлиентскогоПриложения(СтрокаДобавления+ТекЗаголовок);

    Собственно и всех проблем!

    Reply
  21. moolex

    (20) А если конфигураций разных много и все на поставке…? А как вашим способом поменять в конфигураторе заголовок?

    Reply
  22. vkozak

    Зачем менять заголовок в конфигураторе не понятно.

    «На поставке», это что значит? Не снято с сопровождения?

    Так используйте расширение конфигурации.

    Reply
  23. moolex

    (22) Если открыто 10 конфигураторов, то это просто удобно…

    Reply
  24. slawa

    Не меняется заголовок самого окна в режиме Предприятие, хотя в скриншотах панели задач заголовок изменён.

    Наверное сама 1С-ка мешает

    Нельзя ли это исправить?

    Видеть что за база запущена не лишне было-бы.

    Reply
  25. v.l.

    Как быть линуксовым клиентам?

    решение не универсальное.

    Reply
  26. slawa

    да уж 🙂

    каждый делает под себя и делится тем, что сделал

    и за это ему огромное спасибо

    ну нету у автора линукса 🙂

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *