License tools 1с как пользоваться
Устанавливаем пакеты Ring и License Tools
Данные утилиты находятся в папке ExtDst с установленной платформой 1C. Например, вот по такому пути: C:\Program Files (x86)\1cv8\8.3.8.2137\ExtDst
Нам необходимо установить оба пакета из данной папки. Нажимаем по очереди правой кнопкой мыши на каждую утилиту и затем “Установить”. Пакет быстро откроется и закроется (моргнет окно). Никаких дополнительных информационных окон об успешности установки
выведено не будет. Но на самом деле утилиты установятся в систему. Убедиться в этом можно зайдя в установленные программ Windows. Там они называются: 1С:Enterprise License Tools и 1С:Enterprise Ring.
Скачиваем и устанавливаем Java и Java Cryptography Extension (JCE)
Так как оболочкой для наших утилит является среда Java, то нам необходимо скачать нужные файлы. Для начала скачиваем и устанавливаем саму программу Java с официального сайта. Затем скачиваем JCE, распаковываем фалы из скачанного архива и перемещаем с заменой в папку security, которая находится в папке с установленной Java. Путь к папке для примера: C:\Program Files (x86)\Java\jre1.8.0_111\lib\security
Устанавливаем переменную окружения
Теперь нам нужно задать специальную переменную окружения “JAVA_HOME”. Для этого заходим в “Мой компьютер” –> “Свойства” –> “Дополнительные параметры системы безопасности” далее на вкладке “Дополнительно” –> “Переменные среды” нажимаем “Добавить”. В качестве имени переменной пишем JAVA_HOME, а в качестве пути указываем полный путь до папки с установленной Java, например:
C:\Program Files\Java\jre1.8.0_73
После всех вышеперечисленных манипуляций появиться возможность использовать специальные команды для работы с лицензиями.
Ищем на компьютере файлы лицензий
Прежде чем приступить к изучению самих команд по работе с лицензиями нам необходимо эти самые файлы лицензий найти. По умолчанию файлы лицензий хранятся по пути: “C:/ProgramData/1C/licence” или “D:\Documents and Settings\All Users\Application Data\1C\licenses”.
Также могут быть и другие места хранения, например, в зависимости от версии ОС Windows. По этому данные файлы проще найти через поиск. Открываем глобальный поиск Windows и вводим в поисковой строке “*.lic” без кавычек. У вас должен найтись файл вида”123456789.lic“. Это и есть нужный нам файл лицензии 1C. Если нашлось несколько таких файлов не пугайтесь. Скорее всего это файлы оставшиеся от предыдущих активаций программы, так как на каждую новую активацию 1C создается один новый файл. Смотрим на дату
создания файла. С самой свежей датой нам и нужен.
Достаем информацию из файлов Lic
Утилита Ring на самом деле имеет множество различных команд для работы с файлами лицензий 1С, но для “выдирания” информации нам понадобятся только две из них. Это команды INFO и LIST. Остальные команды можно посмотреть на сайте информационной системы ИТС. Ссылку я приведу в конце статьи. Для начала воспользуемся командой LIST. Именно она позволяет вывести регистрационный номер и текущий пин-код вашего ПП 1С. Собственно возникает вопрос “И куда мне вводить эту команду?”. Ответ прост: все команды вводятся в командную строку Windows, т.е. в системную утилиту “cmd.exe”. Запускаем командную строку и вводим:
ring license list –path C:\ProgramData\1C\license
где,
C:\ProgramData\1C\license путь до папки с файлами лицензий.Результатом данной команды будет список в виде комбинации “пин-код – рег.номер”, выведенные здесь же в командной строке, например вот так::123456789012345-800111111Первые 15 цифр это и есть ваш текущий пин-код, остальные цифры после дефиса это рег. номер программы. Если по указанному пути лежит несколько файлов, то по каждому из них будет выведена информация. Если нужна информация по конкретному файлу лицензии, то оставляем его в этой папке, остальные временно переносим в любое другое место. Внимание. Ни в коем случае не КОПИРУЙТЕ файлы лицензии в папки на этом же компьютере, т.е. нужно именно ПЕРЕМЕЩАТЬ их. Так как если вы их скопируете программа 1С решит, что вы запустили несколько ее дублей под одним пин-кодом. После этого лицензия заблокируется с предупреждением, что то вроде “недопустимо использование более одного пин-кода”. Так что будьте внимательны, прецеденты были в моей практике.
Давайте теперь воспользуемся командой INFO. Она позволяет посмотреть те данные, что вводятся при получении лицензии (данные об организации).
ring license info –name 123456789012345-800111111 –path C:\ProgramData\1C\license
Как видите принцип здесь тот же только добавился атрибут –name. Правда 1С пошли здесь крайне изощренным методом и вместо того, что бы писать имя файла с лицензией, приходится писать комбинацию “пин-код – рег.номер”. Лично я целых 2 часа “танцевал с бубном” прежде чем понять как использовать данную команду, т.к. на сайте ИТС не было конкретной информации об указании какого имени идет речь.
Примером результата данной команды будет:
В версии платформы 8.3.8 наконец-то появился долгожданных инструмент для просмотра списка установленных на компьютере лицензий. К сожалению, он не user-friendly, но лучше что-то, чем ничего, администраторы теперь получили возможность с помощью скриптовых команд получить список установленных на компьютере лицензий 1С.
Речь идет об утилите ring с модулем lincense, описанных на ИТС здесь. Использовать ее можно и на более ранних релизах, установив отдельно от платформы.
Важное замечание: утилита пока что не работает для базовых версий программных продуктов 1с.
Отдельная установка библиотеки для более ранних релизов
Дистрибутивы утилиты ringнаходятся в двух файлах:
- 1c-enterprise-license-tools-0.1.0-20.x86.msi
- 1c-enterprise-ring-0.6.0-15.x86.msi
Они помещаются в каталог ExtDst при установке платформы. Решение - установить отдельно новую платформу и взять из нее эти библиотеки.
Если устанавливать библиотеки отдельно от платформы, они ставятся в каталог "C:\ProgramFiles (x86)\1C\1CE\ring".
Настройка JAVA для работы библиотеки
Проблема с путем JAVA_HOME
Это значит, что нужно настроить путь к JAVA_HOME, решение легко гуглится, например здесь.
Установка библиотеки криптографии
Для работы утилиты ringнеобходимо установить библиотеку криптографии.
Распаковать два jar-файла из архива local_policy.jar и US_export_policy.jar в каталог вида C:\ProgramFiles (x86)\Java\jre1.8.0_91\lib\security. При этом заменяются существующие файлы с более ограниченной криптографией.
Если не установить библиотеку, то утилита выдает ошибку вида:
Просмотр лицензий
Команда ring доступна из любого каталога, т.к. при установке прописывается в path.
Для просмотра списка лицензий используется команда ring license list [--path ].
Выдает список установленных лицензий, в правой части - номера лицензий, как они пишутся на коробках и в реганкетах.
Для информации об отдельной лицензии используется команда ring license info [--name ] [--path ].
Выдает информацию о лицензии, нужно указывать полное имя лицензии:
Информация может содержать и описание продукта:
Скрипт для получения списка всех лицензий
Готовый скрипт lic_list.cmd прикладываю к статье.
Его код выглядит так:
Сначала получается список лицензий в файл C:\1.txt
Затем файл построчно обрабатывается, и подробная информация со списком лицензий выводится на экран и в файл c:\lic_list.txt:
Обратите внимание, что ring – это тоже пакетный файл cmd, поэтому вызывается через CMD.
Специальные предложения
Вот только есть одна грабля в этом всём. Если есть нерабочие лицензии на сервере, то они так же попадут в этот список и по ним корректно отобразятся данные.
И вот плавно вытекающий вопрос. В описании 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
В результате будет выведен список всех имеющихся и добавленных в хранилище лицензий.
Иногда при работе с лицензиями нужно проверить их актуальность. И хотя активация лицензий сама по себе не слетает (во всяком случае, не замечал), иногда это нужно проверить. Или просто получить информацию, введенную при активации лицензии для последующей переактивации. 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С у меня накопился набор решений под большинство особенностей продукта. Предлагаю отложить в сторону высокие материи про кластеры и тюнинг SQL, и перетряхнуть запасы скриптов и механизмов, которые облегчают жизнь с 1С.
Будут как простые инструменты создания новых пользователей и мониторинга "все ли вышли из базы", так и более изощренные интерфейсы проверки целостности базы и ее перемещения.
Как у большинства сложных приложений, у 1С через некоторое время работы вылезают странные ошибки, и возникает порой необъяснимое поведение. Специальные люди по 1С советуют в таких случаях почистить кэш.
Если запустить 1С с параметром /ClearCache, то будут очищены только клиент-серверные запросы. Локальные метаданные останутся и их нужно удалять отдельно на уровне файлов и папок. Эти данные хранятся в профиле пользователя, в папках с длинными названиями из GUID баз данных. Если баз на сервере немного, то такой кэш нетрудно удалить руками. Но если БД исчисляется десятками, то чистке вручную вы не обрадуетесь.
В подобных ситуациях выручит скрипт на Powershell, который запускается каждый раз при выходе пользователя из системы:
И никаких связанных со старым кэшем проблем.
Для исправления испорченной файловой базы в поставку 1С входит утилита chdbfl.exe, которая просто считывает содержимое базы во временный файл. Если какие-то данные считать не может — пропускает. При этом у нее нет ключей запуска для автоматизации, и проверку приходится запускать вручную.
Вообще, правильнее запускать проверку БД конфигуратором, но этот процесс проходит значительно дольше. Если же использовать только проверку физической целостности средствами chdbfl.exe, то не забывайте делать резервную копию из-за возможной потери данных.
Для баз 8.1 Андрей Скляров создал хороший инструмент Check1CD, с двумя параметрами запуска: "исправлять найденные ошибки" и “путь к базе”.
Но в Check1CD не хватает двух вещей:
Раз есть "хотелка" и немного свободного времени, то почему бы не попробовать решить вопрос самостоятельно?
Доработать код для передачи параметров через ключи командной строки — дело техники.
С выходом 1С 8.2 возникла проблема — путь к chdbfl менялся с установкой нового релиза. Что ж, дополним скрипт:
Надо сказать, недавно был опубликован исходный код Check1CD. Да, тоже на AutoIT.
Аналогичный механизм можно применять и для автоматического запуска различных регламентных механизмов, где нужно запускать 1С и ждать завершения операции.
При различных регламентных операциях с 1С (ночное обновление конфигурации или бэкап в .dt) важно обеспечить отсутствие подключенных к ней пользователей. Можно конечно запускать 1С: Предприятие с ключом /C ЗавершитьРаботуПользователей, но это не всегда удобно, да и хочется же потом написать личное письмо с рекомендациями по устранению склероза.
Можно использовать штатную возможность подключения к 1С через COMConnector и скрипт на AutoIT. Код написан под 1С 8.1 и позволяет выкинуть пользователей из базы с записью в журнал.
Но операцию иногда нужно проворачивать по просьбе самого пользователя, который запустил "тяжелый" отчет и повесил 1С. Если не хотите решать эти вопросы самостоятельно, то просто выведите любителям “тяжелых” отчётов ярлык на скомпилированный скрипт:
Еще COMConnector помогает проверить наличие обновлений конфигурации, получить какую-то информацию из базы, и автоматизировать заведение пользователей в 1С.
На мой взгляд, создавать новых пользователей 1С должен системный администратор, а не программист 1С. Но последнему нужно сделать процесс максимально простым. Чтобы администратору не приходилось "заглядывать" в каждую базу отдельно, можно использовать еще один скрипт.
Юрлиц развелось слишком много — нужно разбивать на столбцы.
Занятно, но после смены нескольких поколений администраторов в одной компании из далекого прошлого новенькие уже не знали как создать пользователя вручную.
Если нужно перенести базу 1С: Предприятия вместе с ее данными в SQL на другой сервер, то делать это вручную целесообразно только для 1-2 БД.
Список баз для миграции можно брать и из файла, а лог выводить в текстовый файл. Аналогичным образом можно конвертировать несколько десятков баз из файловых в SQL простой выгрузкой-загрузкой в .dt
Конечно, это далеко не все, что можно автоматизировать в связке с 1С. Но разного рода обмены, получение real-time информации из 1С в других приложениях и прочие сценарии не попали в этот обзор из-за узкой направленности и специфики.
Наверняка у вас тоже есть свой набор "ноу хау" для администрирования 1С — будет здорово если поделитесь с коллегами в комментариях.
Скрипты и ноу-хау предоставлены avelor, за что ему огромное спасибо!
Читайте также: