License tools 1с как пользоваться

Обновлено: 07.07.2024

Иногда при работе с лицензиями нужно проверить их актуальность. И хотя активация лицензий сама по себе не слетает (во всяком случае, не замечал), иногда это нужно проверить. Или просто получить информацию, введенную при активации лицензии для последующей переактивации. Ring нам может помочь и тут.

Шаг 1: Вывести содержимое хранилища лицензий

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

111111111111111, 222222222222222, 333333333333333 - это пин-коды, использованные при активации лицензии;

9999999999, 8888888888, 7777777777 - а это регистрационные номера лицензий;

(Имя файла: "Первая лицензия.lic") - собственно, название файла лицензии, к которому относится соответствующий (слева) пин-код и рег.номер.

Шаг 2: Проверить актуальность лицензии

set JAVA_HOME="C:\Program Files (x86)\Java\jre1.8.0_281" set TOOLS="C:\Program Files (x86)\1C\1CE\components\1c-enterprise-ring-0.19.5+12-x86" set DATE = date /t set OPERATION=license validate set FILELOG=license_validate.txt chcp 1251 echo "%DATE% 2. License validate info" >> %TOOLS%\lic.log echo "%DATE% ====================================================================== ====================================================================== ====================================================================== КОНЕЦ ====================================================================== 18.08.2021 =======================================================================" Проверка лицензии "111111111111111-9999999999" (файл: "111111111111111-9999999999") выполнена успешно. "=======================================================================" Проверка лицензии "222222222222222-8888888888" (файл: "222222222222222-8888888888") выполнена успешно. "=======================================================================" Проверка лицензии "333333333333333-7777777777" (файл: "333333333333333-7777777777") выполнена успешно. "КОНЕЦ ====================================================================== сломалась". Однако! Есть интересный нюанс. Если Вы привязываете лицензию к сетевому хаспу, то лицензия будет активна на любом компьютере, которому виден этот хасп (если сделаны соответствующие настройки nethasp.ini), но при этом успешную проверку будете проходить только на том ПК, где активировали эти лицензии. На всех других компьютерах (читайте серверах) проверка будет завершаться ошибкой и будет выведен список оборудования и системы, которые были "удалены" после активации. Но лицензия будет активна!

И на десерт, представлю скрипт, который выводит всю ту информацию о лицензии, которую указывали при ее активации. Бывает нужно, если по каким-то причинам потеряли эти данные, а они необходимы для переактивации лицензий.

Важное замечание: утилита пока что не работает для базовых версий программных продуктов 1с.

Отдельная установка библиотеки для более ранних релизов

Дистрибутивы утилиты ring находятся в двух файлах:

  1. 1c-enterprise-license-tools-0.1.0-20.x86.msi
  2. 1c-enterprise-ring-0.6.0-15.x86.msi

Они помещаются в каталог ExtDst при установке платформы. Решение - установить отдельно новую платформу и взять из нее эти библиотеки.

Если устанавливать библиотеки отдельно от платформы, они ставятся в каталог " C :\ Program Files ( x 86)\1 C \1 CE \ ring ".

Настройка JAVA для работы библиотеки

Проблема с путем JAVA_HOME


Это значит, что нужно настроить путь к JAVA _ HOME , решение легко гуглится, например Установка библиотеки криптографии

Для работы утилиты ring необходимо установить библиотеку криптографии.

Распаковать два jar -файла из архива local _ policy . jar и US _ export _ policy . jar в каталог вида C :\ Program Files ( x 86)\ Java \ jre 1.8.0_91\ lib \ security . При этом заменяются существующие файлы с более ограниченной криптографией.

Если не установить библиотеку, то утилита выдает ошибку вида:

Ошибка получения списка лицензий.

По причине: Ошибка при работе с хранилищем лицензий.

По причине: Данный ключ не поддерживается данным крипто-провайдером. Необходимо

установить крипто-провайдер, поддерживающий алгоритм AES 256 CBC с режимом шифр

ования PKCS5Padding (Например, Unlimited Strength Java(TM) Cryptography Extensio

n (JCE) Policy Files for the Java(TM) Platform, Standard Edition (Java SE) Runti

me Environment 7). На данный момент используется крипто-провайдер: SunJCE 1.8

По причине: Некорректный ключ.

По причине: Illegal key size

Просмотр лицензий

Команда ring доступна из любого каталога, т.к. при установке прописывается в path .

Для просмотра списка лицензий испольуется команда ring license list [-- path <хранилище>] .

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


Для информации об отдельной лицензии используется команда ring license info [-- name <имя>] [-- path <хранилище>] .

Выдает информацию о лицензии, нужно указывать полное имя лицензии:


Информация может содержать и описание продукта:


Скрипт для получения списка всех лицензий

Готовый скрипт lic _ list . cmd прикладываю к статье.

Его код выглядит так:

call ring license list > C:\1.txt

for /F "" %%i in (c:\1.txt) do call ring license info --name %%i

@echo > C:\lic_list.txt 1s Lisense List

cmd /c for /F "" %%i in (c:\1.txt) do call ring >> C:\lic_list.txt license info --name %%i

Сначала получается список лицензий в файл C :\1. txt

Затем файл построчно обрабатывается, и подробная информация со списком лицензий выводится на экран и в файл c:\lic_list.txt:


Обратите внимание, что ring – это тоже пакетный файл cmd , поэтому вызывается через CMD .

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

ring license list - список лицензий пустой.
Может причина в том, что у меня УСБ ключ? (3) да, USB ключи и базовые версии не определяются рингом.

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

И вот плавно вытекающий вопрос. В описании ring написано, что проверяя лицензию командой ring license validate --name <имя лицензии> должен быть код возврата 0 если лицензия активна, и код ошибки если с лицензией какие-то проблемы, вот только сколько не мучаю эту утилиту у меня для любой лицензии 0. При этом для нерабочей лицензии вполне корректно выводятся различии в железе с тем компом на котором ставилась это лицензия в прошлый раз.

Для действующей лицензии получаю всё верно:

C:\Program Files\1C\1CE\ring>ring license validate --name <имя рабочей лицензии> && echo ErrorLevel = %errorlevel%
License check passed for the following license: "<имя рабочей лицензии>".
ErrorLevel = 0

А вот для нерабочей лицензии исходя из инструкции errorlevel должен быть – 1, но всё равно получается 0.

C:\Program Files\1C\1CE\ring>ring license validate --name <имя нерабочей лицензии> && echo ErrorLevel = %errorlevel%
Hardware removed:
- Phis Mem_0 : 27916816384
- OS Inst Date_0 : 1376822360
- OS_0 : Microsoft Windows Server 2012 Standard
- OS Ser_0 : 00184-20405-06597-AA231
- Sys Name_0 : S-IC1C
- OS Ver_0 : 6.2
- CPU_0 : CPU0, Intel64 Family 6 Model 45 Stepping 7, 64, 64, 1F8BFBFF000206D7, 11527, None
- CPU_1 : CPU1, Intel64 Family 6 Model 45 Stepping 7, 64, 64, 1F8BFBFF000206D7, 11527, None
- DISK_0 : 512, 63, 13054, 255, 3328770, 209712510, 107372805120

Идея этого поста - шпаргалка на будущее, но я буду рад, если кому-то пригодится приведенная информация.

Если Вы читаете это, значит примерно представляете, что такое Ring. В этом посте речь только об активации лицензий. Позднее здесь я представлю ссылки на следующие шпаргалки по работе с ring-ом.

Когда эта утилита может пригодиться? Мне в основном пригождалась для активации лицензий на Linux-ах, где нет графической оболочки и конфигуратор не запустить, однако, примеры скриптов будут использовать абсолютные пути в Windows, чтобы информация воспринималась лучше.

Стоит отметить, что в этом примере лицензии привязываются к параметрам машины!

Шаг 1: Формирование запроса на лицензию. Команда prepare-request

first-name ‑ имя владельца лицензии. При указания параметра company, данный параметр является необязательным.

middle-name ‑ отчество владельца лицензии. При указания параметра company, данный параметр является необязательным.

last-name ‑ фамилия владельца лицензии. При указания параметра company, данный параметр является необязательным.

email ‑ электронная почта владельца лицензии.

company ‑ организация владельца лицензии. При указании параметров first-name, middle-name, last-name, данный параметр является необязательным. Требуется не менее 5 символов, при этом не должно быть более 3 одинаковых символов подряд.

country ‑ страна регистрации. Не может быть пустым.

zip-code ‑ индекс. Не может быть пустым.

town ‑ город. Не может быть пустым.

street ‑ улица. Не может быть пустым.

house ‑ номер дома. При указании параметров building или apartment, данный параметр является необязательным. Не может быть пустым.

building ‑ строение. При указании параметров house или apartment, данный параметр является необязательным. Не может быть пустым.

apartment ‑ квартира. При указании параметров house или building, данный параметр является необязательным. Не может быть пустым.

serial ‑ серийный номер программного продукта.

pin ‑ пинкод, используемый при активации лицензии.

previous-pin ‑ при повторной активации лицензии в данном параметре указывается пинкод, который использовался при первичной активации лицензии. Не должен совпадать со значением параметра pin.

request ‑ указывает полный путь к файлу, в который будет помещена информация для передачи в центр лицензирования. Если не указан, то текст запроса в центр лицензирования будет выведен в стандартный поток вывода.

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

Шаг 2: Получение ответа от центра лицензирования. Команда acquire

request ‑ полное имя к файлу с запросом к центру лицензирования. Если параметр не указан, то содержимое файла запроса ожидается со стандартного потока ввода.

response ‑ полное имя файла, в которое будет помещен ответ центра лицензирования. Если параметр не указан, то содержимое файла ответа будет выведено в стандартный поток вывода.

Шаг 3: Сборка файла лицензии. Команда generate

license ‑ полное имя к файлу с получившейся лицензией. Если параметр не указан, то содержимое файла активированной лицензии выводится в стандартный поток вывода.

request ‑ полное имя к файлу с запросом к центру лицензирования.

response ‑ полное имя файла, в которое будет помещен ответ центра лицензирования.

В результате у нас появится файл с активированной лицензией.

Шаг 4: Поместить лицензию в хранилище 1С. Команда put

license ‑ полный путь к файлу активированной лицензии, который будет помещен в хранилище лицензий.

Шаг 5: Вывести содержимое хранилища лицензий. Команда list

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

image alt text

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

Будут как простые инструменты создания новых пользователей и мониторинга "все ли вышли из базы", так и более изощренные интерфейсы проверки целостности базы и ее перемещения.

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

Если запустить 1С с параметром /ClearCache, то будут очищены только клиент-серверные запросы. Локальные метаданные останутся и их нужно удалять отдельно на уровне файлов и папок. Эти данные хранятся в профиле пользователя, в папках с длинными названиями из GUID баз данных. Если баз на сервере немного, то такой кэш нетрудно удалить руками. Но если БД исчисляется десятками, то чистке вручную вы не обрадуетесь.

image alt text

В подобных ситуациях выручит скрипт на Powershell, который запускается каждый раз при выходе пользователя из системы:

И никаких связанных со старым кэшем проблем.

Для исправления испорченной файловой базы в поставку 1С входит утилита chdbfl.exe, которая просто считывает содержимое базы во временный файл. Если какие-то данные считать не может — пропускает. При этом у нее нет ключей запуска для автоматизации, и проверку приходится запускать вручную.

Вообще, правильнее запускать проверку БД конфигуратором, но этот процесс проходит значительно дольше. Если же использовать только проверку физической целостности средствами chdbfl.exe, то не забывайте делать резервную копию из-за возможной потери данных.

Для баз 8.1 Андрей Скляров создал хороший инструмент Check1CD, с двумя параметрами запуска: "исправлять найденные ошибки" и “путь к базе”.

Но в Check1CD не хватает двух вещей:

Раз есть "хотелка" и немного свободного времени, то почему бы не попробовать решить вопрос самостоятельно?

Доработать код для передачи параметров через ключи командной строки — дело техники.

image alt text

image alt text

С выходом 1С 8.2 возникла проблема — путь к chdbfl менялся с установкой нового релиза. Что ж, дополним скрипт:

Надо сказать, недавно был опубликован исходный код Check1CD. Да, тоже на AutoIT.

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

При различных регламентных операциях с 1С (ночное обновление конфигурации или бэкап в .dt) важно обеспечить отсутствие подключенных к ней пользователей. Можно конечно запускать 1С: Предприятие с ключом /C ЗавершитьРаботуПользователей, но это не всегда удобно, да и хочется же потом написать личное письмо с рекомендациями по устранению склероза.

Можно использовать штатную возможность подключения к 1С через COMConnector и скрипт на AutoIT. Код написан под 1С 8.1 и позволяет выкинуть пользователей из базы с записью в журнал.

Но операцию иногда нужно проворачивать по просьбе самого пользователя, который запустил "тяжелый" отчет и повесил 1С. Если не хотите решать эти вопросы самостоятельно, то просто выведите любителям “тяжелых” отчётов ярлык на скомпилированный скрипт:

Еще COMConnector помогает проверить наличие обновлений конфигурации, получить какую-то информацию из базы, и автоматизировать заведение пользователей в 1С.

На мой взгляд, создавать новых пользователей 1С должен системный администратор, а не программист 1С. Но последнему нужно сделать процесс максимально простым. Чтобы администратору не приходилось "заглядывать" в каждую базу отдельно, можно использовать еще один скрипт.

Для примера приведу функцию создания пользователей в типовой Бухгалтерии 2.0.

image alt text

Юрлиц развелось слишком много — нужно разбивать на столбцы.

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

Если нужно перенести базу 1С: Предприятия вместе с ее данными в SQL на другой сервер, то делать это вручную целесообразно только для 1-2 БД.

При большем их числе рутина станет утомительной - лучше воспользоваться скриптом.

image alt text

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

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

Наверняка у вас тоже есть свой набор "ноу хау" для администрирования 1С — будет здорово если поделитесь с коллегами в комментариях.

Скрипты и ноу-хау предоставлены avelor, за что ему огромное спасибо!

Читайте также: