При работе с файловыми базами данных 1С:Предприятие в многопользовательском режиме по локальной сети системные администраторы и специалисты часто сталкиваются со странным поведением системы. Сценарий выглядит следующим образом: на основном компьютере, где физически расположена база данных, обновление конфигурации проходит абсолютно штатно и успешно. Версия конфигурации повышается, база открывается в режиме «1С:Предприятие» без каких-либо нареканий. Однако при попытке запустить эту же базу со второго рабочего места по локальной сети система неожиданно выдает сообщение: «Вход в программу временно невозможен в связи с обновлением», либо, что еще хуже, начинает выполнять процедуру обновления заново, пытаясь откатить конфигурацию на более низкую версию.
В этой статье мы подробно разберем, почему возникает этот критический сбой, проанализируем скрытые механизмы сетевого кэширования Windows, изучим влияние блокировок Библиотеки Стандартных Подсистем (БСП) и рассмотрим пошаговые инструкции по устранению и предотвращению подобных ситуаций.
Основная причина, по которой клиентский компьютер при запуске базы по локальной сети «не видит» уже выполненного обновления и пытается инициализировать его заново или блокирует вход, кроется не в самой платформе 1С, а в механизмах оптимизации сетевого трафика операционной системы Windows. При использовании стандартного общего доступа к файлам (протокол SMB) операционная система активно применяет кэширование для снижения нагрузки на сеть.
Рассмотрим подробнее два ключевых компонента этого процесса:
1Cv8.1CD локально. Когда вы обновляете базу на сервере, клиентский компьютер из-за активности службы CSC продолжает обращаться к своей локальной, устаревшей «копии» файла. Платформа 1С считывает старые метаданные из этого локального кэша и считает, что база еще не обновлена, запуская повторные деструктивные процедуры реструктуризации.Само по себе сообщение «Вход в программу временно невозможен в связи с обновлением» генерируется программным кодом Библиотеки Стандартных Подсистем (БСП), на которой построены практически все современные конфигурации, включая «1С:Розница 2», «1С:Бухгалтерия» и другие. В процессе обновления конфигурации БСП программно устанавливает признак блокировки сеансов пользователей.
Если обновление на основном компьютере уже успешно завершилось, но клиентский компьютер обратился к сетевому ресурсу со старым кэшем метаданных, БСП фиксирует незавершенность или конфликт версий. Программа считает, что процесс обновления был аварийно прерван или все еще продолжается на другом узле, после чего намертво блокирует базу для всех входящих подключений, записывая параметры блокировки во внутренние таблицы и создавая файл блокировки 1Cv8.cdn.
Проанализируем пошагово, как исправить эту проблему и вернуть базу в работоспособное состояние.
Первое, что необходимо сделать — полностью уничтожить временные файлы 1С на проблемном компьютере. Обычного удаления базы из списка запуска и ее повторного добавления может быть недостаточно, так как папки кэша жестко привязываются к уникальным идентификаторам баз.
Выполним очистку вручную:
1cv8.exe и 1cv8c.exe через «Диспетчер задач».%localappdata%\1C\1Cv8 и нажмем Enter.2a8d3e5b-7f9a...).%appdata%\1C\1Cv8 и также очистим все папки с уникальными идентификаторами.После этого локальный программный кэш платформы на клиентском компьютере будет полностью обнулен.
Чтобы гарантированно заставить операционную систему клиентского ПК заново прочитать реальные файлы базы данных с главного компьютера, необходимо сбросить кэш сетевой папки. Проверенным и самым быстрым способом является пересоздание сетевой «шары» с изменением имени каталога.
Рассмотрим этот процесс:
C:\1C_Bases\Retail, скопируем ее в C:\1C_Bases\Retail_New).Для того чтобы в будущем избежать зависания сетевых метаданных, крайне рекомендуется отключить кэширование протокола SMB на уровне операционной системы. Это гарантирует, что любое изменение файлов базы данных на сервере будет мгновенно становиться известным клиентским рабочим станциям.
Выполним эту настройку с помощью PowerShell. На клиентском компьютере (ПК-2) запустим консоль PowerShell от имени Администратора и выполним следующую команду:
Set-SmbClientConfiguration -DirectoryCacheLifetime 0 -FileInfoCacheLifetime 0 -FileNotFoundCacheLifetime 0 -Force
Эта команда устанавливает время жизни кэша директорий, информации о файлах и кэша отсутствующих файлов в значение 0 (то есть полностью отключает кэширование метаданных сетевой файловой системы).
Если вы предпочитаете настраивать систему через реестр Windows, то откройте regedit, перейдите в ветку:
HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters
Создайте там три параметра типа DWORD (32 бита) со значением 0:
DirectoryCacheLifetimeFileInfoCacheLifetimeFileNotFoundCacheLifetimeПосле изменения реестра или выполнения команды PowerShell необходимо перезагрузить компьютер.
Если база данных на сервере оказалась заблокированной из-за аварийного завершения или ложного срабатывания сетевого кэша, нам потребуется снять блокировку вручную.
Проанализируем два основных метода:
Метод 1: Удаление файла блокировки 1Cv8.cdn
В каталоге файловой базы данных при установке блокировок создается служебный файл 1Cv8.cdn. Если в данный момент в базе нет активных пользователей (это можно проверить, убедившись в отсутствии файлов 1Cv8.1cl или 1Cv8.lgd-journal), просто удалите файл 1Cv8.cdn из папки с базой данных. Это мгновенно снимет внешнюю блокировку платформы.
Метод 2: Параметры запуска для принудительного входа
Если блокировка прописалась на уровне констант самой конфигурации в информационной базе, мы можем войти в программу в обход запрета. Для этого выполним следующие действия:
/C РазрешитьРаботуПользователей
Если регламентные процедуры обновления внутри базы данных предприятия зависли или выполнились не до конца, мы можем форсировать их завершение, указав в параметрах запуска другой ключ:
/C ЗапуститьОбновлениеИнформационнойБазы
Запуск с этим ключом принудительно инициирует выполнение всех отложенных обработчиков обновления БСП в монопольном режиме и корректно завершит процесс модернизации метаданных.
Работа с файловой базой данных 1С через общие сетевые папки (шары) — это устаревший и небезопасный метод. Любой сетевой сбой, кратковременный обрыв Wi-Fi соединения или зависание клиентского компьютера во время записи транзакции могут полностью разрушить структуру файла 1Cv8.1CD.
Рассмотрим наиболее надежное и современное альтернативное решение — публикацию базы данных на локальном веб-сервере (IIS или Apache). При такой схеме работы:
Для публикации базы выполним следующие простые действия:
http://имя_сервера/Retail).Использование этого метода навсегда избавит вашу систему от проблем с рассинхронизацией сетевого кэша, существенно ускорит работу программы на клиентских местах и защитит базу данных от фатальных повреждений.