Введение
Статья нацелена на то, чтобы показать примеры работы с 1С из командной строки. Если вы ничего не знаете про параметры командной строки, то предварительно можно ознакомиться с документацией на ИТС: Приложение 7. Параметры командной строки запуска «1С:Предприятия».
Работа с 1С из командной строки - хороший способ автоматизировать рутину и экономить своё время. Но мало знать, что инструмент существует, важно понимать, кто и как его использовать. Именно поэтому я решил написать эту статьи и показать то, с чего начинал работать я.
Пример 1 - автовход в предприятие, конфигуратор и хранилище
Самое первое, что я решил автоматизировать, - обход окна авторизации в конфигуратор и в предприятие, ибо считаю ввод логина и пароля в тестовые базы и базы разработки - очень раздражающей гадостью. Ниже приведены три примера, которые можно брать и использовать, подменяя только платформу, пути и логины/пароли.
rem вход в файловую базу в конфигуратор
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\testHran" /u"Администратор" /p"123"
rem вход в файловую базу в предприятие
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" ENTERPRISE /f"C:\Work\1c_bases\testHran" /u"Администратор" /p"123"
rem вход в серверную базу в конфигуратор
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /s"server\testbase" /u"Администратор" /p"123"
rem вход в базу и авторизация в хранилище
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\testHran" /u"Администратор" /p"123" /ConfigurationRepositoryF"tcp://test:1849/ERP/ERPdev" /ConfigurationRepositoryN "testUser" /ConfigurationRepositoryP "testPasswd"
Пример 2 - Обновление из хранилища базы разработки с созданием резервной копии
Ежедневное получение всех наработок из хранилища разработки считаю правилом хорошего тона. Обновление позволяет всегда поддерживать базу разработки в актуальном состоянии, не допустить от ошибок использования устаревших объектов и методов и т.д. Но это рутина. А значит, есть простор для автоматизации.
rem Обновить конфигурацию-источник из хранилища до последней версии и автоматически обновим базу данных
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\testHran" /u"Администратор" /p"123" /ConfigurationRepositoryF"tcp://test:1849/ERP/ERPdev" /ConfigurationRepositoryN "testUser" /ConfigurationRepositoryP "testPasswd" /ConfigurationRepositoryUpdateCfg -force /UpdateDBCfg
А перед обновлением неплохо бы сохранить себе свою конфигурацию.
rem Создаём копию текущей конфигурации
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\testHran" /u"Администратор" /p"123" /ConfigurationRepositoryF"tcp://test:1849/ERP/ERPdev" /ConfigurationRepositoryN "testUser" /ConfigurationRepositoryP "testPasswd" /DumpCfg"C:\tmp\tempCFG.cf"
Пример 3 - разворачивание новой конфигурации для разработки, создание хранилища и пары ролей к нему
Бывает, что для разработки под задачу необходимо создавать отдельное хранилище. Или это нужно делать для каждого нового разработчика. А значит, есть простор для автоматизации.
rem Создание информационной базы
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" CREATEINFOBASE "File=""C:\Work\1c_bases\test"""
rem Обновить конфигурацию-источник из хранилища до последней версии
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\testHran" /u"Администратор" /p"123" /ConfigurationRepositoryF"tcp://test:1849/ERP/ERPdev" /ConfigurationRepositoryN "testUser" /ConfigurationRepositoryP "testPasswd" /ConfigurationRepositoryUpdateCfg -force /UpdateDBCfg
rem Выгрузить конфигурацию-источник в файл
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\testHran" /u"Администратор" /p"123" /ConfigurationRepositoryF"tcp://test:1849/ERP/ERPdev" /ConfigurationRepositoryN "testUser" /ConfigurationRepositoryP "testPasswd" /DumpCfg"C:\tmp\tempCFG.cf"
rem Загрузить конфигурацию источника в конфигурацию-приёмник
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /LoadCfg "C:\tmp\tempCFG.cf"
rem обновить базу данных после загрузки
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /UpdateDBCfg
rem отвязать загруженную конфигурацию от хранилища
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /ConfigurationRepositoryUnbindCfg -force
rem Создание хранилища конфигурации
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /ConfigurationRepositoryCreate /ConfigurationRepositoryF"tcp://test/ERP/test/test" /ConfigurationRepositoryN "Администратор" /ConfigurationRepositoryP "123"
rem Создание пользователя
"C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe" DESIGNER /f"C:\Work\1c_bases\test" /ConfigurationRepositoryF"tcp://test/ERP/test/test" /ConfigurationRepositoryN "Администратор" /ConfigurationRepositoryP "123" /ConfigurationRepositoryAddUser -User tests -Pwd test -Rights ReadOnly
set PATH_Platform="C:\Program Files\1cv8\8.3.18.1334\bin\1cv8.exe"
set PATH_To_NewFileBase="C:\Work\1c_bases\test"
set PATH_To_FileBaseWorkHran="tcp://test:1849/ERP/ERPdev"
set PATH_To_TMPCF="C:\tmp\tempCFG.cf"
set DefaultUser="Администратор"
set DefaultPassword=""
set PATH_To_WorkHran="tcp://test:1842/ERP/dev"
set WorkHranUser="Администратор"
set WorkHranPassword=""
rem set PATH_To_NewHran="tcp://test:1849/ERP/testdev"
set PATH_To_NewHran="C:\Work\1c_hran\test_new"
set NewHranUser="Администратор"
set NewHranPassword="123"
rem Создание информационной базы
%PATH_Platform% CREATEINFOBASE "File=%PATH_To_NewFileBase%"
rem Обновить конфигурацию-источник из хранилища до последней версии
%PATH_Platform% DESIGNER /f%PATH_To_FileBaseWorkHran% /n%DefaultUser% /p%DefaultPassword% /ConfigurationRepositoryF%PATH_To_WorkHran% /ConfigurationRepositoryN%WorkHranUser% /ConfigurationRepositoryP%WorkHranPassword% /ConfigurationRepositoryUpdateCfg -force /UpdateDBCfg /DisableStartupDialogs
rem Выгрузить конфигурацию-источник в файл
%PATH_Platform% DESIGNER /f%PATH_To_FileBaseWorkHran% /n%DefaultUser% /p%DefaultPassword% /ConfigurationRepositoryF%PATH_To_WorkHran% /ConfigurationRepositoryN%WorkHranUser% /ConfigurationRepositoryP%WorkHranPassword% /DumpCfg%PATH_To_TMPCF% /DisableStartupDialogs
rem Загрузить конфигурацию источника в конфигурацию-приёмник
%PATH_Platform% DESIGNER /f%PATH_To_NewFileBase% /LoadCfg%PATH_To_TMPCF% /DisableStartupDialogs
rem обновить базу данных после загрузки
%PATH_Platform% DESIGNER /f%PATH_To_NewFileBase% /UpdateDBCfg /DisableStartupDialogs
rem отвязать загруженную конфигурацию от хранилища
%PATH_Platform% DESIGNER /f%PATH_To_NewFileBase% /ConfigurationRepositoryUnbindCfg -force /DisableStartupDialogs
rem Создание хранилища конфигурации
%PATH_Platform% DESIGNER /f%PATH_To_NewFileBase% /ConfigurationRepositoryF%PATH_To_NewHran% /ConfigurationRepositoryN%NewHranUser% /ConfigurationRepositoryP%NewHranPassword% /ConfigurationRepositoryCreate /DisableStartupDialogs
rem Создание пользователя "ТолькоПросмотр"
%PATH_Platform% DESIGNER /f%PATH_To_NewFileBase% /ConfigurationRepositoryF%PATH_To_NewHran% /ConfigurationRepositoryN%NewHranUser% /ConfigurationRepositoryP%NewHranPassword% /ConfigurationRepositoryAddUser -User"ТолькоПросмотр" -Pwd"" -Rights ReadOnly /DisableStartupDialogs
А что дальше?
У 1С есть механизмы, позволяющие оптимизировать выполнение сценариев: пакетный режим конфигуратора или автономный сервер.
У фирмы 1с есть "1с:Исполнитель" - продукт, который так же можно использовать для автоматизации связанных с 1С действий.
Если oScript, а к нему vrunner и множество других полезных инструментов.
А зачем?
При наличии замечательных инструментов, описанных выше, - зачем знать, как пользоваться командной строкой?
Как говорит Роберт Мартин - "зависимость от деталей реализации - это плохо". Под данную задачу трактовать это можно так: необходимо уметь делать автоматизацию с использованием любых доступных инструментов, а не только с одним конкретным.
А ещё на практике мне часто попадались случаи, когда клиенту нельзя поставить ничего лишнего. И тогда остаётся только использовать возможности командной строки.
Заключение
Автоматизация своей работы позволяют вам экономить самое важное - экономить своё и не только своё время. А что может быть лучше?
С уважением, Вдовенко Сергей.
Послесловие и использованные источники
Использовать командную строку я в основном учился по документации к платформе. Однако и на Инфостарте есть замечательные стать, знакомящие нас с этим инструментом. Все ссылки будут ниже.
1. Приложение 7. Параметры командной строки запуска «1С:Предприятия».
2. Виктория Коршанова (Chif13) - Параметры командной строки 1С:Предприятие
3. Франко Деллиани (Franco) - Работа с хранилищем конфигураций из командной строки