Работа с файловыми базами 1С 8.2 и 8.3 часто сопряжена с проблемами производительности и неконтролируемого роста размера файла .1CD. Особенно остро это ощущается в конфигурации Управление торговлей 10.3, где интенсивный документооборот и большое количество пользователей (до 50 человек) создают колоссальную нагрузку на дисковую подсистему. В данной статье мы разберем причины резкого увеличения объема базы, проанализируем структуру журналов документов и выработаем пошаговый план по оптимизации системы.
Если ваша база начала расти скачкообразно (например, на 1 Гб в неделю), первое, что необходимо сделать — это провести глубокую диагностику. Рассмотрим основные инструменты, которые помогут нам в этом. Самым информативным средством для файловых баз является утилита Tool_1CD. С ее помощью мы проанализируем, какая именно внутренняя таблица занимает больше всего места.
Разберем ситуацию на примере таблицы _DOCUMENTJOURNAL6182. Если эта таблица (журнал документов) занимает значительный объем (сотни мегабайт или гигабайты), это сигнализирует о том, что в журнале хранятся избыточные данные. Журнал документов в 1С — это вспомогательная таблица, которая агрегирует данные из разных типов документов для быстрого отображения в списках. Основное «пузо» журнала формируют так называемые Графы журнала.
Проанализируем структуру журналов в конфигураторе:
Одним из самых эффективных способов «лечения» файловой базы является процедура выгрузки в файл .dt и последующей загрузки в новую чистую базу. Выясним, почему это помогает. Файловая база 1С склонна к внутренней фрагментации: при удалении объектов место в файле .1CD помечается как свободное, но не возвращается операционной системе. Реструктуризация при тестировании и исправлении (ТиИ) часто временно удваивает размер файла, так как 1С создает копии таблиц внутри того же файла.
Процесс оптимизации через dt выглядит следующим образом:
Этот метод позволяет полностью пересобрать индексы и физически удалить пустые пространства («дыры»), что часто уменьшает базу на 20-40%.
Помимо журналов документов, в УТ 10.3 существуют другие механизмы, способные быстро раздуть базу. Рассмотрим подробнее наиболее вероятных кандидатов:
1. Версионирование объектов. Если в базе включена подсистема версионирования, то при каждом изменении документа 1С сохраняет его полную копию в регистре сведений ВерсииОбъектов. Если какой-то процесс (например, обмен или групповая обработка) массово перезаписывает документы, база вырастет на гигабайты за считанные дни. Проверим размер таблиц, связанных с этим регистром, в Tool_1CD.
2. Регистры сведений с логами. Часто разработчики добавляют в конфигурацию механизмы логирования обменов. Проанализируем регистры, в названии которых есть слова «Лог», «Обмен», «Очередь». Если они не очищаются регламентно, их стоит очистить вручную через обработку.
3. Полнотекстовый поиск. Индексы полнотекстового поиска могут занимать значительный объем. Если пользователи не пользуются поиском «все везде» через CTRL+F, этот механизм лучше отключить в Администрирование — Настройка полнотекстового поиска.
Важно помнить о критическом ограничении файлового режима: размер любой внутренней таблицы (данных или индекса) не может превышать 4 Гб. Если ваш журнал _DOCUMENTJOURNAL приблизится к этому порогу, база выдаст ошибку «Ошибка СУБД: Файл базы данных поврежден».
Рассмотрим ситуацию, когда Тестирование и исправление (ТиИ) увеличивает базу. Это происходит из-за реструктуризации. Чтобы минимизировать этот эффект, всегда запускайте Сжатие таблиц после выполнения всех проверок в ТиИ. Сжатие — это единственный штатный способ внутри 1С физически пересобрать файл без создания временных копий для каждой таблицы.
Если вы определили, что журнал документов действительно перегружен, можно прибегнуть к программному изменению состава журнала. Допустим, мы хотим выяснить, какие документы создают наибольшее количество записей. Для этого можно воспользоваться консолью запросов:
ВЫБРАТЬ
ТИПЗНАЧЕНИЯ(Журнал.Ссылка) КАК ТипДокумента,
КОЛИЧЕСТВО(*) КАК КоличествоЗаписей
ИЗ
ЖурналДокументов.ДокументыКонтрагентов КАК Журнал
СГРУППИРОВАТЬ ПО
ТИПЗНАЧЕНИЯ(Журнал.Ссылка)
УПОРЯДОЧИТЬ ПО
КоличествоЗаписей УБЫВ
Проанализировав результат, мы можем увидеть, что, например, 90% записей журнала — это мелкие «Чеки ККМ», которые в этом общем журнале менеджерам не нужны. В таком случае стоит зайти в Конфигуратор и исключить данный тип документа из состава журнала. Это существенно уменьшит размер таблицы _DOCUMENTJOURNAL.
Чтобы база не росла бесконтрольно, внедрим следующие регламентные действия:
В заключение отметим, что для базы объемом 10 Гб с 50 пользователями файловый режим является критически опасным. При такой нагрузке любое аварийное завершение работы (отключение света, сбой сети) может привести к необратимой порче файла .1CD. Настоятельно рекомендуем рассмотреть переход на SQL-вариант (MS SQL, PostgreSQL). Это не только решит проблему с ростом таблиц, но и значительно повысит скорость работы за счет эффективного кэширования и параллельной обработки запросов.