Командная строка - это просто, или три примера автоматизации рутины

31.01.23

База данных - Администрирование СУБД

В статье показаны несложные примеры автоматизации рутинных действий, встречающихся в работе любого программиста. Только платформа и командная строка, только хардкор.

Введение

 
 Небольшой дисклеймер

 Статья нацелена на то, чтобы показать примеры работы с 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) - Работа с хранилищем конфигураций из командной строки

4. Мои заметки в гитхабе про командную строку 

Хранилище Командная строка Автоматизация

См. также

INFOSTART TECH EVENT 2023, 11-13 октября, Санкт-Петербург

Инструментарий разработчика Мобильная разработка DevOps и автоматизация разработки Администрирование СУБД Мероприятия Россия Платные (руб)

XIII конференция по управлению и технологиям автоматизации учета на платформе 1С:Предприятие, которая пройдет в Санкт-Петербурге и соберет 1500 участников из разных регионов России и мира.

4000 руб.

09.12.2022    30068    12    0    

440

«Монитор» – простой анализ производительности

Администрирование СУБД Технологический журнал Бесплатно (free)

Для расследования проблем производительности недостаточно просто проанализировать технологический журнал. Нужен парсинг контекста событий, его сопоставление с информацией из Extended Events и логов, агрегация огромного количества информации.

21.09.2023    3349    Andreynikus    12    

72

Управляем базами на SQL, не выходя из 1С

Администрирование СУБД Бесплатно (free)

Статья о том, как организовать из 1С интерфейс для управления базой SQL – чтобы смотреть содержимое таблиц, добавлять и изменять в них данные, выполнять различные запросы. А также поделимся готовой 1С-подсистемой, где реализован пример такого управления.

31.08.2023    4507    Midzgun    11    

33

Как эффективно настроить autovacuum в Postgres для 1С

HighLoad оптимизация Администрирование СУБД Платформа 1С v8.3 Бесплатно (free)

Кто не любит убирать мусор? Думаю, практически все, а вот в Postgres это обязательный ритуал для эффективной работы. Как эффективно настроить уборку за 1С в Postgres, можно прочитать в этой статье и еще раз задуматься о бесплатности Postgres.

05.08.2023    3530    1CUnlimited    4    

43

Тонкости эксплуатации PostgreSQL

Администрирование СУБД Бесплатно (free)

Тема перехода с MS SQL на PostgreSQL становится все актуальнее. В докладе на конференции Infostart Event 2022 Saint Petersburg руководитель проектов Антон Дорошкевич рассказал, что ждёт после перехода, к чему нужно быть готовым, и какие варианты решения задач существуют на данный момент в мире PostgreSQL для его успешной эксплуатации.

19.06.2023    4431    a.doroshkevich    32    

52

Нестандартные приемы безопасной разработки и эксплуатации ПО на платформе 1С, категория "18+"

HighLoad оптимизация Рефакторинг и качество кода Администрирование СУБД Бесплатно (free)

Готовы погрузиться в недетское программирование и шКОДИТЬ по-взрослому? О том, как повысить безопасность разработки и эксплуатации ПО через изощренные способы подключения к платформе 1С, на конференции Infostart Event 2022 Saint Petersburg рассказал Юрий Лазаренко.

19.06.2023    1947    TitanLuchs    6    

20

tempdb, почему она всё время растет?

Администрирование СУБД Мониторинг Бесплатно (free)

С проблемами распухания tempdb при работе с базой данных 1С регулярно сталкиваются и админы, и разработчики. О том, как мониторить, диагностировать и решать такие проблемы, на конференции Infostart Event 2021 Moscow Premiere рассказал Александр Криулин.

14.06.2023    7394    AlexKriulin    8    

79

Первый день архитектора 1С на новой работе

Мониторинг Сервера Администрирование СУБД Бесплатно (free)

Как быстро познакомиться с системой на новой работе или если вас пригласили провести аудит контура на 1С? О том, какие инструменты использовать для быстрой проверки настроек сервера 1С, сервера MS SQL и общей оценки инфраструктуры на производительность, на конференции Infostart Event 2021 Post-Apocalypse рассказал архитектор 1С Юрий Былинкин.

01.06.2023    9180    ardn    18    

73
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. avbolshakov 31.01.23 14:51 Сейчас в теме
Не оч. понял про вход в систему - так вы как автоматизировали это? в командной строке алиасы какие-то добавили? или батник?
2. zeltyr 523 01.02.23 11:02 Сейчас в теме
(1) Я пользуюсь фаром - там есть пользовательское меню, где можно команды запуска прописывать.
Прикрепленные файлы:
3. teller 03.02.23 07:55 Сейчас в теме
(2) фар здесь лишний, достаточно ярлык к батнику с мешюшкой команд
5. zeltyr 523 03.02.23 11:31 Сейчас в теме
(3) В моём случае - фар инструмент работы с файлами, совместно с проводником. И наличие такого меню - приятная добавка, которой и пользуюсь. А в целом вы правы, достаточно и батника с меню.
4. nosferatu20913 48 03.02.23 09:19 Сейчас в теме
Лучше использовать для запуска не физический путь а, "/IBName"
6. Seraph6 27.03.23 13:43 Сейчас в теме
Использовал батники для автоматизации сохранения DTшников. Версия платформы была 8.3.16. Все прекрасно работало, из 1 батника запускался последовательно Конфигуратор в quiet режиме, сохранял базу в DTшник, лог тоже складывал в папочку. Если вдруг чего не так, просто записывал ошибку в лог и шел обрабатывать следующую базу.

Теперь пришлось обновить платформу до 8.3.22. Тот же самый батник запускает полноценный Конфигуратор с интерфейсом и всеми делами. Если дальше все нормально, то фиг с ним, база сохраняется. А вот если ошибка, то все встает, окно с ошибкой вылезает в Конфигураторе и пока его руками не закроешь, дальше батник не исполняется.

Вопрос - какой-то ключ или параметр есть для запуска в фоновом "тихом" режиме без интерфейса? Или как заставить новую платформу отрабатывать батник по старой схеме?
7. mybracho 03.04.23 10:47 Сейчас в теме
а почему пользователь обозначается с ключом /u, если было вроде /n ?
проверил, с u не работает, с n работает
Оставьте свое сообщение