Работа с файловыми базами данных 1С:Предприятие 7.7 на платформе DBF/CDX (CodeBase) в локальной сети часто сопровождается специфическими сетевыми сбоями. Типичная картина проблемы выглядит следующим образом: одна из рабочих станций (например, кассовый терминал на удаленной точке) внезапно прекращает работу, выводя череду критических ошибок, таких как Error #: -70 (Determine file length 1SConst.dbf), Error #: -50 (Error loading file 1CJourn.dbf) или Error #: -56 (Ошибка захвата таблицы). При этом компьютер продолжает успешно «пинговаться» по сети, но доступ к общей папке с базой данных и службам удаленного администрирования (например, RAdmin) полностью пропадает до перезагрузки.
В этой статье мы подробно разберем, почему возникают подобные сбои на стыке сетевых протоколов Windows и движка СУБД CodeBase, и рассмотрим комплексный алгоритм решения этой проблемы — от настройки операционной системы до устранения аппаратных неполадок на торговой точке.
Для начала проанализируем физическую суть возникающих ошибок. Движок CodeBase, используемый в файловой версии 1С 7.7, работает напрямую с файлами таблиц (.dbf) и индексов (.cdx) через сетевой протокол общего доступа к файлам Windows (SMB). В отличие от клиент-серверных СУБД, вся вычислительная нагрузка и операции чтения/записи происходят на локальном компьютере пользователя. Это означает, что 1С 7.7 постоянно гоняет огромные объемы мелких пакетов данных и непрерывно накладывает и снимает блокировки на файлы базы данных.
Разберем детально каждую из указанных ошибок:
1SConst.dbf), но сетевой дескриптор файла оказывается разорванным или заблокированным со стороны хост-компьютера. В результате функция возвращает ошибку, и работа платформы аварийно завершается.1CJourn.dbf). Если сеть кратковременно моргнет хотя бы на долю секунды в момент транзакции, операционная система «сервера» (компьютера, где лежит база) оставит этот файл монопольно заблокированным за «призрачной» сессией, а клиентский компьютер получит отказ.Ситуация, при которой низкоуровневый пинг (ICMP) стабильно идет, но высокоуровневые службы (NetBIOS, SMB, RAdmin) зависают, однозначно указывает на то, что сетевой стек на уровне L3 (сетевой уровень IP) функционирует нормально, но на уровне L7 (прикладной уровень приложений) произошла блокировка портов или переполнение лимитов операционной системы.
Рассмотрим пошагово методы устранения этой проблемы.
Если роль сервера (компьютера, на котором физически расположена база данных) выполняет обычная пользовательская операционная система (Windows 7, 10 или 11), мы неизбежно сталкиваемся со встроенными лицензионными ограничениями Microsoft.
В клиентских версиях Windows установлен жесткий лимит на количество одновременных входящих подключений по протоколу SMB (не более 20 подключений). Каждая открытая сессия 1С, подключенные сетевые принтеры, открытые папки и даже фоновые сетевые службы расходуют этот лимит. При его превышении хост-компьютер начинает молча игнорировать новые запросы на подключение, из-за чего кассовые терминалы моментально теряют базу данных, а администраторы не могут подключиться по RAdmin.
Кроме того, в Windows по умолчанию активен механизм автоматического отключения простаивающих сессий (Autodisconnect). Если кассовый аппарат некоторое время простаивает без пробития чеков, операционная система разрывает сетевую сессию. При следующей попытке обращения к базе данных 1С 7.7 пытается восстановить соединение, но старый сетевой код платформы часто не справляется с этим корректно, вызывая зависание файлов и ошибки блокировки.
Для решения этой проблемы выполним принудительную настройку службы сервера. Запустим командную строку от имени администратора на хост-компьютере и выполним следующую команду:
net config server /autodisconnect:-1
Эта команда отключает автоматический разрыв сетевых соединений при простое, обеспечивая постоянную стабильную сессию для кассового терминала.
Современные операционные системы и драйверы сетевых карт по умолчанию настроены на агрессивное энергосбережение. Для обычного серфинга в интернете это незаметно, но для чувствительной к задержкам СУБД CodeBase уход сетевой карты в спящий режим даже на миллисекунду приводит к фатальному разрыву сессии.
Проанализируем процедуру отключения энергосбережения на проблемной кассовой машине и сервере:
Energy Efficient Ethernet (Энергоэффективный Ethernet);Green Ethernet (Зеленый Ethernet);System Idle Power Down (Снижение мощности при простое).Поскольку файловая 1С 7.7 передает по сети гигантское количество мелких пакетов с транзакциями, стандартные аппаратные оптимизации современных сетевых карт могут вредить стабильности обмена данными. Нам необходимо отключить функции, которые пытаются программно «склеивать» или модифицировать пакеты на уровне чипа сетевой карты.
В свойствах сетевой карты на вкладке Дополнительно найдем и отключим (Disabled) следующие параметры:
Оппортунистические блокировки (Oplocks) — это механизм кэширования сетевых файлов на стороне клиента, используемый в ОС Windows для ускорения работы с файловыми серверами. Если одна касса открывает файл таблицы 1С, Windows кэширует его часть локально. Когда вторая касса пытается записать данные в этот же файл, сервер должен скомандовать первой кассе сбросить кэш. В условиях нестабильной работы сети этот механизм часто дает сбой, приводя к ошибкам захвата таблиц (ошибка -56) и разрушению индексов.
Для надежной работы 1С 7.7 оппортунистические блокировки на хост-компьютере (сервере) необходимо полностью отключить.
Выполним это через системный реестр:
Win + R, введем regedit и нажмем Enter.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
EnableOplocks и присвоим ему значение 0.OplocksDisabled и присвоим ему значение 1.Особое внимание обратим на тот факт, что при тестировании компьютера в условиях офиса в течение суток сбоев не наблюдалось, а на торговой точке проблемы возникают регулярно. Это указывает на локальные дестабилизирующие факторы непосредственно на кассовом узле.
Проанализируем ключевые физические и аппаратные причины:
Не исключим и программные факторы. Фоновые процессы, вирусная активность или работа некоторых защитных программ могут блокировать исходящий сетевой трафик к базе данных.
Рекомендуем выполнить следующие действия:
msconfig отключим все неиспользуемые программы, запускающиеся вместе с системой (торрент-клиенты, сторонние менеджеры обновлений, лишние службы мониторинга).Таким образом, последовательное выполнение предложенных шагов — от замены встроенной сетевой карты на дискретную до тонкой настройки параметров SMB, автоотключения сессий и энергосбережения в Windows — позволит полностью устранить сетевые сбои CodeBase и гарантировать стабильную работу файловой базы 1С 7.7 на торговой точке.