При работе с распределенными информационными базами (РИБ) в 1С нередко возникает ситуация, когда после обновления центральной базы и отправки изменений в периферийный узел, войти в этот узел становится невозможно. Система запускает процедуру обновления, но прерывает ее из-за конфликта с работающими регламентными заданиями.
Рассмотрим типичную проблему: после принятия изменений в конфигураторе периферийной базы 1С:Бухгалтерия 3.0, при запуске в режиме "Предприятие" процесс обновления завершается ошибкой:
{ОбщийМодуль.ОбщегоНазначения.Модуль(2308)}: Вход в программу временно невозможен в связи с обновлением на новую версию. Рекомендуется запрещать выполнение регламентных заданий на время обновления.
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(1361)}: Ошибка загрузки приоритетных данных из сообщения обмена. См. подробности в журнале регистрации.
После этого сообщения система предлагает только два варианта: "Перезапустить" или "Завершить работу", полностью блокируя доступ к базе. Проанализируем причины этой проблемы и разберем несколько способов ее решения, от самых простых до более сложных технических вмешательств.
Основная причина такого поведения — это "гонка состояний". Когда вы загружаете обновление конфигурации в периферийную базу, система должна выполнить ряд процедур для применения этих изменений. В этот же момент могут запускаться регламентные задания (например, проверка новостей, обновление классификаторов, фоновый обмен данными). Эти фоновые процессы пытаются работать со старой структурой данных, в то время как система уже начала переход на новую. Это вызывает конфликт, который обработчики обновления расценивают как критическую ошибку и блокируют вход пользователя до ее устранения.
Стандартные методы, такие как запуск с ключами или отключение регламентных заданий на сервере, не всегда помогают, так как ошибка возникает на самом раннем этапе запуска базы, когда эти команды могут еще не успеть отработать. Давайте рассмотрим рабочие методики, которые помогли пользователям справиться с этой проблемой.
Этот способ оказался успешным для автора исходной проблемы и является самым безопасным и простым. Часто в последующих релизах конфигураций разработчики 1С исправляют ошибки, связанные с процедурой обновления в РИБ.
Порядок действий:
Как показала практика, после обновления до самого актуального релиза процедура обновления в периферийной базе может "подвиснуть" на некоторое время, но затем успешно завершается. Этот метод стоит попробовать в первую очередь.
Это очень эффективный технический метод, который позволяет "обмануть" систему и заставить ее заново и корректно обработать уже загруженный файл обмена, но без повторной инициации конфликта. Метод не требует изменения конфигурации и является относительно безопасным.
Порядок действий:
/Run "e1cib/command/Обработка.РегистрацияИзмененийДляОбмена.Форма", хотя это может не сработать. Если доступ получить удалось, переходите к следующему шагу. Важно: этот способ сработает, если ошибка позволяет хотя бы на мгновение открыть основной интерфейс.Сброс номера заставит систему считать, что она еще не получала это сообщение, и инициировать процесс загрузки и обновления заново. Часто вторая попытка проходит успешно.
Внимание! Этот способ предназначен для опытных пользователей и программистов. Некорректное изменение кода может привести к полной неработоспособности базы. Обязательно сделайте резервную копию перед началом работ.
Суть метода заключается в том, чтобы найти и временно закомментировать строку кода, которая вызывает исключение и блокирует вход.
Порядок действий:
{ОбщийМодуль.ОбщегоНазначения.Модуль(2308)}. Это означает, что нам нужно открыть общий модуль ОбщегоНазначения и найти строку 2308.
// ... какой-то код проверки ...
Если ТребуетсяБлокировкаРаботыПользователей() Тогда
// Вот эта строка вызывает ошибку
ВызватьИсключение НСтр("ru = 'Вход в программу временно невозможен...'");
КонецЕсли;
// ...
//.
// ... какой-то код проверки ...
Если ТребуетсяБлокировкаРаботыПользователей() Тогда
// // Вот эта строка вызывает ошибку
// ВызватьИсключение НСтр("ru = 'Вход в программу временно невозможен...'");
КонецЕсли;
// ...
Иногда причина кроется не в коде, а в окружении: разные версии платформы 1С или проблемы с сетевым доступом к файлам обмена.
Порядок действий:
Если ничего из вышеперечисленного не помогло, остаются только кардинальные меры. Их следует применять в последнюю очередь.
Вариант А: Отключение от РИБ и повторное подключение
Этот метод заключается в том, чтобы временно сделать периферийную базу не-РИБ, обновить ее и снова включить в состав РИБ. Внимание: этот способ сопряжен с высоким риском потерять связь с центральным узлом навсегда.
Как показывает практика, при отключении главного узла в периферийной базе платформа 1С версии 8.3 удаляет информацию о центральной базе. Попытка "восстановить" подчинение после обновления, скорее всего, не удастся. Поэтому данный метод не рекомендуется.
Вариант Б: Полное пересоздание периферийного узла
Это самый надежный, хотя и трудоемкий, из радикальных методов.
Этот способ гарантированно решает проблему, так как вы начинаете с "чистого листа", но требует времени и может быть неудобен, если в периферийной базе есть неотправленные данные.
Чтобы минимизировать риск возникновения подобных ошибок в будущем, следуйте простым правилам: