Как обеспечить стабильную работу файловой базы 1С:Управление торговлей 11 при многопользовательском доступе?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Рассмотрим классическую техническую проблему, с которой сталкиваются многие растущие компании. Имеется производительный сервер (процессор Intel Xeon, 16 ГБ оперативной памяти, быстрый RAID-массив из SSD-накопителей) и отличная локальная сеть. В базе данных конфигурации «1С:Управление торговлей 11» (УТ 11) активно работают около 10 пользователей: кассиры бьют чеки, бухгалтеры проводят первичные документы, менеджеры строят тяжелые отчеты. База работает в файловом режиме, ее объем составляет около 3,5 ГБ.

Несмотря на избыточную мощность серверного оборудования, пользователи регулярно сталкиваются с внезапными вылетами из программы. После этого системному администратору приходится запускать утилиту тестирования и исправления chdbfl.exe или проводить аналогичную процедуру через Конфигуратор, что парализует работу компании на несколько часов. Выясним причину, почему отличное «железо» не спасает от повреждения таблиц базы данных, и разберем по шагам, как решить эту проблему раз и навсегда.

Почему файловая база по сети постоянно повреждается (ошибки СУБД)

Проанализируем архитектуру файлового режима работы 1С. Когда база данных лежит в общей папке (сетевой ресурс), каждый запущенный на клиентском компьютере сеанс 1С напрямую считывает и записывает данные в один и тот же файл 1Cv8.1CD. Взаимодействие происходит по сетевому протоколу SMB.

Главная уязвимость такой схемы кроется в механизме кэширования Windows, который называется оппортунистическими блокировками (Opportunistic Locks, Oplocks). Этот механизм создан для ускорения работы с файлами по сети: клиентский компьютер кэширует часть данных у себя локально и задерживает отправку изменений на сервер. Если в этот момент происходит микросекундный сбой сети (например, сетевая карта кратковременно ушла в режим энергосбережения или Wi-Fi-соединение переподключилось), транзакция прерывается. Сервер считает файл закрытым, а клиент — открытым. Происходит рассинхронизация, приводящая к разрушению внутренней структуры базы данных 1С.

Для минимизации таких рисков выполним следующие действия:

  1. Отключим Oplocks на сервере. Это заставит Windows записывать данные на диск немедленно, минуя опасный сетевой кэш. Для этого создадим и применим файл реестра со следующим содержимым:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters]
"OplocksDisabled"=dword:00000001
"EnableOplocks"=dword:00000000
  1. Настроим сетевые карты. На сервере и на всех клиентских ПК зайдем в Диспетчер устройств, откроем свойства сетевой платы и во вкладке «Управление электропитанием» снимем галочку с пункта «Разрешить отключение этого устройства для экономии энергии». Также в дополнительных свойствах карты отключим функции Green Ethernet и Energy Efficient Ethernet.

Убийственное влияние регламентных и фоновых заданий в УТ 11

Конфигурация «1С:Управление торговлей 11» — это технологически сложная система, которая содержит сотни фоновых процессов (расчет себестоимости, извлечение текстов для поиска, обновление классификаторов, загрузка курсов валют и т. д.).

В файловом режиме работы регламентные задания не выполняются на сервере обособленно. Они запускаются неявно прямо внутри сеансов обычных пользователей. Когда у менеджера или бухгалтера в фоне внезапно стартует тяжелый процесс расчета, его компьютер начинает зависать. В этот момент монопольно блокируются таблицы базы данных. Другие пользователи получают ошибку таймаута блокировки и вылетают из программы.

Выясним, как это исправить:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F "C:\Proekt\Base1C" /N "ServiceRobot" /P "Password" /AllowExecuteScheduledJobs -Force

При этом у всех остальных пользователей выполнение регламентных заданий в настройках информационной базы следует заблокировать.

Критический барьер размера базы данных (3,5 ГБ)

Файловая СУБД 1С имеет жесткое внутреннее ограничение: размер любой отдельной таблицы внутри файла 1Cv8.1CD (например, таблицы итогов регистров накопления или журнала регистрации) не может превышать 4 ГБ. База автора весит 3,5 ГБ, а это значит, что некоторые наиболее заполненные таблицы уже вплотную приблизились к критической отметке.

При достижении этого лимита база начнет не просто зависать, а аварийно закрываться при попытке записать любой новый документ. Чтобы этого избежать, регулярно выполняйте обслуживание базы данных:

  1. Запустите Конфигуратор в монопольном режиме.
  2. Откройте меню Администрирование — Тестирование и исправление...
  3. Выберите пункт «Сжатие таблиц информационной базы». Это освободит место, которое ранее занимали удаленные объекты.
  4. Настройте ротацию Журнала регистрации. Перейдите в настройки журнала регистрации и ограничьте глубину хранения данных (например, храните историю только за последние 3 месяца), так как разросшийся лог часто становится причиной сбоев.

Бюджетная альтернатива дорогостоящему Microsoft RDS (Терминалу)

Наиболее надежный способ работы с файловой базой — запуск всех пользователей локально на том же компьютере, где физически лежит база данных. В этом случае сетевой протокол SMB полностью исключается из цепочки транзакций. Если у пользователя моргнет сеть, то оборвется лишь картинка его RDP-сессии, а сам сеанс 1С на сервере продолжит корректно работать и транзакция не прервется.

Классическое развертывание терминального сервера от Microsoft требует покупки серверной ОС и лицензий доступа RDS CAL на каждого пользователя, что крайне дорого. Однако существуют сертифицированные и полностью легальные альтернативные решения:

Данные программы устанавливаются поверх стандартной операционной системы (даже клиентских версий Windows, хотя рекомендуется использовать стабильную Windows Server) и позволяют организовать полноценный многопользовательский терминальный доступ по протоколу RDP. Стоимость таких бессрочных лицензий в разы ниже, а стабильность работы базы 1С возрастает до абсолютного максимума.

Публикация базы на Web-сервере: переходим на тонкий клиент

Если терминальный сервер по каким-то причинам не подходит, лучшим выходом будет публикация базы данных на веб-сервере. При такой схеме к файлу 1Cv8.1CD обращается только один локальный процесс самого веб-сервера. Пользователи работают через Тонкий клиент 1С, отправляя облегченные HTTP/HTTPS запросы.

Разберем важный нюанс: часто системные администраторы по привычке настраивают веб-сервер Apache под ОС Windows. В условиях многопоточной работы под Windows веб-сервер Apache ведет себя крайне нестабильно, часто допуская утечки оперативной памяти и вызывая зависания сессий.

Рекомендуется использовать встроенный в Windows Server веб-сервер IIS (Internet Information Services). Он работает на уровне ядра ОС, превосходно распределяет пулы соединений и обеспечивает бесперебойную работу тонких клиентов 1С даже при нестабильных каналах связи.

Для оптимизации работы в локальной сети при публикации базы на IIS выполните следующие настройки тонкого клиента:

Использование данных методов позволит полностью прекратить регулярное повреждение таблиц базы данных и обеспечит комфортную, быструю работу пользователей в системе «1С:Управление торговлей 11» без лишних финансовых затрат.

← На главную