При работе в многопользовательском режиме с файловой базой данных 1С:Предприятие 8 часто возникает критическая ошибка: «не удалось зафиксировать таблицу для чтения copiedprm» (или аналогичная для таблицы sessions). Эта проблема парализует работу пользователей, не позволяя войти в систему или выполнить стандартные операции. Как правило, корень зла кроется в механизмах файловых блокировок операционной системы или некорректной работе сетевых протоколов при обращении к файлу 1Cv8.1CD.
В этой статье мы подробно разберем, почему файловая версия 1С так чувствительна к сетевым задержкам, и совместно разработаем пошаговый план устранения данной неисправности.
Прежде чем переходить к активным действиям, проанализируем ситуацию. В файловом варианте 1С управление блокировками таблиц ложится на плечи операционной системы и внутреннего менеджера платформы. Таблица copiedprm отвечает за хранение копий параметров сеанса и временных настроек. Когда один пользователь обращается к ней, система ставит «замок». Если из-за сетевого сбоя, антивируса или настроек сервера этот замок не снимается вовремя или другой клиент не может дождаться своей очереди, возникает ошибка фиксации таблицы.
Рассмотрим наиболее простой и часто помогающий метод. Локальный кэш метаданных может содержать устаревшие ссылки на структуру таблиц, что вызывает конфликты при обращении к copiedprm. Выполним процедуру переподключения информационной базы.
Этот метод заставляет платформу создать новую папку для кэша с уникальным идентификатором. Если ручная перерегистрация не помогла, разберем способ принудительного удаления папок кэша. Проанализируем содержимое каталогов пользователя:
%AppData%\1C\1Cv8\%LocalAppData%\1C\1Cv8\Внутри этих папок находятся каталоги с именами-идентификаторами (например, 56e7...). Удалим их все при закрытых сеансах 1С. Это гарантирует, что при следующем запуске программа заново считает структуру таблиц copiedprm и sessions.
Выясним причину, по которой блокировка может «подвиснуть» на стороне сервера. В каталоге с базой данных, помимо основного файла 1Cv8.1CD, в процессе работы создаются вспомогательные файлы блокировок. Проделаем следующие действия:
*.1cl, *.tmp и *.lgp (если они есть и не относятся к журналу регистрации).1Cv8.cfl — это файл блокировки конфигурации.После удаления этих «хвостов» попробуем запустить базу в монопольном режиме.
Если ваша база расположена на сетевом хранилище под управлением FreeNAS или другой Linux-системы, проанализируем настройки протокола SMB (Samba). Одной из главных проблем файловой 1С являются оппортунистические блокировки (Oplocks).
Рассмотрим, как это работает: клиент запрашивает файл и сообщает серверу, что будет его кэшировать локально. Если другой клиент хочет тот же файл, сервер должен попросить первого сбросить кэш. В условиях сети этот механизм часто дает сбой, вызывая ошибку «не удалось зафиксировать таблицу». Для решения проблемы на стороне сервера (Samba) рекомендуется отключить следующие параметры:
oplocks = no
level2 oplocks = no
kernel oplocks = no
Также проверим версию протокола. Если в сети работают компьютеры с Windows 7 и Windows 10 одновременно, установим минимальную версию протокола SMB 2.1 или SMB 3.0 для всех участников процесса, чтобы избежать конфликтов при согласовании блокировок.
Проанализируем права пользователей на папку с базой. Для корректной работы механизма блокировок copiedprm пользователю недостаточно прав «Чтение и запись». Необходимо предоставить права на «Изменение» и «Удаление» файлов в этом каталоге. Если пользователь не может удалить временный файл блокировки .1cl, таблица останется заблокированной для всех остальных.
Разберем влияние защитного ПО. Антивирусы часто блокируют доступ к файлу 1Cv8.1CD в момент его сканирования. Добавим следующие объекты в исключения антивируса на всех рабочих станциях и сервере:
*.1CD, *.1CL, *.1CT, *.1CJ.Рассмотрим ситуацию, когда ошибка возникает спонтанно у одного или двух пользователей. Выясним, не «засыпает» ли сетевая карта клиента. В файловом режиме даже микро-разрыв соединения приводит к тому, что сессия в таблице sessions зависает, а таблица copiedprm блокируется «призрачным» процессом.
Это обеспечит стабильный дескриптор файла базы данных на протяжении всего рабочего дня.
Если вышеописанные методы не помогли, проанализируем целостность самой структуры таблицы copiedprm. Воспользуемся встроенными средствами 1С. Перед выполнением обязательно создадим резервную копию!
Именно реструктуризация позволяет пересоздать таблицу copiedprm с нуля, перенеся в нее данные из старой поврежденной структуры. Если в процессе возникнут ошибки, также воспользуемся утилитой chkdbfl.exe, которая находится в папке bin установленной платформы 1С.
Подводя итог, отметим: файловый режим 1С по сети — это всегда риск. Если количество пользователей превышает 3–5 человек, а размер базы перешагнул отметку в 2 Гб, мы рекомендуем рассмотреть переход на клиент-серверный вариант (SQL), где управление блокировками реализовано на гораздо более надежном уровне.