При организации работы в небольших магазинах часто выбирают простой файловый вариант базы 1С, размещая каталог базы на одном из компьютеров и подключая кассиров через общий сетевой ресурс (папку SMB). Однако при такой схеме регулярно возникает критическая ситуация: кассы внезапно закрываются с ошибкой «Файл базы данных поврежден», торговля останавливается, а администратору приходится закрывать магазин и запускать тестирование и исправление.
Разберем детально, почему это происходит, как восстановить работоспособность базы и какие архитектурные изменения необходимо внедрить, чтобы исключить падения в будущем.
Файловая база данных 1С представляет собой единый файл 1Cv8.1CD. Когда несколько пользователей открывают этот файл одновременно по локальной сети через общую папку, каждый клиент 1С самостоятельно считывает и записывает данные через протоколы SMB2 или SMB3.
Рассмотрим главные факторы риска, приводящие к сбою файловой структуры:
Directory Leasing и Opportunistic Locking (OpLocks). Когда один кассовый компьютер кэширует изменения локально, а второй пытается выполнить транзакцию в тот же блок файла, происходит рассинхронизация блокировок и повреждение заголовков таблиц.1Cv8.1CD, провоцируя отказ подсистемы ввода-вывода 1С.Если ошибка уже возникла, проанализируем последовательность действий для безопасного восстановления структуры базы.
1Cv8.1CD в отдельный каталог. Даже поврежденный файл является единственным источником данных.C:\Program Files\1cv8\номер_версии\bin) и запустим утилиту chkdbfl.exe. Выберем наш файл базы, установим флаг «Исправлять обнаруженные ошибки» и выполним проверку целостности физических таблиц.Конфигуратор, перейдем в меню Администрирование > Тестирование и исправление, выберем проверки логической и ссылочной целостности, а также реиндексацию таблиц.%LocalAppData%\1C\1cv8 и %AppData%\1C\1cv8, чтобы исключить влияние битых конфигурационных кэшей.Если архитектуру базы пока невозможно изменить, выполним обязательную системную настройку оборудования:
*.1CD в список исключений антивирусных мониторов на всех компьютерах.Energy Efficient Ethernet и Green Ethernet.Прямой доступ к файлу 1Cv8.1CD через общую папку никогда не гарантирует стопроцентной стабильности при многопользовательской нагрузке. Для полного исключения падений выберем один из надежных сценариев работы.
1. Настройка распределенной информационной базы (РИБ)
Для конфигурации 1С:Розница механизм РИБ по рабочим местам кассиров является штатным стандартом. На каждом кассовом компьютере создается собственная локальная база данных (узел РИБ). Касса проводит чеки в локальный файл автономно. Обмен данными с центральным узлом оператора выполняется в фоновом режиме. Если сеть пропадет или ПК оператора перезагрузится, кассиры продолжат непрерывно отпускать товар.
2. Публикация базы на веб-сервере (Apache или IIS)
Бесплатное решение, не требующее покупки серверных лицензий. База публикуется на компьютере оператора через встроенный веб-сервер, а кассиры подключаются по протоколу HTTP через тонкий клиент 1С. В этом случае к файлу 1Cv8.1CD локально обращается только процесс веб-сервера, а прямое сетевое взаимодействие через папки Windows полностью исключается.
3. Подключение через терминальный сервер
Кассиры запускают удаленный сеанс на компьютере-сервере через RDP. Все процессы платформы 1С выполняются локально в оперативной памяти одного сервера, благодаря чему обрывы связи сетевых клиентов не могут повредить структуру файла базы.
4. Переход на клиент-серверный вариант (СУБД)
Использование лицензии «1С:Предприятие 8.3. Сервер МИНИ на 5 пользователей» в связке с бесплатной СУБД PostgreSQL. Вся обработка транзакций делегируется серверу баз данных. Механизм транзакционных логов СУБД защищает данные от сбоев при любых авариях на клиентах, полностью исключая ошибку повреждения файла базы.