Запустить для записи журнала действий пользователя 1с что это

Обновлено: 02.07.2024

Общая информация

Технологический журнал является основным источником информации для всех инструментов анализа производительности платформы.

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

Технологический журнал может продуцировать два вида информации:

Включение технологического журнала

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

%LOCALAPPDATA%\1C\1cv8\dumps (пример: C:\Users\USR1CV8\AppData\Local\1C\1cv8\dumps )

%LOCALAPPDATA%\1C\1cv8\logs (пример: C:\Users\USR1CV8\AppData\Local\1C\1cv8\logs )

USR1CV8 — имя пользователя под которым работает сервер 1С. Логи хранятся 24 часа, при этом делятся на файлы — каждый час новый файл.

Собираемая таким образом информация минимальна — формируются дампы минимального размера при аварийном завершении работы рабочих процессов, а в логи попадают только события SYSTEM с уровнем Error.

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

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

Если настроить нужно конкретную версию, то здесь (зависит от версии):

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

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

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

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


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


При помощи данных команд можно начать/приостановить запись журнала, прервать запись (без сохранения) или прекратить запись с отображением XML текста содержащим информацию о пользовательских действиях, который потребуется для дальнейшей настройки.


В работе с обработкой сложностей не должно возникнуть, рекомендую установить флаг для генерирования кода подключения к клиенту и установить значение переключателя "Преобразовывать" в "Текст". Далее копируем XML текст в поле "Журнал действий пользователя", выполняем команду "Преобразовать" и в текстовом поле "Сценарий" появится программный код для запуска тестирования, который в дальнейшем нам понадобится. Ниже рассмотрю основную процедуру выполняющую подключение к клиенту и запуск теста, в моем случае процедура называется "ТестовыйСценарий_06_03_2014".

&НаКлиенте
Процедура ТестовыйСценарий_06_03_2014 ()

//Создание объекта "ТестовоеПриложение" при помощи которого будет выполняться
//подключение к клиенту тестирования.
//Параметры:
// ИмяКомпьютера - Имя или IP адрес компьютера на отором запущено приложение клиента тестирования.
// Порт - Порт по которому будет выполняться подключение к клиенту тестирования. По умолчанию 1538,
// если необходимо на одном компьютере запускать несколько клиентов, их нужно разнести по разным портам.
// ИдентификаторКлиента - Идентификатор веб-клиента.

ТестовоеПриложение = Новый ТестируемоеПриложение ();

//Далее выполняется попытка подключения к клиенту тестирования.
ВремяОкончанияОжидания = ТекущаяДата () + 60 ;
Подключен = Ложь;
ОписаниеОшибкиСоединения = "" ;
Пока Не ТекущаяДата () >= ВремяОкончанияОжидания Цикл
Попытка
ТестовоеПриложение . УстановитьСоединение ();
Подключен = Истина;
Прервать;
Исключение
ОписаниеОшибкиСоединения = ОписаниеОшибки ();
КонецПопытки;
КонецЦикла;

Если Не Подключен Тогда
ТестовоеПриложение = Неопределено;
Сообщить ( "Не смогли установить соединение! " + Символы . ПС + ОписаниеОшибкиСоединения );
Возврат;
КонецЕсли;

//Если подключение к клиенту тестирования прошло успешно, запускаются управляющие процедуры
//имитирующие пользовательские действия.
ОкноПриложенияОсновноеКнопкаКомандногоИнтерфейсаПриходнаяНакладнаяНажать ( ТестовоеПриложение );
ОкноПриложенияПриходнаяНакладнаяКнопкаСоздатьНажать ( ТестовоеПриложение );
ОкноПриложенияПриходнаяНакладнаяСозданиеПолеНоменклатураВыбрать ( ТестовоеПриложение );
ОкноПриложенияНоменклатураТаблицаСписокВыбрать ( ТестовоеПриложение );
ОкноПриложенияПриходнаяНакладнаяСозданиеКнопкаПровестиИЗакрытьНажать ( ТестовоеПриложение );

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

&НаКлиенте
Процедура ЗапуститьСценарий ( Команда )
ТестовыйСценарий_06_03_2014 ();
КонецПроцедуры

&НаКлиенте
Процедура ТестовыйСценарий_06_03_2014 ()
//.
КонецПроцедуры

Обращаю внимание, что если во время теста вводились числа больше 999 (количество, суммы и т.п.) при преобразовании в XML платформа автоматически не удаляет разделитель групп (по умолчанию неразрывный пробел) и его необходимо удалить в самих процедурах!

Для выполнения тестового сценария, необходимо как минимум два клиентских приложения, запущенных в режиме менеджера тестирования и в режиме клиента тестирования соответственно . Есть два варианта запуска приложений:

1. В параметрах конфигуратора (Сервис - Параметры) перейти на закладку "Запуск 1С:Предприятия", раскрыть вкладку "Дополнительно", в группе "Автоматизированное тестирование" выбрать необходимы режим запуска. Т.е. вручную запустить менеджер тестирования и необходимо количество клиентов, перед каждым запуском нужно выбрать необходимый режим и для клиентов указать различные порты (если клиент один, оставить порт по умолчанию).


2. Автоматически запускать менеджера и клиентов тестирования используя ключи "/TESTMANAGER" и "/TESTCLIENT" соответственно . Ниже приведен пример программного кода 1С для файлового варианта (необходимо изменить версию платформы, путь до информационной базы и если запускается более одного клиента тестирования указать порт).

ЗапуститьСистему ( "C:\Program Files (x86)\1cv8\\bin\1cv8.exe ENTERPRISE /F /N Администратор / TESTMANAGER " );
ЗапуститьСистему ( "C:\Program Files (x86)\1cv8\\bin\1cv8.exe ENTERPRISE /F /N Администратор /TESTCLIENT [-TPort] " );

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

Ниже, привожу пример простого программного кода по работе с двумя клиентами тестирования:

&НаКлиенте
Процедура ТестовыйСценарий_06_03_2014 ()

ТестовоеПриложение1 = Новый ТестируемоеПриложение (); //Порт по умолчанию 1538
ТестовоеПриложение2 = Новый ТестируемоеПриложение (, 1539 );

ВремяОкончанияОжидания = ТекущаяДата () + 60 ;
Подключен = Ложь;
ОписаниеОшибкиСоединения = "" ;

//Подключение к первому клиенту тестирования
Пока Не ТекущаяДата () >= ВремяОкончанияОжидания Цикл
Попытка
ТестовоеПриложение1 . УстановитьСоединение ();
Подключен = Истина;
Прервать;
Исключение
ОписаниеОшибкиСоединения = ОписаниеОшибки ();
КонецПопытки;
КонецЦикла;

ВремяОкончанияОжидания = ТекущаяДата () + 60 ;

//Подключение ко второму клиенту тестирования
Пока Не ТекущаяДата () >= ВремяОкончанияОжидания Цикл
Попытка
ТестовоеПриложение2 . УстановитьСоединение ();
Подключен = Истина;
Прервать;
Исключение
ОписаниеОшибкиСоединения = ОписаниеОшибки ();
КонецПопытки;
КонецЦикла;

Если Не Подключен Тогда
ТестовоеПриложение1 = Неопределено;
ТестовоеПриложение2 = Неопределено;
Сообщить ( "Не смогли установить соединение! " + Символы . ПС + ОписаниеОшибкиСоединения );
Возврат;
КонецЕсли;

//Для каждого клиента скопируем процедуры тестирования.
ОкноПриложенияОсновноеКнопкаКомандногоИнтерфейсаПриходнаяНакладнаяНажать1 ( ТестовоеПриложение1 );
ОкноПриложенияОсновноеКнопкаКомандногоИнтерфейсаПриходнаяНакладнаяНажать2 ( ТестовоеПриложение2 );
ОкноПриложенияПриходнаяНакладнаяКнопкаСоздатьНажать1 ( ТестовоеПриложение1 );
ОкноПриложенияПриходнаяНакладнаяКнопкаСоздатьНажать2 ( ТестовоеПриложение2 );
ОкноПриложенияПриходнаяНакладнаяСозданиеПолеНоменклатураВыбрать1 ( ТестовоеПриложение1 );
ОкноПриложенияПриходнаяНакладнаяСозданиеПолеНоменклатураВыбрать2 ( ТестовоеПриложение2 );
ОкноПриложенияНоменклатураТаблицаСписокВыбрать1 ( ТестовоеПриложение1 );
ОкноПриложенияНоменклатураТаблицаСписокВыбрать2 ( ТестовоеПриложение2 );
ОкноПриложенияПриходнаяНакладнаяСозданиеКнопкаПровестиИЗакрытьНажать1 ( ТестовоеПриложение1 );
ОкноПриложенияПриходнаяНакладнаяСозданиеКнопкаПровестиИЗакрытьНажать2 ( ТестовоеПриложение2 );

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

Я вижу следующие варианты использования данного механизма:

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

Для решения подобной задачи, можно создать bat-файл для запуска системы в режиме клиента тестирования и использовать методы тестового приложения "НачатьЗаписьЖурналаДействийПользователя" и "ЗавершитьЗаписьЖурналаДействийПользователя" для получения журнала. Ниже привожу пример программного кода:

&НаКлиенте
Перем ТестовоеПриложение ;

&НаКлиенте
Процедура Запустить ( Команда )

ТестовоеПриложение = Новый ТестируемоеПриложение ();

ВремяОкончанияОжидания = ТекущаяДата () + 60 ;
Подключен = Ложь;
ОписаниеОшибкиСоединения = "" ;

Пока Не ТекущаяДата () >= ВремяОкончанияОжидания Цикл
Попытка
ТестовоеПриложение . УстановитьСоединение ();
Подключен = Истина;
Прервать;
Исключение
ОписаниеОшибкиСоединения = ОписаниеОшибки ();
КонецПопытки;
КонецЦикла;

Если Не Подключен Тогда
ТестовоеПриложение = Неопределено;
Сообщить ( "Не смогли установить соединение! " + Символы . ПС + ОписаниеОшибкиСоединения );
Возврат;
КонецЕсли;

&НаКлиенте
Процедура Остановить ( Команда )
Сообщить ( ТестовоеПриложение . ЗавершитьЗаписьЖурналаДействийПользователя ());
КонецПроцедуры

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

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

3. Для разрешения проблем ожиданий на блокировках или дедлоков. Можно создать несколько тестов, которые явно приведут к проблеме производительности для дальнейшего расследования.

4. Проведение нагрузочного тестирования. Фирма 1С позиционирует функционал как механизм сценарного тестирования, но по большому счету не запрещает запускать большое количество клиентов тестирования. В обработчики можно вставить генераторы случайных чисел для разнородности вводимой информации. На момент написания статьи, мне не известны примеры подобного нагрузочного тестирования, при получении новой информации я обновлю публикацию.

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

Все комментарии и дополнения по тексту статьи я с радостью жду в комментариях!

Необходимо выбрать режим. Определиться со временем блокировки.

Примечание: для того, чтобы обработка предупредила пользователей о регламентных работах заблаговременно, необходимо устанавливать начальную дату больше текущей минут на 5-ть (пример - текущая 13-00 тогда блокировать базу надо 13-05). В противном случае ничего страшного не произойдет - просто не будет предупреждать, а начнет выгонять пользователей с возможностью сохранится.


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



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


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


После отключения сеанса у пользователя запускается режим "Ожидания запуска"


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

2. Снятие блокировки - снимает блокировку пользователей

Необходимо воспользоваться ярлыком входа в предприятие для снятие блокировки с себя.

Примечание - разблокировка идет только на данный сеанс. И если вы будете заходить в конфигуратор нельзя нажимать кнопку "Начать отладку" (закуск клиентской части), т.к. все повиснет.

Запустить обработку. Воспользоваться режимом снятие блокировки.



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

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

Необходимо ввести свои пароль.

Замечание - пользователь должен иметь права на завершение работы пользователей.


При выполнение будет выдаваться информация об отключении сеансов



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

Необходимо ввести свои пароль.

Замечание - пользователь должен иметь права на завершение работы пользователей.

Установить галочки напротив "провинившихся"


При выполнение будет выдаваться информация об отключении сеансов


Дополнительная информация:

Тестировалась и используется на 1с Бухгалтерия КОРП 8.2.

Пункты 1-2 основаны на типовой обработке "Завершение работы пользователей",

На форме обработки также есть подробные описания - что делает каждый из режимов запуска.

Я рлыки для входа в заблокированную базу каждый себе создаст сам, я думаю. Опишу только как это сделать:

1) Необходимо скопировать рабочий ярлык запуска 1с;

2) Скопированный ярлык переименовываем на подобие "Предприятие - Разблокировать себя", "Конфигуратор - разблокировать себя" - вобщем на свое усмотрение.

3) Открываем свойства ярлыка. В поле "Объект" пишем следующее:

C:\Program Files (x86)\1cv82\common\1cestart.exe - у каждого свой путь,

enterprise - для входа в предприятие,

DESIGNER - для входа в конфигуратор,

1525123 - код разрешения как в обработке.

4) Сохраняем ярлык.

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

Общая информация

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

Автоматизированное тестирование выполняется при помощи двух клиентских приложений и сценария тестирования.

Менеджер тестирования — это клиентское приложение (толстый или тонкий клиент) запущенное в соответствующем режиме. В этом приложении исполняется сценарий тестирования и производится оценка результатов (если нужно).

Клиент тестирования — это клиентское приложение (толстый, тонкий или веб-клиент). Это приложение получает от менеджера команды, воспроизводит их и возвращает результат.

Запись действий пользователя

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

К счастью имеется способ серьезно упростить работу — записать журнал действия пользователя. Запуск этого режима производится из конфигуратора:

Запуск записи действий пользователя из конфигуратора

Запуск записи действий пользователя из конфигуратора

Или из командной строки:

C:\Program Files\1cv8\common>1cestart.exe ENTERPRISE /IBName "Тестовая база" /UILogRecorder

После запуска в правом верхнем углу основного окна приложения появятся кнопки для управления записью действий пользователя:

Управление записью действий пользователя

С помощью этих кнопок запись можно:

  • начать/приостановить/продолжить;
  • прекратить;
  • завершить.

Начав запись, сделав какие-либо действия и завершить запись, мы увидим некий XML-документ, например такой:

Пример записи действий пользователя

Пример записи действий пользователя

Выглядит все это вот так:

Преобразование XML в код на встроенном языке

Преобразование XML в код на встроенном языке

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

Запуск системы тестирования

Запустить клиентское приложение в режиме менеджера тестирования или клиента тестирования можно из конфигуратора или при помощи командной строки.

Запуск из командной строки в режиме менеджера тестирования выглядит примерно так:

C:\Program Files\1cv8\common>1cestart.exe ENTERPRISE /IBName "Тестовая база" /TestManager

А в режиме клиента тестирования так:

C:\Program Files\1cv8\common>1cestart.exe ENTERPRISE /IBName "Тестовая база" /TestClient -TPort 2000

При запуске в режиме клиента можно указать номер порта (по умолчанию 1538), это нужно в том случае, если запущено несколько клиентов тестирования.

Текущий режим будет указан в заголовке главного окна:

Заголовок главного окна в режиме менеджера

Заголовок главного окна в режиме менеджера

Заголовок главного окна в режиме клиента

Заголовок главного окна в режиме клиента

Создание и область применения тестов

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

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

Схема объектов для имитации интерактивных действий

Схема объектов для имитации интерактивных действий

А также синтаксис-помощник в котором имеется подробная информация о каждом из этих объектов.

Самым простым вариантом запуска теста будет создать обработку (можно внешнюю) и просто засунуть в нее имеющийся код теста и запустить из менеджера тестирования.

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

На этом все, надеюсь, что данная статья была Вам полезна.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

(оценок: 1, средняя оценка: 5,00 из 5)

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