Вывод имени базы 1С в панель задач (скрипт)

18.09.23

Разработка - Инструментарий разработчика

Скрипт, который показывает имя базы 1С среди приложений в панели задач.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Скрипт (скомпилирован в .exe):
.exe 6,21Mb ver:1.2
106 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Сделал простой скриптик, который превращает вот это:



В это:



Он раз в некоторое время приводит окна 1С на панели задач в божеский вид. Удобно поставить в автозагрузку и наслаждаться тем, что 69 конфигураторов в панели задач отличаются хотя бы чем-нибудь.

Если понадобится кому-нибудь, кроме меня, буду рад.

 
 Код скрипта (Python)


v 1.1 от 26.08.2022
1. Добавлена работа с параметрами командной строки: /IBConnectionString, /S, /F

v 1.2 от 19.09.2022
1. Добавлен перехват исключений при получения класса открытого окна, чтобы не было ошибок при работе с окнами с непредсказуемым поведением.

Вступайте в нашу телеграмм-группу Инфостарт

Скрипт автоматизация

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    79782    407    171    

342

Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    278523    1575    423    

1206

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    3324    20    0    

15

Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    42577    118    54    

131

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    13678    51    62    

62

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    71060    141    41    

150

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    27863    101    46    

107

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5. Работает на возможностях платформы, внешние компоненты не используются.

6000 руб.

25.02.2026    6125    22    1    

22
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TMV 1 25.08.22 08:15 Сейчас в теме
УстановитьЗаголовок (SetCaption)
Синтаксис:
УстановитьЗаголовок(<ПредставлениеКлиентскогоПриложения>)
Параметры:
<ПредставлениеКлиентскогоПриложения> (обязательный)
Тип: Строка.
Представление клиентского приложения.
Описание:
Устанавливает заголовок приложения, которое используется при формировании заголовков окон.
Доступность:
Тонкий клиент, веб-клиент, толстый клиент.

Только для конфа не работает(

З.Ы.
Не вижу смысла в периодическом запуске, лучше при запуске 1ски запускать и этот скрипт один раз
2. a_a_burlakov 292 25.08.22 08:37 Сейчас в теме
(1) Первоначально я планировал скрипт, который запускается только раз. Но упёрся в то, что в конфигураторе при открытии нового объекта заголовок окна всегда обновляется заново. Отсюда и периодический запуск. Много ресурсов, впрочем, он не кушает, по крайней мере на моих машинах. )

А "УстановитьЗаголовок()" - да, для конфигуратора (и следовательно, для моих целей) не подходит. С открытыми базами в режиме Предприятия обычно всё более-менее понятно, но вот конфигураторы меня всегда путают, если их открыто больше двух.
POWone; TMV; +2 Ответить
3. mikl79 121 25.08.22 09:58 Сейчас в теме
4. kraynev-navi 702 25.08.22 10:23 Сейчас в теме
Кроме /IBNAME неплохо бы предусмотреть еще запуск с параметрами /F, /S, /WS, /IBconnection. Посмотрел свои открытые - треть баз именно так открыто.
7. a_a_burlakov 292 25.08.22 10:52 Сейчас в теме
(4) А вы имеете в виду /IBConnectionString? Или /IBConnection - это какой-то новый параметр для EDT?

С параметрами этими не работал, но посмотрю. Буду благодарен, если скинете, как у вас примерно выглядит строка соединения с параметрами /IBConnection и /WS.
11. kraynev-navi 702 25.08.22 12:46 Сейчас в теме
(7) дважды описался.
У меня таких примеров нет, у меня /S, /F
/IBConnectionString - https://forum.infostart.ru/forum9/topic266747/
/WS примера не нашел.
a_a_burlakov; +1 Ответить
5. Slypower 3 25.08.22 10:44 Сейчас в теме
Скрипт "бомба", но столкнулся с тем, что он на запущенную базу не отработал. Запущено 5 баз (конфигураторы и предприятия), и на последнее предприятие не отрабатывает. Перезапуск не помогает( И на последующие запуски тоже, будто лимит окон есть, а потом все)))
8. a_a_burlakov 292 25.08.22 10:54 Сейчас в теме
(5) Скиньте, пожалуйста, как у вас строка соединения примерно выглядит. Скрипт глядит пока только на параметр "/IBName".
9. Slypower 3 25.08.22 11:23 Сейчас в теме
(8) Srvr="REM-S-09";Ref="Test_Bobrik_SOOO";
Как узнать, как запущено, с параметром "/IBName" или каким еще?
10. a_a_burlakov 292 25.08.22 12:37 Сейчас в теме
(9) Попробуйте через диспетчер задач. У меня в Windows 10 можно так:
- открыть диспетчер задач;
- открыть вкладку "Подробности";
- ПКМ по списку колонок, нажать "Выбрать столбцы";
- поставить галку на столбце "Командная строка".

Ещё можно в командную строку ввести:
WMIC path win32_process get Caption,Processid,Commandline
Slypower; +1 Ответить
12. Slypower 3 25.08.22 14:01 Сейчас в теме
(10) Запускается с параметром "/IBName" , но имя не отображается все равно(((
Не понятно, пока не работает только для 1й базы)))
13. a_a_burlakov 292 25.08.22 16:06 Сейчас в теме
(12) А как она называется, не секрет? Допускаю, что скрипт уходит в исключение на каком-то этапе.
14. Slypower 3 26.08.22 08:28 Сейчас в теме
(13) увидел, что 2 базы не имеют названия в предприятии, а в конфигураторе имеют) Сперва заметно, как имя появляется на панели, но затем меняется на "Предприятие"
Примеры:
Test_Bobrik_IOOO - название такое на панели
Test_Bobrik_SOOO - название "Предприятие".

Запуск под одним параметром с одного сервера
16. a_a_burlakov 292 26.08.22 15:56 Сейчас в теме
(14) Сегодня со скриптом поэкспериментировал на разных параметрах, и извините: не смог выяснить, что у вас за проблема может быть. С пустым именем скрипт отработать должен нормально. Но вот в чем у вас проблема, не могу предположить.
6. kraynev-navi 702 25.08.22 10:48 Сейчас в теме
(5), это скорее всего из-за (4)
a_a_burlakov; +1 Ответить
15. a_a_burlakov 292 26.08.22 15:54 Сейчас в теме
Добавлена работа с параметрами командной строки: /IBConnectionString, /S, /F.
17. Slypower 3 26.08.22 16:08 Сейчас в теме
(15) Спасибо, как ни странно, но теперь у меня все работает))))
18. a_a_burlakov 292 26.08.22 16:09 Сейчас в теме
(17) Вот это поворот, я не ожидал, но я рад. :)
19. usan 30.08.22 11:33 Сейчас в теме
С тонким клиентом не работает?
20. a_a_burlakov 292 30.08.22 12:48 Сейчас в теме
(19) Вы имеете в виду, когда мы подключаемся к веб-серверу через строку вида: "https://test.com/mybase"? Это не поддерживается, но запилить это просто. Когда руки дойдут, сделаю.

А вообще, напишите, пожалуйста, на всякий случай, как у вас выглядит командная строка, когда вы к своей базе подключаетесь. У меня нет баз, чтобы протестировать WS-соединение. Как смотреть командную строку, я в сообщении (10) писал.
21. usan 30.08.22 14:58 Сейчас в теме
(20) Нет, просто Предприятие в режиме тонкого клиента, IBName есть /IBName"Документооборот", но exe отличается от других 1cv8c.exe, может из-за этого?
22. a_a_burlakov 292 30.08.22 15:41 Сейчас в теме
(21) А, понял.

Поэкспериментировал - и интересно. Одна и та же база, которую я открываю тонким клиентом через платформу 8.3.13, и через 8.3.19 - открывают свои процессы по-разному. У одного процесса есть командная строка, у другого - пустая. Подозреваю, что в одном из случаев платформу запускает процесс через некоторый промежуточный этап, во время которого теряются параметры командной строки, которые можно было взять через Windows'кий API. Переменных окружения у процесса с этими данными тоже нет.

Видимо, с тонким клиентом для этого скрипта будут ограничения, связанные с платформой...
23. usan 30.08.22 18:28 Сейчас в теме
(22)
Разобрался, все работает, в моем случае все проще было, из-за
if not window_text.startswith(ib_name)

имя ИБ в списке было "Документооборот", а имя конфигурации "Документооборот 8 КОРП", которое 1С сама добавляет в заголовок окна в начало :)
a_a_burlakov; +1 1 Ответить
24. a_a_burlakov 292 30.08.22 19:06 Сейчас в теме
(23) Спасибо, поправлю чуток это условие. :)
25. jmw 61 05.09.22 06:33 Сейчас в теме
26. a_a_burlakov 292 05.09.22 07:56 Сейчас в теме
(25) Странное дело: на моей машине прям актуальный Касперский, который при сканировании файла ничего не показывает.

Погуглил это дело, и, судя по всему, дело в том, что скомпилированный .exe'шник включает в себя не только скрипт, но ещё и доп.библиотеки Пайтона, а главное - его интерпретатор (поэтому файл большой такой). От этого часто случаются ложные срабатывания.
27. Slypower 3 16.09.22 15:39 Сейчас в теме
Пользуюсь, но странности есть)
Под x86 работает, под x64 запущенном окне, не отрабатывают обычные формы.
Плюс появилась ошибка.
Прикрепленные файлы:
28. a_a_burlakov 292 19.09.22 07:10 Сейчас в теме
(27) Добавил обработку этой ошибки. Там дело было в том, что скрипт проходит циклом по всем открытым окнам, и пытается к ним обратиться. Но есть какие-то окна на вашей машине, которые вызывают исключение в момент самого первого обращения. Я плотно с Windows'кими сущностями не работал, поэтому просто обернул в попытку. Думаю, проблема исчезнет, если скачаете новую версию скрипта.
Slypower; +1 Ответить
29. Vasvas05 27 26.01.24 14:51 Сейчас в теме
+ красиво сделано
прогнал через chatgpt
import win32gui
import win32process
from psutil import Process
import schedule
import time

IB_PARAM_PREFIXES = ('/IBName', '/S', '/F')

def add_ibname_to_1C_window(hwnd, more) -> None:
    '''
    Если окно является окном 1С,
    то добавляет слева к его названию имя открытой базы.
    :param hwnd: Открытое окно Windows
    '''
    class_name = win32gui.GetClassName(hwnd)
    if 'V8TopLevelFrame' not in class_name:
        return

    window_text = win32gui.GetWindowText(hwnd)
    process_id = win32process.GetWindowThreadProcessId(hwnd)[1]
    process = Process(process_id)
    commandline = process.cmdline()

    ib_name = get_ib_name_from_commandline(commandline)
    if ib_name:
        set_window_text_with_ib_name(hwnd, window_text, ib_name)

def get_ib_name_from_commandline(commandline: list) -> str | None:
    '''
    Ищет имя информационной базы из командной строки 1С.
    :param commandline: Список строк, из которых состоит строка параметров процесса.
    :return:
    '''
    for param_prefix in IB_PARAM_PREFIXES:
        ib_name = find_ib_name_by_prefix(commandline, param_prefix)
        if ib_name:
            return ib_name

def find_ib_name_by_prefix(commandline: list, param_prefix: str) -> str | None:
    iter = (x for x in commandline if x.startswith(param_prefix) and '\\' in x)
    par = next(iter, '')
    if par:
        ib_name = par.split('\\')[-1].strip(' "\'')
        return ib_name

def set_window_text_with_ib_name(hwnd, window_text, ib_name):
    if not window_text.startswith(ib_name):
        win32gui.SetWindowText(hwnd, f'{ib_name} - {window_text}')

def windows_passage() -> None:
    '''
    Проходит по открытым окнам с указанной функцией.
    '''
    win32gui.EnumWindows(add_ibname_to_1C_window, None)

if __name__ == '__main__':
    istest = False
    if istest:
        windows_passage()
        raise SystemExit('Тестовый прогон закончен.')

    schedule.every(2).seconds.do(windows_passage)

    while True:
        schedule.run_pending()
        time.sleep(2)

Показать
Для отправки сообщения требуется регистрация/авторизация