При обновлении тяжелых конфигураций, таких как 1С:Управление торговлей 11.5, ERP или Комплексная автоматизация, пользователи часто сталкиваются с критической ошибкой при вызове метода УстановитьМонопольныйРежим. Ситуация осложняется, если база является файловой, а обновление прерывается сообщением о том, что база заблокирована фоновым заданием. Проанализируем причины этой проблемы и разберем пошагово методы ее решения.
Разберем ситуацию: при выполнении дополнительных процедур обработки данных после обновления конфигурации (в режиме «1С:Предприятие») система пытается управлять блокировками. Ошибка Ошибка разделенного доступа к базе данных в файловом варианте чаще всего означает, что платформа не может корректно завершить фоновое задание, которое «держит» таблицу базы. Проанализируем основные факторы, провоцирующие это поведение:
8.3.21 (особенно ранние сборки типа 8.3.21.1302) имеют известные проблемы с управлением сеансами в файловом режиме.1cv8.exe могут оставаться в памяти даже после закрытия программы, удерживая блокировку.Рассмотрим самый действенный метод для файловых баз — принудительное ограничение параллельных процессов обновления. По умолчанию система может пытаться запустить 2 и более потоков для ускорения обработки данных, что вызывает конфликт доступа. Выполним следующие действия:
Зайдем в раздел НСИ и администрирование, далее перейдем в пункт Обслуживание. В открывшемся окне найдем подраздел Обновление программы и нажмем на гиперссылку Результаты обновления и дополнительные процедуры. В этом интерфейсе нас интересует возможность настройки параметров:
Установка одного потока гарантирует, что система будет последовательно обрабатывать данные, не вызывая конфликтов блокировок между фоновыми заданиями.
Если база «зависает» на этапе входа и не дает даже зайти в настройки, нам нужно временно запретить выполнение любых регламентных заданий. Выясним, как это сделать через дополнительные параметры запуска:
/AllowExecuteScheduledJobs -Off
Запустим базу. Теперь фоновые задания не будут стартовать автоматически, что позволит нам беспрепятственно выполнить монопольные операции или завершить критические обработчики обновления. Не забудьте удалить этот ключ после успешного завершения всех процедур.
Иногда ошибка вызвана не техническим сбоем платформы, а некорректными данными, которые обработчик обновления не может «переварить». В версиях 11.5.9.116 и смежных была замечена проблема со справочником Назначения. Рассмотрим ситуацию, когда справочник Направления деятельности содержит пустые или битые ссылки при включенной опции «Учет затрат».
Для исправления ситуации рекомендуется проверить наличие патча EF_00_00482878. Если патч недоступен или не помогает, можно попробовать выполнить небольшую проверку данных программно. Посмотрим на пример кода, который помогает выявить проблемные записи (выполнять в консоли кода):
Выборка = Справочники.НаправленияДеятельности.Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(Выборка.Ссылка) Тогда
Сообщить("Найдена пустая ссылка в Направлениях деятельности!");
КонецЕсли;
КонецЦикла;
Если в процессе обновления система стопорится на обработчике Справочники.Назначения.ОбработатьДанныеДляПереходаНаНовуюВерсию, убедитесь, что в базе установлены все актуальные исправления (патчи) через конфигуратор или раздел «Обслуживание».
Проанализируем техническую сторону работы файловой БД. Файлы блокировок *.1cl и *.cfl могут оставаться в папке с базой данных, если сеанс был завершен аварийно (через Диспетчер задач). Проделаем следующие шаги для «чистого» запуска:
1cv8.exe или 1cv8c.exe. Если они есть — снимите задачи.1Cv8.1CD.%AppData%\1C\1cv8\).Важный момент: Если вы используете платформу 8.3.21.1302, настоятельно рекомендуем обновить ее до версии 8.3.21.1607 или выше (например, переход на 8.3.22). В этих релизах исправлено множество ошибок, связанных именно с «зависанием» монопольного режима в файловых версиях при работе фоновых заданий.
Для успешного обновления УТ 11.5 на файловой базе при возникновении ошибок блокировки мы рекомендуем придерживаться следующего алгоритма: очистка процессов -> запуск с ключом запрета заданий -> установка количества потоков обновления равным 1 -> применение актуальных патчей. Это обеспечит стабильность процесса и сохранность ваших данных.