Настройка журнала
Чтобы увидеть доступные настройки, необходимо зайти в режиме 1С конфигуратор и в главном меню найти пункт «Администрирование — Настройка журнала регистрации…»:
Получите 267 видеоуроков по 1С бесплатно:
В открывшемся интерфейсе доступны следующие настройки ведения журнала:
Здесь в поле «Регистрировать в журнале события» можно указать детализацию регистрируемых данных. Пункт «Не регистрировать» позволяет отключить ведение журнала вовсе. Другие пункты расшифровываются следующим образом:
- Ошибки — все возможные варианты сбоев и ошибок в системе;
- Предупреждения — важные сообщения системы, которые не являются ошибками;
- Информация — вся информация об изменяемых данных системы;
- Примечания — неважные сообщения (почти всегда их можно отключить).
Другие настройки рассмотрим далее, они относятся к оптимизации работы журнала.
Существуют активные сеансы работы с данной базой, использующие версию платформы, не поддерживающую совместную работу с этой версией. Не совпадает версия временного файла
Крепко призадумался, что все это означает. Версия платформы везде абсолютно одинаковая. Специально прошелся по всем компьютерам и убедился, что везде установлена одна и та же версия платформы.
Начал искать информацию в интернете. Удивился ,что ошибка на самом деле не очень популярная, хотя привык к тому, что по ошибкам 1С всегда много информации находится, потому что продукт очень популярный. Но не в этот раз. В одном месте заметил упоминание установленного антивируса Kaspersky Endpoint Security 10
Обратил внимание, что у меня установлена эта же версия. Автор указывал, что проблема кроется конкретно в этой версии антивируса
После удаления, ошибка у него исчезла.
Немного поискав информации конкретно по этой ошибке с антивирусом, убедился, что такие случаи не редкость и встречались у других людей. Удалил с компьютера Kaspersky Endpoint Security 10 и установил 8-ю версию. Ошибка 1С «Существуют активные сеансы работы с данной базой, использующие версию платформы, не поддерживающую совместную работу с этой версией. Не совпадает версия временного файла» исчезла.
Вот такой вот неожиданный глюк совместимости программ. С Kaspersky Endpoint Security 10, к сожалению, это не первый подобный случай. Хоть продукт вышел уже достаточно давно, ошибки с ним случаются до сих пор, приходится использовать более ранние версии.
30.10.2015 Дополнение.
Сегодня вновь столкнулся с подобной ошибкой — Существуют активные сеансы работы с данной базой, использующие версию платформы, не поддерживающую совместную работу с этой версией. Не совпадает версия временного файла. При этом у всех пользователей как минимум пол года стоит 10-я версия Касперского и все было в порядке. Невозможно было зайти ни с одного компьютера. База локальная, расположенная в сетевой папке. Зайти не получалось никому. Была предпринята попытка удалить файлы с маской 1Cv8tmp* в папке с базой, но не получалось, так как файлы были заняты.
У меня не было доступа к серверу с сетевой папкой, посмотреть у кого открыты файлы не получалось. Пользователей с базой работало всего несколько человек и у всех база была закрыта. Но оказалось, что у одного пользователя завис процесс 1С на компьютере и его не было видно, если не заглянуть в список процессов. Через диспетчер задач удалил этот процесс, затем удалил файлы 1Cv8tmp* и зайти в базу удалось.
Онлайн курс «DevOps практики и инструменты»
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите программу детальнее по .
Где хранится журнал регистрации
Начнем с того, где хранится журнал регистрации в 1С. Варианта может быть два — для файлового и клиент серверного режима работы.
Файловая база
Для файловых баз данных 1С журнал находится в папке с базой данных. Расположение файлов можно узнать при запуске программы в меню выбора базы данных:
Красным выделен путь. Если мы проследуем по этому пути, то увидим следующую картину:
Папка 1Cv8Log — это и есть директория, содержащая журнал регистрации.
- Если Вы планируете перенести файловую базу данных и хотите сохранить историю журнала регистрации, Вам обязательно надо скопировать папку 1Cv8Log в категорию новой базы 1С.
- Если необходимо очистить журнал регистрации 1С в файловой базе, просто удалите папку 1Cv8Log.
Клиент-серверная база 1С SQL
В клиент-серверном режиме файлы истории обычно хранятся на сервере в каталоге:
C:Program Files1cv8srvinfo 1Cv8Log
Чтобы перенести журнал регистрации 1С для базы SQL, так же, как и для файловой, достаточно перенести папку в расположение новой базы.
Так же и с удалением — достаточно просто удалить данную папку.
Решение
Утилита командной строки sqlite
Для Windows утилиту нужно скачать отсюда.
Для Linux следует использовать утилиту, доступную в официальных репозиториях.
Восстановление
ВНИМАНИЕ! Все нижеследующие операции обязательно производите над копией файла журнала регистрации
- Остановите кластер «1С:Предприятия» или завершите все клиенты для файлового варианта.
- Скопируйте испорченный файл 1Cv8.lgd в отдельную директорию. Например, «C:LogRestore».
- Туда же разархивируйте sqlite3.exe из архива, который скачале ранее.
- В командной строке перейдите в рабочую директорию («C:LogRestore»).
- Выполните команду:
sqlite3 1Cv8.lgd .dump >> backup.sql
Откройте файл backup.sql. Он может быть большой и MS Notepad его может не открыть. В этом случае воспользуйтесь, например, Notepad++.
Если самой последней строкой у вас является «ROLLBACK;» — замените ее на «COMMIT;» и сохраните файл.
Переименуйте файл 1Сv8.lgd в текущей директории в 1Cv8-orig.lgd.
В этой же директории выполните команду:
При этом могут выводиться ошибки. Это нормально.
Откройте файл 1Сv8.lgd Конфигуратором пустой файловой базы. Убедитесь, что данные сохранены.
Замените испорченный файл в том месте, где он был изначально на 1Cv8.lgd из текущей директории.
Журнал регистрации 1С — специальный механизм платформы 1С версий 8.2 и 8.3, который позволяет фиксировать работу пользователей с системой. С помощью журнала можно узнать, кто и когда изменял объекты в системе: справочники, документы, регистры и т.д. Ниже мы рассмотрим, как работать с этим механизмом, где хранятся файлы журнала регистрации 1С, каким образом происходит его настройка, как оптимизировать журнал регистрации и как можно произвести полную очистку данных.
Solution
- Firstly, we should try to verify the database with an embedded SQLite3 command. So, we need to have installed (v3.25.2 or later). The installation steps depend on the OS.
- We will use Docker instead of direct installation (this option is available only for x86_64 CPUs, for arm-based boards you will need to install via the package manager of your OS).
- Stop the storagenode
- Make a backup of all the databases. They are located in the folder for your data storage. For example , where is the data folder you had specified in the option of the command for your storagenode, or in case of using the Windows GUI, in the option of the file.
- Check each database for errors. We will use as an example in this guide.
- Docker (replace with an absolute path to the databases location, or simple switch the current location to there)
docker run --rm -it --mount type=bind,source=${PWD},destination=/data sstc/sqlite3 find . -iname "*.db" -maxdepth 1 -print0 -exec sqlite3 '{}' 'PRAGMA integrity_check;' ';'
- Direct installation
-
Linux
sudo apt update && sudo apt install sqlite3 -y
- Windowshttps://www.sqlitetutorial.net/download-install-sqlite/
- Make sure that the version is v3.25.2 or later, otherwise the check will not work correctly.
sqlite3 --version
- perform the integrity check (perform for each database), for example for :
sqlite3 /path/to/storage/bandwidth.db "PRAGMA integrity_check;"
- Or check all databases with help of shell commands:
- bash (Linux)
find /path/to/storage/ -iname "*.db" -maxdepth 1 -print0 -exec sqlite3 '{}' 'PRAGMA integrity_check;' ';'
- PowerShell (Windows)
Get-ChildItem X:\storagenode\storage\*.db -File | %{$_.Name + " " + $(sqlite3.exe $_.FullName "PRAGMA integrity_check;")}
- bash (Linux)
-
- Docker (replace with an absolute path to the databases location, or simple switch the current location to there)
- If you see errors in the output, then the check did not pass. We will unload all uncorrupted data and then load it back. But this could sometimes fail, too. If no errors occur here, you can skip all the following steps and start the storagenode again.
-
If you were not lucky and the check failed, then please try to fix the corrupted database(s) as shown below.
-
Open a shell
-
Docker version of sqlite3. Open a shell Inside the container:
docker run --rm -it --mount type=bind,source=x:\storagenode\storage,destination=/storage sstc/sqlite3 sh
Tip. You can use to restore your databases. It uses memory instead of disk and should take a lot less time than on HDD (you can read more about usage of with Docker in the Use tmpfs mounts guide or this forum comment). For Windows or MacOS you must increase the allocated RAM for the docker’s VM via Docker desktop application to fit a double size of the greatest corrupted database file in case of usage of .
- You could use your shell directly if you have sqlite3 installed. In that case, use the path to your storage instead of «/storage/» across this guide below.
- For Windows with local sqlite3 installed, we recommend to use a PowerShell to execute the commands below. Don’t forget to replace the «/storage/» folder with your local path to the folder where the databases are stored. If the executable is not in the system variable PATH, then you should specify the full path to it or run from the location of the executable.
-
-
Now run the following commands in the shell. You need to repeat steps 9 to 14 for each corrupted database:
cp /storage/bandwidth.db /storage/bandwidth.db.baksqlite3 /storage/bandwidth.db
-
You will see a prompt from . Run this SQL script:
.mode insert.output /storage/dump_all.sql.dump.exit
-
We will edit the SQL file
-
Linux or docker version:
cat /storage/dump_all.sql | grep -v TRANSACTION | grep -v ROLLBACK | grep -v COMMIT >/storage/dump_all_notrans.sql
- PowerShell (Windows) with a local sqlite3 version:
Get-Content dump_all.sql | Select-String -NotMatch TRANSACTION | Select-String -NotMatch ROLLBACK | Select-String -NotMatch COMMIT | Set-Content -Encoding utf8 dump_all_notrans.sql
-
-
Remove the corrupted database (make sure that you have a backup!)
rm /storage/bandwidth.db
-
Now we will load the unloaded data into the new database
sqlite3 /storage/bandwidth.db ".read /storage/dump_all_notrans.sql"
-
Check that the new database ( in our example) has a size larger than 0:
-
Linux or docker version
ls -l /storage/bandwidth.db
- PowerShell (Windows) with a local sqlite3 version:
ls /storage/bandwidth.db
-
-
Exit from the container (skip this step, if you use a directly installed sqlite3)
exit
-
If you are lucky and all corrupted databases are fixed, then you can start the storagenode again.