Работа в файловом режиме 1С имеет свои технологические ограничения, с которыми рано или поздно сталкиваются развивающиеся компании. Одной из самых неприятных проблем является ошибка: «Превышен максимально допустимый размер внутреннего файла». Ситуация осложняется тем, что база может перестать открываться или выдавать критическую ошибку при выполнении привычных действий, например, при отправке отчетности или открытии форм.
В этой статье мы подробно разберем, почему возникает эта проблема, как найти «виновную» таблицу и какими способами можно вернуть базу к жизни, даже если её общий размер кажется небольшим.
Для начала проанализируем внутреннюю структуру файла 1Cv8.1CD. Несмотря на то, что для операционной системы это один файл, внутри него платформа 1С организует собственную файловую систему. Каждая таблица (документы, справочники, регистры) и её индексы хранятся как отдельные внутренние объекты.
В стандартном формате базы 1С используется размер страницы данных 4 Кб. Из-за особенностей 32-битной адресации внутри формата, размер одной внутренней таблицы не может превышать 4 Гб. Таким образом, даже если ваша база весит всего 6 или 8 Гб, но одна конкретная таблица (например, история изменений или настройки пользователей) достигла порога в 4 Гб, система выдаст ошибку и прекратит запись данных. Для выявления таких разросшихся таблиц можно использовать инструмент для анализа объёма базы данных.
В рассматриваемом случае ошибка при запросе к /e1cib/logForm часто указывает на переполнение таблицы _SystemSettings, где хранятся настройки окон, отчетов и форм пользователей.
Это наиболее эффективный и современный способ решения проблемы без перехода на полноценный SQL-сервер. Начиная с версии платформы 8.3.8, 1С позволяет использовать размер страницы до 64 Кб. Это увеличивает максимально допустимый размер одной таблицы с 4 Гб до 64 Гб.
Для реализации этого метода воспользуемся штатной утилитой cnvdbfl.exe, которая находится в папке bin установленной платформы. Рассмотрим пошаговый алгоритм выполнения операции:
Для проверки используем следующую команду:
"C:\Program Files (x86)\1cv8\8.3.x.xxxx\bin\cnvdbfl.exe" -i "C:\Users\Пользователь\Documents\InfoBase\1Cv8.1CD"
Если проверка прошла успешно, приступим к конвертации. Мы установим параметр -p 64K, который задает новый размер страницы:
"C:\Program Files (x86)\1cv8\8.3.x.xxxx\bin\cnvdbfl.exe" -c -p 64K "C:\Users\Пользователь\Documents\InfoBase\1Cv8.1CD"
Важные замечания по этому методу:
Если мы не хотим менять структуру файла, нам необходимо выяснить, какая именно таблица переполнена, и очистить её. Рассмотрим, как проанализировать состав базы.
Воспользуемся сторонней утилитой Tool_1CD (используйте её только на копии базы!). Открыв файл базы в этой программе, мы сможем увидеть список всех внутренних таблиц и их физический размер. Обратим внимание на следующие таблицы:
_SystemSettings — настройки пользователей. Если их никогда не чистили, они могут занимать гигабайты._DataHistory — история данных (версионирование)._InfoReg... — регистры сведений, которые могут хранить логи обменов или кэш сторонних сервисов._YearIndex — иногда некорректные даты в документах (например, 0001 год) приводят к созданию огромных индексов в регистрах накопления.Как выполнить очистку штатными средствами:
Проанализируем еще один важный момент: 1С не уменьшает физический размер файла .1CD при удалении данных. Она просто помечает блоки как свободные. Чтобы реально уменьшить размер файла и «схлопнуть» пустоты, необходимо выполнить Тестирование и исправление (ТиИ).
Разберем последовательность действий в конфигураторе:
В результате этой операции 1С пересоберет внутренние файлы, удалив фрагментацию. Часто это позволяет уменьшить размер таблицы ниже критического порога в 4 Гб.
Если ТиИ не помогает или проходит с ошибками, воспользуемся методом полной пересборки базы. При выгрузке в файл .dt система упаковывает только полезные данные, игнорируя индексы и пустые страницы.
Пошаговый план:
.dt).После этой процедуры файл 1Cv8.1CD будет создан с нуля, максимально компактно. Это самый надежный способ «лечения» файловой базы от логического мусора.
Рассмотрим объективную реальность: если файловая база достигла 12 Гб и продолжает расти, а количество рабочих мест превышает 3–5, то использование файлового режима становится рискованным. Ошибка «Превышен размер внутреннего файла» — это сигнал о том, что архитектура решения переросла текущие возможности хранения.
Мы рекомендуем рассмотреть переход на клиент-серверный вариант (SQL). В нем отсутствуют ограничения на размер отдельных таблиц (они ограничены только возможностями самой СУБД, например, MS SQL или PostgreSQL), а также значительно выше отказоустойчивость при сбоях сети или электропитания.
В качестве временной меры, пока осуществляется переход, используйте способ с cnvdbfl.exe и размером страницы 64K, а также регулярно проводите регламентную очистку кэша и настроек пользователей. Для этой задачи подойдёт обработка для редактирования и удаления настроек пользователей.