Командный интерпретатор для 1С


Инструмент для выполнения команд CMD / PowerShell из 1С.

Назначение и возможности

В некоторых ситуациях может появиться необходимость выполнения некоторых команд от имени платформы 1С. Чаще всего это задачи по проверке доступа сервера 1С к определенному каталогу, проверить качество связи с каким-либо узлом, получить список запущенных процессов или служб и др. Все это можно сделать стандартными средствами администрирования, но иногда это не представляется возможным, или может занять значительно больше времени. Ведь не всегда администраторы считают своей проблемой то, что у 1Ски нет доступа и им нужно это доказать / показать / объяснить / обосновать. В этих случаях эта обработка может помочь, но с условием, что у Вас есть права в информационной базе для открытия внешней обработки или прикрепления ее в справочник дополнительных отчетов и обработок.

В конце демонстрации Выше была выполнена команда для завершения всех рабочих процессов (rphost). Никогда так не делайте на рабочем окружении! Это только для примера.

Инструмент ни в коем случае не является заменой стандартных средств администрирования, а лишь является небольшим дополнением к ним в особых случаях.

Проверено на 8.3.10, на всякий случай также на 8.3.6.

Основные возможности инструмента:

  • Интерактивное выполнение произвольных команд / скриптов из 1С (поддерживается CMD и PowerShell).
  • Привычное оформление консоли (почти).
  • Защита от большинства причин зависаний с помощью таймаута выполнения (при выполнении "бесконечных" команд или ожидании интерактивных действий).
  • Выбор контекста выполнения скрипта (на клиенте или на сервере).
  • Сделано с душой 🙂

Только для тех, кто понимает что и для чего он делает. Метод "тыка" тут не приветствуется.

Примеры использования

Вот несколько примеров, для чего мне пригодилась обработка в свое время.

 

 Проверка доступа к каталогу

 

 Проверка подключения к ресурсу по сети

 

 Проверка регистрации COM-компоненты на сервере

 

 Получить размер сеансовых данных

Все зависит от конкретной ситуации и потребностей.

Если Вы случайно запустите скрипт, который требует интерактивных действий для завершения, то он, конечно, не будет выполнен. Вместо этого по истечению таймаута ожидания команды будет выдана ошибка.

Используйте так как Вам нужно!

Пока что все

Повторюсь, инструмент не является заменой стандартных возможностей для администрирования и должен использоваться только в особых случаях.

В случае, если к разработке будет интерес, то в будущем можно добавить поддержку Linux.

Есть что сказать? Добро пожаловать в комментарии!

P.S. Если Вы дочитали до конца, то по возможности прошу написать интересен ли Вам PowerShell и стоит ли делать публикации по нему? Ваше мнение?

Авторские разработки

Другие ссылки

39 Comments

  1. wowik

    +1. Прорекламирую и свою обработку, если можно. https://infostart.ru/public/1114012/

    Reply
  2. YPermitin

    (1) хорошая разработка.

    PowerShell наше все!

    (поклонникам OneScript не бить :))

    Reply
  3. Vladimir Litvinenko

    Было бы классно увидеть в списке bash/sh. При установке git (mingw) даже на Windows-сервере bash уже будет доступен как другие инструменты командной стоки. А есть еще Linux Subsystem на Windows. Поддержка bash сделала бы инструмент более вездеходным, как впрочем и применяемые скрипты, а разработать и отладить работу с ним можно и без доступа к Linux.

    Нет ли планов расширить функционал?

    Reply
  4. YPermitin

    (3) у меня 80% времени — это работа с Windows, поэтому пока не стал на Linux портировать.

    Но в конце публикации сделал ремарку, что если интерес будет к Linux, то сделаю.

    Может на январских выходных «побалуюсь».

    Reply
  5. DoctorRoza
    и должен использоваться только в особых случаях.

    Что за особые случаи, когда штатного функционала не хватает?

    Reply
  6. Vladimir Litvinenko

    (4) Спасибо. Если появится возможность, то будет отлично. На Linux не обязательно портировать, достаточно git установить )) Ну или если версия Windows позволяет, то в ней соответствующие возможности включить.

    Reply
  7. YPermitin

    (6) если делать, то хардкор. Чтобы даже на сервере 1С под линуксом заработало )))

    Reply
  8. YPermitin

    (5) обычно это ситуации из разряда «мы все настроили, это Ваша 1С не работает» и приходится смотреть детальней.

    Чаще как-раз в связке со стандартными инструментами.

    Reply
  9. AlX0id

    (2)

    А поклонникам xterm-а бить можно, значит? )

    Reply
  10. YPermitin

    (9) пощадите 🙂

    Reply
  11. pm74

    отличная тема обязательно скачаю когда добавите bash

    Reply
  12. YPermitin

    (11) спасибо!

    Ждать только до следующего года придется…. (:

    Reply
  13. pm74

    (12) этоничего

    Reply
  14. blackhole321

    Какая технология в основе?

    Reply
  15. pm74

    (12) а так можно будет ?

    cat Справочники.Контрагенты | grep ООО Ромашка

    🙂

    Reply
  16. Xershi

    Командную строку, то пилить фигня. А повершел через активпош?

    Или что-то свое?

    Это как рассказать что умеете, но не сказать как.

    Reply
  17. YPermitin

    (15) фантастика 🙂

    Думаю, что сделаю, как на пенсию выйду :))))))

    Reply
  18. YPermitin

    (14) технология?

    Просто скрипты и ничего больше. Т.к. разработка ориентирована на Windows была, то используется старый добрый WshShell для управления процессами, запуском скрипта, управление выводом и другим.

    https://www.script-coding.com/WSH/WshShell.html

    Зачем усложнять такую простую задачу. Для Linux потребуется уже другой подход.

    Reply
  19. YPermitin

    (16) ответ выше.

    Reply
  20. Xershi

    (19) выходит одноразовое использование? Результат программно использовать можно?

    Reply
  21. YPermitin

    (20) Вы можете взять из обработки ту часть кода, что выполняет скрипт и делать с результатом все что посчитаете нужным.

    У меня уже не разовое использование, поэтому обработка и появилась 🙂

    Reply
  22. Xershi

    (21) тогда осталось только в публикации упомянуть выше названное ограничение.

    Единственное не знаю использует ли скрипт как компонента, либо он в ядро винды вшит?

    Reply
  23. YPermitin

    (22) это не ограничение, а скорее незаявленная функциональность. В публикации об этом ни слова.

    Reply
  24. blackhole321

    (18)

    Для Linux потребуется уже другой подход

    Т.е. у Вас COM-объекты. Потому и спросил о том, что в основе.

    Если не сложно — пожалуйста добавьте пару строк об этом, чтобы было сразу понятно.

    Reply
  25. YPermitin

    (24) без проблем)

    Reply
  26. blackhole321

    (3)На тему bash/sh можно посмотреть:

    https://infostart.ru/public/1078030/

    https://infostart.ru/public/1054911/

    или просто

    https://www.powershelladmin.com/wiki/SSH_from_PowerShell_using_the_SSH.NET_library

    из того же PowerShell

    Reply
  27. Evil Beaver

    (2) Я павершелл не смог осилить. Ну негуманоидный он, блин (((

    Reply
  28. -vito-

    Юрий, отличный инструмент!

    Пользуюсь подобным самодельным, очень выручает. Самый частый вариант использования — когда нужно что-то проверить или сделать на сервере, к которому нет доступа. Администраторы Заказчиков зачастую очень ревностно относятся к предоставлению доступа к серверам. При этом, добиться от них получения какой-то информации или, например, изменения настроек ТЖ, стоит каких-то неимоверных усилий и дней переписки. В таких случаях данный инструмент становится просто незаменимым. Разумеется, дальше всё зависит от прав пользователя, под которым работают процессы. Практически всегда это «стандартный» USR1CV8, создаваемый при установке Сервера.

    Насчет PowerShell — несомненно интересно! На мой взгляд, очень недооцененный аспект работы. Позволяет многие действия заскриптовать. А также, сделать что-то, что по-другому или просто невозможно, или затруднительно, например Загрузка-выгрузка файлов по RDP с докачкой

    Reply
  29. YPermitin

    (28) Благодарю на добром слове!

    Подобные кейсы у меня также встречались.

    Думал написать статью про использование PS для 1Сника. Может и сделать…

    Reply
  30. YPermitin

    (27) дело привычки, но без практики с ним можно и правда запутаться 🙂

    Reply
  31. blackhole321

    (28)

    Самый частый вариант использования — когда нужно что-то проверить или сделать на сервере, к которому нет доступа.

    Т.е. Вы не ставя в известность админов заказчика (или вопреки их мнению) что-то делаете на серверах заказчиков :)?

    И если что-то идет не так — оно само :)?

    Reply
  32. YPermitin

    (31) это жесть, если менять конфигурацию сервера без согласования.

    А проверить доступ к каталогу это вроде не страшно 🙂

    Reply
  33. blackhole321

    (32)

    А проверить доступ к каталогу это вроде не страшно 🙂

    Каталоги и разрешения к ним не возникают просто так 🙂 Как правило — они необходимы для решения какой-либо задачи и их наличие и доступ к ним определенных аккаунтов известны заранее и должны-бы быть документированы.

    В любом случае можно написать электронное письмо людям, которые отвечают за поддержку сервера. Я полагаю, что в 99% эти люди не звери и ответят на ваш запрос (если это не беспорядочные вопросы каждые 5 минут).

    И если Вы не все в одном лице — надо работать в команде.

    Reply
  34. YPermitin

    (33) вы не совсем поняли.

    Админ пишет что доступ предоставлен, но все равно не работает. Он говорит что проблема в 1С. Вы проверяете доступ. Пишите админу.

    Профит)

    Reply
  35. blackhole321

    (34)

    Админ пишет что доступ предоставлен, но все равно не работает.

    В нормальной ситуации — вероятность того, что доступ не предоставлен стремится к нулю. Конечно все мы люди и можем ошибиться. Можно попросить перепроверить и прислать скриншот. Полагаю, что это не займет много времени и решит проблему.

    Опять-таки нужно уметь/желать работать в команде и выстраивать отношения с коллегами. В конце концов, Вам могут при необходимости делегировать соответствующие привилегии.

    Reply
  36. -vito-

    (31)

    Т.е. Вы не ставя в известность админов заказчика (или вопреки их мнению) что-то делаете на серверах заказчиков :)?

    И если что-то идет не так — оно само :)?

    Юрий, мне не хотелось бы углубляться в диалог в предлагаемом Вами направлении, но всё же отвечу:

    Любой инструмент можно использовать во благо или во зло. Скажем, топором можно что-то построить, а можно убить. К счастью, я знаю что, как и зачем я использую.

    Если Администраторы адекватные, необходимости в таком подходе не возникает.

    Но если для того, чтобы включить/изменить ТЖ на таком сервере, да еще и в нерабочее (для админов) время, нужно несколько дней переписки, у меня не остается другого выхода.

    Если для того, чтобы проверить, есть ли со стороны сервера доступ к необходимому ресурсу (внешнему или внутри сети), например из-за того, что встали регламентные операции, опять требуется затяжная переписка, у меня нет другого выхода, кроме как использовать такой подход.

    Примеры можно продолжать и продолжать..

    Приведенные примеры — из разряда, когда ответственность за работу Системы несем мы (Подрядчик), но при этом все технические средства сосредоточены в руках Заказчика. На высшем уровне принято решение что все необходимые действия будут выполнять сотрудники Заказчика, потому что «безопасность». При этом те самые сотрудники Заказчика либо не обладают достаточными компетенциями, либо слишком заняты, либо просто игнорят просьбы.

    Опять же, если «Администратор» (именно в кавычках) запустил службу сервера 1С с административными правами, из-за того, что что-то у него не получалось настроить, и я могу пользователем USR1CV8 сделать что-то «нехорошее», то вообще-то надо такого гнать.

    На правильно настроенном сервере, пользователь процессов 1С не должен иметь возможности сделать «нехорошее». Но мне такие не попадались пока.

    По поводу правильно настроенного сервера, рекомендую посмотреть доклад Антона Дорошкевича «Взломать за 60 секунд».

    >И если что-то идет не так — оно само :)?

    Обычно меня подключают, когда что-то уже пошло не так и нужно выяснить что, почему и когда.

    PS. На «нормальных» проектах, где под нашу Систему строится полный контур с продуктивной, тестовой, разработочной зонами (при этом продуктивный и тестовый — это кластеры из нескольких серверов, плюс СУБД), эти сервера целиком находятся в моем ведении.

    Подобного плана проблемы возникают на проектах, где в силу недостаточности ресурсов, начинаются совмещения вида «вот у нас уже есть сервер 1С, давайте мы просто туда добавим нужные базы и обслуживать будем сами».

    Reply
  37. YPermitin

    (35) увы, жизнь не такая простая

    Reply
  38. blackhole321

    (36)

    На высшем уровне принято решение что все необходимые действия будут выполнять сотрудники Заказчика, потому что «безопасность».

    И этим все сказано. Это одно из условий вашего контракта.

    Reply
  39. -vito-

    (38)

    Юрий, нет смысла спорить. Выше автор уже отвечал что «жизнь не такая простая».

    Никто в здравом уме не меняет критичных параметров. Речь о проверках доступов, проверки состояния процессов, изменении настроек ТЖ и других «безобидных» вещах. Кавычки из-за того, что неграмотными настройками ТЖ можно положить сервер (но админам, чаще всего, об этом ничего не известно).

    Возможно, именно в Вашей Компании все организационные процессы работают как нужно. Но это не означает что так у всех.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *