Быстрый запуск информационной базы 1С:Предприятия 8.3 в Python c использованием bat файла
Однажды, при реализации проекта, в котором после некоторых манипуляций со скриптами в Python, возникла задача выборочного и быстрого запуска информационных баз 1С:Предприятия 8.3 (без выбора в диалоговом стартовом окне). Начался интеллектуальный поиск. Результаты поиска привожу в упорядоченном виде.
Первый скромный вопрос: «Как запустить внешнее исполняемое приложение без параметров в Python?» На него есть множество вариантов ответов. Ниже приведён пример скрипта для запуска IDE Lazarus. Полное имя стартового файла: С:/lazarus/lazarus.exe.
# -*- coding: utf-8 -*-
import os
os.system(r'c:/"lazarus"/lazarus.exe')
Казалось бы, что «дело в шляпе». Пишем требуемый путь к 1С и всё... Однако, нет рек без подводных камней. Вот тут нас ожидает первый из них. Вышеприведенный скрипт хорошо работает при отсутствии в пути пробелов. Но платформа 1С:Предприятие 8.3. «любит» по умолчанию устанавливаться в папку "Program Files". Если в пути к файлу есть пробелы, то запуск приложения можно выполнить так как показано ниже. Пример запуска программы 1С:Предприятие 8.3, расположенной в c:/Program Files/1cv8/common/1cestart.exe.
# -*- coding: utf-8 -*-
import os
os.startfile(r'c:/Program Files/1cv8/common/1cestart.exe')
Кстати говоря, код будет добротно работать и при такой записи последней строки:
os.startfile(r'c:\Program Files\1cv8\common\1cestart.exe')
Для того, чтобы не просто запустить исполняемую программу, а с параметрами, нужно немного потанцевать с бубном. Вариантов вновь много, но мы попробуем пойти путём запуска программы с использованием bat файла. Итак, напомню, нам нужно запустить интересующую нас информационную базу 1С без диалога выбора информационных баз. Так сказать быстрый запуск без ввода логина и пароля.
В результате проб и ошибок мы выработали следующий порядок действий (приводим его предельно детально):
- Предположим, что стартовая программа 1С:Предприятие 8.3. установлена в c:/Program Files/1cv8/common/1cestart.exe. Расположение стартового файла 1С можно узнать, кликнув по её ярлыку и во вкладке «Ярлык» можно увидеть имя в поле «Объект».
- Полное имя информационной базы, которую мы собираемся запустить, минуя появления диалогового окна 1С: C:\Users\User\Documents\InfoBase5. Узнать место расположения информационной базы можно предварительно из диалогового окна, возникающего при обычном запуске 1С.
- Создадим новый ярлык, который нам понадобится для быстрого запуска нашей информационной базы. Для этого можно сделать копию уже имеющегося ярлыка 1С. Затем переименовать его как вам нужно и в свойствах в поле «Объект» немного продолжить строчку, дополнив ее параметром «ENTERPRISE /F» и полным именем требуемой вам информационной базы.
У нас получится следующая строка (кавычки обязательны!).
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"C:\Users\User\Documents\InfoBase5"
Можно протестировать работу нового ярлыка. Если всё работает как нужно, то можно переходить к следующему шагу.
- Наступил момент создания bat файла. Открываем блокнот и копируем в него строчку, которую мы только что записывали в поле «Объект» ярлыка.
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"C:\Users\User\Documents\InfoBase5"
- Сохраним файл и дадим ему красивое имя start_conf.bat (можно назвать, исходя из собственного представления о прекрасном).
- Теперь осталось научиться запускать файл типа bat с помощью Python кода. Предположим, что полное имя вашего bat файла c:\PythonProgram\start_conf.bat, тогда код в Python будет предельно лаконичен!
# -*- coding: utf-8 -*-
import os
os.startfile(r'c:\PythonProgram\start_conf.bat')
Таким образом, в результате вышеприведенных манипуляций мы получаем ярлык для быстрого доступа к требуемой информационной базе и предельно короткий код Python позволяющий оперативно стартовать любую информационную базу.