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

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. Мои заметки в гитхабе про командную строку 

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

См. также

Нестандартное решение пересчета итогов

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

Статья для тех, кто столкнулся с необходимостью пересчета итогов для "больших таблиц" и нет возможности поставить на паузу ИБ для проведения работ.

25.04.2024    463    virustam    27    

5

Идентификация пользователя не выполнена

Администрирование СУБД Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Иногда в конфигурации 1С:Бухгалтерский учет v3.0 возникает ситуация, когда программа всем пользователям выдает предупреждение, что авторизация не выполнена и работа программы будет завершена. Данная инструкция позволяет решить возникшую проблему.

24.04.2024    241    Yan_Malyakov    0    

2

Устранение ошибки выполнения скрипта "Создать сервис RAGENT" в ЦКК

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

В статье показано, как устранить ошибку выполнения скрипта "Создать сервис RAGENT" в системах 1С:Центр контроля качества или в 1С:Центр автоматизации. Будет полезна администраторам ЦКК и ЦА, которые только начали знакомство с этими системами.

18.04.2024    346    artemusII    0    

7

Долгая реструктуризация, замеры времени и очистка Ветис. Розница 2.3

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

При подготовке к обновлению возникли проблемы на стадии тестирования и исправления базы данных, также при создании файлов РИБ для магазинов.

16.04.2024    357    xKaskadx    4    

1

Установка и получение лицензии на базовую конфигурацию 1С на Mac OS

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

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

11.04.2024    390    pahmutov    0    

2

Установка тонкого клиента 1С на Rasbian (Raspberry Pi 5)

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

После приобретения Raspberry Pi 5 решил проверить, есть ли возможность использования устройства для организации тонкого клиента. В результате столкнулся с особенностью установки 1С: Предприятие 8.3.23 на Raspbian, решением которой я хочу поделиться с сообществом.

07.04.2024    728    Bessome    4    

5

Порционный шринк базы

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

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

28.03.2024    1327    Garilia    3    

15

Создаем сценарии обслуживания SQL в Центре Контроля Качества 1С (Центр Администрирования)

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

Данная статья научит вас, как создавать скрипты обслуживания MS SQL для Центра Контроля Качества (ЦКК) или Центра Администрирования (ЦА).

20.03.2024    796    Silenser    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. avbolshakov 31.01.23 14:51 Сейчас в теме
Не оч. понял про вход в систему - так вы как автоматизировали это? в командной строке алиасы какие-то добавили? или батник?
2. zeltyr 570 01.02.23 11:02 Сейчас в теме
(1) Я пользуюсь фаром - там есть пользовательское меню, где можно команды запуска прописывать.
Прикрепленные файлы:
3. teller 03.02.23 07:55 Сейчас в теме
(2) фар здесь лишний, достаточно ярлык к батнику с мешюшкой команд
5. zeltyr 570 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 работает
Оставьте свое сообщение