Проблема «Ожидания блокировки таблицы "Журналы"» в версии 1С:Предприятие 7.7 является одной из самых трудноизлечимых для крупных файловых баз. Ситуация, когда система «замирает», а пользователи не могут совершить ни одного действия, часто сопровождается тем, что визуально никто не выполняет тяжелых операций. В этой статье мы подробно разберем, почему возникает эта ошибка, какие механизмы лежат в ее основе и как восстановить работоспособность системы без постоянного выгона всех пользователей из базы.
Для начала проанализируем структуру базы данных 1С 7.7 в файловом режиме (DBF). За таблицу журналов отвечает файл 1SJOURN.DBF. Это один из самых «нагруженных» файлов в системе, так как в него записываются данные при создании или изменении практически любого документа (дата, номер, вид документа, флаги проведения и т.д.). Любая транзакция, связанная с документами, так или иначе блокирует этот файл.
Рассмотрим основные факторы, приводящие к «мертвой» блокировке:
1SJOURN.DBF приводит к конфликту доступа.Выясним, не достигла ли ваша база критических отметок. Если файл 1SJOURN.DBF или файлы регистров (например, RG*.DBF) превышают 1 ГБ, штатные механизмы блокировок Windows начинают работать некорректно. Система не может быстро вычислить смещение байтов для установки блокировки, что вызывает бесконечное ожидание.
Разберем шаги по уменьшению размера:
1cv7.mlg в папке SYSLOG. Если он огромен, 1С может тратить значительное время на запись в него, удерживая общие блокировки. Просто переименуйте или удалите его.Проанализируем ситуацию с сетевым доступом. Если база лежит на сервере, а пользователи работают через RDP или по сети, критически важно настроить взаимодействие с файловой системой. В современных ОС Windows по умолчанию включены «оппортунистические блокировки» (Oplocks), которые позволяют клиенту кэшировать части файла локально. Для 1С 7.7 это губительно.
Для решения проблемы на стороне сервера необходимо внести изменения в реестр (будьте осторожны, всегда делайте бэкап реестра перед правками):
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"EnableOplocks"=dword:00000000
"Size"=dword:00000003
Также рекомендуется на клиентских машинах (или на терминальном сервере) отключить кэширование каталогов в протоколе SMB2/3, добавив параметры в ветку:
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters]
"DirectoryCacheLifetime"=dword:00000000
"FileNotFoundCacheLifetime"=dword:00000000
"FileInfoCacheLifetime"=dword:00000000
Эти настройки заставят систему чаще обращаться к диску и не «залипать» на кэшированных данных, что существенно снижает частоту возникновения ошибки ожидания блокировки.
Выясним, не блокирует ли файлы сама операционная система. Часто антивирус, пытаясь проверить файл в момент его изменения пользователем 1С, накладывает свою блокировку. Пока антивирус не «отпустит» файл, 1С будет выдавать ошибку у всех остальных участников процесса.
Посмотрим, что нужно сделать:
1cv7.exe и 1cv7s.exe в список доверенных программ.*.cdx) и файлы блокировок (*.lck).Если ошибка уже возникла и «никто ничего не делает», но работа стоит, попробуем снять блокировку точечно. Вместо того чтобы выгонять всех, выполним следующие действия на сервере:
1SJOURN или имеют расширение .cdx.1cv7.exe с нулевой загрузкой процессора, которые остались после некорректного завершения сессии. Завершите их принудительно.Как показывает практика обсуждения, если база данных интенсивно используется и ее файлы превышают 1 ГБ, работа в DBF-формате всегда будет сопряжена с риском блокировок. Разберем, как правильно подойти к переходу на SQL, если стандартная выгрузка через .dt (или просто «Загрузить из архива») не помогает или длится бесконечно долго.
Для успешного перехода в условиях огромных данных рекомендуется:
bkend.dll или использовать специальные патчи (например, «Secret Net» или сборки от сообщества), которые подменяют запросы к системным таблицам SQL.Если вы используете компоненты CPP или FORMEX, убедитесь, что они обновлены до последних версий. Некоторые старые версии ВК могли некорректно работать с транзакциями, оставляя их открытыми при возникновении внутренних ошибок кода. Проанализируйте глобальный модуль на предмет длительных циклов в обработчиках ПриЗаписи или ПриПроведении, которые могут «держать» таблицу журналов дольше необходимого.
Подводя итог, можно сказать: ошибка блокировки в 1С 7.7 — это почти всегда комплексная проблема инфраструктуры и размера данных. Начните с настройки реестра (OpLocks) и исключений антивируса, это помогает в 80% случаев без кардинальных изменений в коде.