Сперва о том, что произошло у нас. База клиента поставлена ночью на «Тестирование и исправление», после чего аварийно завершился сеанс Конфигуратора по ошибке переполнения журнала транзакций. Упс.
И все, попасть в ИБ уже невозможно. 1С не дает выбрать пользователя — до этого окна даже не доходит. Сразу ошибка. В режиме 1С:Предприятия — «Нарушение прав доступа», а через Конфигуратор — «Пользователь ИБ не идентифицирован». Приехали...
Хорошо, что перед запуском ТиС была сделана резервная копия базы. Как правило, 1С предупреждает об этом и выводит сообщение:
«Перед выполнением тестирования и исправления информационной базы рекомендуется создать резервную копию».
Параметры среды:
ОС: Windows Server 2022 Standard
Платформа: 8.3.18.1208
Клиент-серверный режим
СУБД: MS SQL Server 2019
Что дальше
Начнем по порядку. Сначала расскажем, как вышли из этой ситуации, потому что надо срочно запускать пользователей в работу. Дальше подробнее об этой ошибке, ее причинах и способах обхода.
Будут разные решения. Элегантные и не очень, но вполне рабочие. Скажем сразу — за основу статьи мы взяли материалы с портала Инфостарт.
Также будьте внимательны, часть действий напрямую связаны с редактированием таблиц БД — поэтому вся ответственность на вас. Вы осознаете, что делаете и как. И, конечно же, сделаете резервные копии перед запуском скриптов.
Как решили
- Создали временно на MS SQL новую чистую базу и зарегистрировали ее в Консоли администрирования 1С.
- Развернули ИБ из резервной копии (dt-файла).
- Сделали новую копию средствами SQL.
- Восстановили sql-бэкап в рабочую базу.
Откуда вообще взялась эта ошибка
Как оказалось, это официально подтвержденная ошибка платформы 1С. Какие релизы «под прицелом»:
- 8.3.16.1814;
- 8.3.17.1851;
- 8.3.18.1208.
Исправлена в следующих версиях: 8.3.16.1876, 8.3.17.1989, 8.3.18.1289, 8.3.19.1150, 8.3.20.1549.
Ошибка может возникнуть при следующих условиях/действиях:
- в режиме Конфигуратор после ошибки при обновлении о том, что журнал транзакций переполнен;
- в момент выполнения Тестирования и Исправления (ТиС) или при обычном обновлении после этапа реструктуризации;
- при обновлении конфигурации и сообщении «Недостаточно памяти» c аварийным закрытием платформы (appcrash);
- при сохранении изменений в Конфигураторе;
- просто так.
Реанимация ИБ после такой ошибки
I. Если в любом случае надо остаться на «сбойной» версии платформы, а переход на другие осложнен
Какие есть способы:
1.1 Изменение значения Status
1C делает запрос к таблице SchemaStorage и получает значение Status. В «поломанной» базе этот статус равен "200", в нормальной — "100". Попробуйте его изменить средствами СУБД и запустить базу.
Текст запроса:
USE <ИмяБазы>
SELECT Status FROM SchemaStorage WHERE SchemaID = 0
Запрос на изменение значения Status:
USE <ИмяБазы>
UPDATE SchemaStorage SET Status = 100
1.2 Изменение таблицы Config
Проверка:
USE <ИмяБазы>
SELECT * from Config WHERE FileName = 'commit'
SELECT * from Config WHERE FileName = 'dbStruFinal'
Выполните скрипт на изменение:
USE <ИмяБазы>
DELETE from Config where FileName = 'commit'
DELETE from Config where FileName = 'dbStruFinal'
Внимание. После данных действий, если Конфигуратор долго что-то делает, но не дойдет до ввода логина-пароля — перезапустите службу Агента сервера 1С.
1.3 Таблица v8users
Возможно, после обновления таблица v8users была переименована в v8usersOG. Верните её прежнее название и проверьте авторизацию.
USE <ИмяБазы>
SELECT * into [v8users] FROM [v8usersOG]
GO
Похоже, что при динамическом обновлении платформа меняет название таблицы для того, чтобы запретить новые подключения к базе.
II. Если допускается установка/переход на другие версии технологических платформ 1С
2.1 Установка следующего релиза ТП
Установите следующий релиз технологической платформы 1С, где данную ошибку уже исправили.
Исправлена (с портала bugboard): 8.3.16.1876, 8.3.17.1989, 8.3.18.1289, 8.3.19.1150, 8.3.20.1549.
В качестве временного решения:
Устанавливаете новую версию сервера 1С, запускаете Конфигуратор в ней и завершаете обновление. После чего возвращаетесь на старую версию сервера обратно.
2.2 Восстановление через дополнительную базу
В общем, мы интуитивно использовали этот вариант, когда сами столкнулись с ошибкой. Способ работает, когда у вас есть доступ к резервной копии ИБ (dt) или бэкапу средствами СУБД до изменений.
Повторим еще раз:
- создайте вспомогательную базу на сервере 1С, загрузите созданную перед началом обновлений выгрузку основной базы;
- на сервере СУБД штатными средствами сделайте полный бэкап вспомогательной базы;
- Там же восстановите основную базу из резервной копии вспомогательной БД.
Т. е. восстанавливаете копию в другую базу, а потом средствами СУБД делаете её бэкап и загружаете на основную.
2.3 Запуск на другом кластере/релизе платформы
Порядок следующий:
- устанавливаете предыдущий/более низкий релиз платформы (на этом же или другом сервере — смотрите, исходя из вашей ситуации);
- в консоли администрирования 1С другой платформы добавляете базу, на которой ошибка;
- заходите в Конфигуратор до окна логина и пароля (но ничего не вводите, нажимаете «Отмена»);
- возвращаетесь на исходную платформу;
- заходите в Конфигуратор и вводите логин/пароль.
Оптимизированный вариант, если на сервере есть другие версии платформ:
— остановите «Агент сервера 1С:Предприятия 8.3» через «Службы»;
— замените в реестре пусть запуска на старую платформу (параметр ImagePath);
Например,
HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)
"C:\Program Files\1cv8\8.3.16.1063\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
— запустите Сервер 1С;
— откройте Конфигуратор на старой платформе (в случае вопроса 1С на восстановление проблемной конфигурации ответьте «Да»);
— после появления окна авторизации — отмените вход;
— остановите сервер 1С, поменяйте в реестре путь на исходную версию платформы и запустите Агент сервера 1С по новой.
2.4 Удаление из списка в консоли без удаления ИБ
- устанавливаете предыдущий/более низкий релиз платформы;
- удаляете базу из списка в консоли 1С без удаления БД;
- регистрируете базу в консоли 1С повторно;
- возвращаетесь на исходную платформу.
✅ Надеемся, у вас получится обойти эту ошибку и восстановить доступ к ИБ. Расскажите о своем опыте в комментариях. Успехов!
Вас также может заинтересовать:
_____________________________________
⚡ Подписывайтесь на канал или задавайте вопрос на сайте — постараемся помочь всеми техническими силами. Безопасной и производительной работы в Windows и 1С.