Работа в файловом варианте базы данных 1С:Предприятие 8 накладывает определенные ограничения на производительность системы. Рано или поздно пользователи сталкиваются с тем, что программа начинает периодически зависать на несколько минут, диск нагружается под 90–100%, а работа буквально останавливается. При этом компьютер или ноутбук может обладать отличными характеристиками (например, процессор Intel Core i7 и 8–16 ГБ оперативной памяти), но это не спасает от «замираний» интерфейса.
В этой статье мы подробно разберем практический кейс, когда файловая база «1С:Бухгалтерия предприятия 3.0» регулярно зависает на 5–20 минут. Мы выясним неочевидные технические причины такого поведения, проанализируем влияние адресного классификатора ФИАС/ГАР, разберемся с особенностями разрастания нового журнала регистрации SQLite и оптимизируем регламентные задания.
---
Когда файловая база начинает вести себя нестабильно, большинство системных администраторов начинают стандартную проверку: смотрят загрузку процессора, тестируют жесткий диск на «битые» сектора и запускают тестирование и исправление (ТИИ) базы данных. Однако в файловой 1С часто срабатывают специфические внутренние механизмы СУБД и прикладного решения. Проанализируем ключевые факторы, вызывающие глухое зависание системы:
1Cv8.1CD и журнала регистрации 1Cv8.lgd при каждой микротранзакции, что приводит к росту очереди к диску.---
Рассмотрим ситуацию, когда при замере производительности в конфигураторе 1С во время очередного зависания мы видим, что более 90% процессорного времени занимает одна строка кода в общем модуле АдресныйКлассификаторСлужебный при вызове функции СведенияОЗагрузкеСубъектовРФ(). Программа зависает на строке:
РезультатВыборкиЗагруженныхСведений = Запрос.Выполнить();
Эта функция обращается к регистрам сведений АдминистративнаяИерархия и МуниципальнаяИерархия. Если в базу загружены классификаторы множества регионов (или всей РФ), объем этих таблиц превышает физические возможности файловой СУБД 1С для быстрой обработки информации. Запрос пытается просканировать миллионы записей без подходящих индексов, что приводит к зависанию программы на 10–20 минут.
Важное техническое замечание: В платформе 1С существовала зарегистрированная ошибка (№00-00701771), связанная с падением скорости работы с ФИАС. Для исправления ситуации у измерения РодительскийИдентификатор в регистрах иерархии требовалось установить свойство «Индексировать». Если у вас базовая версия 1С:Бухгалтерии (где конфигурация закрыта для редактирования), изменить свойства объекта вручную невозможно. В этом случае необходимо установить официальный патч (исправление) от фирмы 1С через меню «Администрирование» -> «Обслуживание» -> «Обновление программы» -> «Установленные исправления (патчи)».
Однако лучшим и самым надежным решением для файловой базы является полный отказ от локального хранения адресного классификатора ФИАС и переход на веб-сервис. Выполним следующие действия по шагам:
Теперь программа не будет хранить гигабайты адресных данных локально и не будет выполнять тяжелые поисковые запросы внутри файла 1Cv8.1CD. Поиск адресов будет происходить мгновенно через веб-сервис фирмы 1С.
---
Часто администраторы замечают странность: они пытаются «порезать» или сократить журнал регистрации через Конфигуратор («Администрирование» -> «Настройка журнала регистрации» -> «Сократить»), но физический размер файла 1Cv8.lgd на диске абсолютно не уменьшается.
Выясним причину. Современный журнал регистрации 1С представляет собой базу данных СУБД SQLite. Когда мы удаляем записи штатными средствами 1С, SQLite просто помечает эти страницы внутри файла как «свободные» для будущих записей, но сам файл на диске не уменьшает. Чтобы вернуть неиспользуемое пространство операционной системе, необходимо выполнить операцию дефрагментации файла лога.
Рассмотрим два варианта решения проблемы с разросшимся журналом регистрации.
Для того чтобы сжать файл 1Cv8.lgd без потери накопленной истории, выполним следующие действия:
1Cv8Log. Убедимся, что в этой папке отсутствуют временные файлы транзакций с расширениями .lgd-wal и .lgd-shm (их отсутствие гарантирует, что база SQLite закрыта корректно).1Cv8Log.
sqlite3.exe 1Cv8.lgd "vacuum;"
Утилита перестроит базу данных лога, удалит пустые страницы и физически сожмет файл на диске до его реального объема данных. В зависимости от исходного размера файла процедура может занять от нескольких минут до получаса.
Файловая СУБД SQLite на некоторых компьютерах работает крайне медленно из-за особенностей дисковых блокировок Windows. Для повышения стабильности и производительности файловой базы имеет смысл вернуть надежный текстовый формат журнала регистрации, который использовался в платформе 8.3.4 и более ранних версиях.
Выполним процедуру перехода на текстовый формат:
1Cv8Log.1Cv8.lgd в другую папку (если нам нужно сохранить историю событий). Из папки 1Cv8Log удаляем абсолютно все файлы.1Cv8Log обычный пустой текстовый файл и переименовываем его в 1Cv8.lgf (обратите внимание на расширение файла!).Платформа увидит наличие файла конфигурации журнала с расширением .lgf и автоматически переключит режим записи логов в текстовый формат. Логи будут создаваться в виде отдельных небольших файлов, разбитых по дням или месяцам. Такой журнал не подвержен фрагментации, не зависает при блокировках транзакций и его очень легко архивировать и очищать обычным удалением старых файлов.
---
В файловой версии базы данных 1С регламентные задания по умолчанию выполняются в фоновом режиме в рамках запущенного сеанса пользователя. Если пользователь работает один (как на локальном ноутбуке), программа запускает фоновые задания незаметно для него, но при этом они делят общие ресурсы процессора и жесткого диска.
В начале темы автор упомянул, что регламентное задание «Извлечение текста» выполнялось более 2 часов. Это критическая нагрузка. Данное задание отвечает за полнотекстовый поиск по содержимому прикрепленных файлов (договоры в формате Word, PDF-сканы актов и т.д.). В 99% случаев бухгалтеру эта функция не требуется.
Разберем, как отключить тяжелые и ненужные регламентные задания:
Обновление индекса ППД (Полнотекстового поиска данных);Слияние индекса ППД;Классификация контактов по сегментам;Автоматическое подавление молчания (если используется телефония);Отключение полнотекстового поиска и извлечения текста разгрузит дисковую подсистему и предотвратит внезапные падения производительности во время работы пользователя.
---
Для файловой базы 1С крайне важны параметры работы операционной системы. Проанализируем системные аспекты оптимизации:
Файловая 1С постоянно совершает тысячи мелких операций записи в один большой файл 1Cv8.1CD. Встроенный антивирус Windows Defender (или стороннее защитное ПО) при каждой такой микротранзакции перехватывает доступ к файлу, сканируя его на лету. Это вызывает рост дисковой очереди и загрузку диска до 90–100%.
Обязательно добавьте в список исключений вашего антивируса:
*.1CD, *.1CL, *.lgd, *.lgf.1cv8.exe и 1cv8c.exe.В файловой версии формата 1Cv8.1CD существует жесткое технологическое ограничение: размер одной таблицы внутри общего файла базы данных не может превышать 4 ГБ. Если у вас включен локальный адресный классификатор, то таблицы ФИАС/ГАР могут приблизиться к критическому лимиту в 4 ГБ. При достижении этой границы база данных начнет выдавать ошибки СУБД, завершать сеансы аварийно или полностью разрушит структуру таблиц, что приведет к невозможности зайти в программу. Регулярно проводите очистку старых классификаторов и сжатие базы через утилиту chdbfl.exe и механизм ТИИ («Сжатие таблиц»).
---
Мы детально проанализировали причины зависания файловой 1С:Бухгалтерии и разработали комплексный план оптимизации системы. Перевод адресного классификатора на использование веб-сервисов, очистка локальных тяжелых таблиц ФИАС, перевод журнала регистрации в текстовый формат .lgf (или сжатие базы SQLite) и отключение фонового извлечения текста гарантированно возвращают былую скорость работы файловой 1С даже на средних по характеристикам компьютерах.