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

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С:Исполнитель на РедОС

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

Краткое описание шагов по установке, настройке и применению инструмента 1С:Исполнитель на операционной системе РедОС, а также по борьбе с некоторыми возникающими ошибками.

вчера в 11:00    209    artemusII    0    

1

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

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

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

25.04.2024    1346    virustam    28    

7

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

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

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

24.04.2024    468    Yan_Malyakov    0    

2

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

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

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

18.04.2024    380    artemusII    0    

7

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

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

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

16.04.2024    408    xKaskadx    4    

1

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

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

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

11.04.2024    427    pahmutov    0    

2

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

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

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

07.04.2024    806    Bessome    4    

5

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

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

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

28.03.2024    1388    Garilia    3    

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