Проблема длительного выполнения процедуры «Тестирование и исправление» (ТиИ) — одна из самых частых жалоб администраторов и программистов 1С, особенно при работе с файловым вариантом информационной базы. Ситуация, когда база объемом менее 3 Гб тестируется более 5–10 часов, не является нормальной. В этой статье мы подробно разберем, почему так происходит, и какие шаги помогут нам значительно ускорить процесс обслуживания информационной базы.
Рассмотрим техническую сторону вопроса. Как показывает практика, основной «бутылочным горлышком» при выполнении регламентных операций в 1С является дисковая подсистема. Если база располагается на обычном жестком диске (HDD), скорость операций ввода-вывода (IOPS) становится критическим ограничением. Процедура тестирования и исправления — это сотни тысяч мелких операций чтения и записи в разные таблицы.
Выясним причину: HDD тратит время на физическое перемещение головки диска, в то время как SSD выполняет эти операции практически мгновенно. Перенос базы на твердотельный накопитель (даже через интерфейс SATA, не говоря уже о NVMe) сокращает время тестирования в 3–5 раз. Если у вас нет возможности заменить диск на сервере, попробуйте скопировать базу на локальный SSD мощного компьютера, провести тестирование там, а затем вернуть файл 1Cv8.1CD обратно.
Проанализируем ситуацию с версиями платформы. В ветках 8.3.11 и начале 8.3.12 разработчиками был допущен баг, из-за которого работа с индексами и реструктуризация таблиц в файловом режиме замедлялась в десятки раз. Особенно это заметно на объекте РегистрБухгалтерии.Хозрасчетный.
Если вы заметили резкое увеличение времени проверки именно после обновления платформы, рекомендуем выполнить следующие действия:
8.3.10 (если конфигурация позволяет запуск на ней).8.3.15, 8.3.18 или выше. В новых версиях механизмы работы с файловыми данными были существенно оптимизированы.Разберем внутреннее устройство файла 1Cv8.1CD. По умолчанию старые базы имеют размер страницы данных 4 Кб. При росте базы свыше 2 Гб такая структура становится крайне неэффективной. Платформа вынуждена обращаться к огромному количеству страниц при выполнении запросов к тяжелым регистрам.
Для решения этой проблемы мы можем использовать утилиту cnvdbfl.exe, которая находится в папке bin установленной платформы. С её помощью можно конвертировать базу в формат с размером страницы 64 Кб (65536 байт). Это действие часто «оживляет» базу, ускоряя не только тестирование, но и повседневную работу пользователей.
Иногда причиной торможения становятся регистры, о которых мы забываем. Выясним, какие таблицы могут раздувать базу:
ВерсииОбъектов может содержать сотни тысяч записей, которые платформа обязана проверить на целостность. Если история изменений за прошлые годы вам не нужна, очистите этот регистр перед началом тестирования.Data History создает скрытые таблицы. Если база эксплуатируется долго (более 3 лет), объем этих данных может быть сопоставим с объемом полезной информации.Важно помнить: простое удаление записей из программы не уменьшает физический размер файла. Чтобы «вытряхнуть» пустоты, обязательно выберите пункт «Сжатие информационной базы» в настройках ТиИ или воспользуйтесь утилитой chdbfl.exe.
Рассмотрим еще один эффективный способ борьбы с внутренней фрагментацией и «мусором» в системных таблицах. Со временем в системных таблицах, таких как DBSchema или Params, могут накапливаться ошибки, которые не исправляются обычным тестированием.
Выполним следующие шаги для полной оптимизации:
.dt..dt в эту новую базу.Почему это помогает? При загрузке из .dt платформа создает файл 1Cv8.1CD с нуля, заново формируя все индексы и размещая таблицы максимально компактно. После такой процедуры последующее ТиИ проходит значительно быстрее.
Проанализируем влияние операционной системы. Windows по умолчанию пытается индексировать файлы для быстрого поиска. Когда 1С активно пишет в файл базы данных во время тестирования, служба поиска Windows (Search) или антивирус начинают «на лету» проверять каждое изменение. Это создает колоссальную нагрузку на диск.
Мы рекомендуем:
*.1CD, *.1cl, *.1ck из проверки в реальном времени.Если тестирование «зависает» на этапе пересчета итогов, проверим установленную границу рассчитанных итогов. В 1С:Бухгалтерии пересчет итогов идет по всем регистрам бухгалтерии и накопления. Если в базе есть документы десятилетней давности, а итоги рассчитаны по текущую дату, процесс будет долгим.
Посмотрим на последовательность действий:
Для продвинутых пользователей и системных администраторов можно автоматизировать предварительную очистку временных данных перед тестированием. Рассмотрим пример кода на языке 1С, который очищает очередь версионирования, что может сократить объем работы для ТиИ:
Набор = РегистрыСведений.ОчередьОбъектовДляВерсионирования.СоздатьНаборЗаписей();
Набор.Записать(); // Очищаем весь набор данных
Сообщить("Очередь версионирования очищена для ускорения тестирования.");
Используя этот комплексный подход — от обновления железа до тонкой настройки структуры базы — мы сможем сократить время тестирования базы 1С:Бухгалтерия 3.0 с мучительных 5 часов до приемлемых 30–40 минут.