Рано или поздно пользователи файловых версий 1С сталкиваются с неприятной ситуацией: при попытке сохранить очередной скан-образ документа или прикрепить файл к договору программа выдает критическую ошибку: «Превышен максимально допустимый размер внутреннего файла 1Cv8.1CD». На первый взгляд ситуация кажется тупиковой, особенно если общий размер базы еще не достиг критических отметок. В этой статье мы подробно разберем причины возникновения этой проблемы и рассмотрим пошаговые алгоритмы её решения.
Проанализируем архитектуру файловой базы данных 1С. Файл 1Cv8.1CD — это не просто единый массив данных, а контейнер, внутри которого содержатся таблицы. У каждой таблицы есть свои внутренние составляющие: данные, индексы и блоки двоичных данных (BLOB). В стандартном режиме работы файловой базы размер любого из этих компонентов одной конкретной таблицы не может превышать 4 ГБ. Это ограничение обусловлено стандартным размером страницы базы данных в 4096 байт.
Чаще всего «виновником» становится таблица, хранящая присоединенные файлы. Если вы храните сканы документов непосредственно в базе данных, то при достижении суммарного объема этих файлов в 4 ГБ (в рамках одной таблицы) система блокирует запись любых новых данных в эту таблицу, даже если на жестком диске терабайты свободного места.
Это самый правильный и рекомендуемый методистами 1С способ решения проблемы. Суть заключается в том, что в самой базе данных будут храниться только ссылки (пути) к файлам, а сами тяжелые сканы будут лежать в обычных папках на операционной системе. Рассмотрим подробнее, как это настроить в современных конфигурациях (БП 3.0, УНФ, ЗУП 3.1).
1Cv8.1CD и сохранять их в указанную папку, заменяя данные в базе на ссылки.Важный нюанс: После переноса файлов размер файла 1Cv8.1CD автоматически не уменьшится. Чтобы физически освободить место, необходимо запустить конфигуратор, перейти в Администрирование — Тестирование и исправление и выбрать пункт Сжатие таблиц информационной базы. Это «схлопнет» образовавшиеся пустоты в файле.
Если с базой работает несколько человек, недостаточно просто создать папку на своем компьютере. Рассмотрим особенности доступа:
Если база файловая и к ней обращаются по локальной сети, путь к тому должен быть указан в формате UNC (например, \\ServerName\1C_Files\). У всех пользователей должен быть полный доступ (чтение/запись) к этой сетевой папке на уровне операционной системы.
Если база опубликована на веб-сервере (Apache или IIS), роль «пользователя» выполняет системная учетная запись веб-сервера. Выясним, какая именно это запись (обычно IUSR или IIS_IUSRS), и предоставим ей права доступа к папке с томами. Без этого пользователи веб-клиента увидят ошибку доступа при попытке открыть файл.
Если перенос в тома по каким-то причинам невозможен или ошибка возникла не в таблице файлов, а в индексах или таблице движений, мы можем «раздвинуть» технические границы 1С. Рассмотрим работу с утилитой CNVDBFL.EXE, которая входит в стандартную поставку платформы и находится в папке bin установленной версии.
CNVDBFL.EXE.1Cv8.1CD.Посмотрим на результат: при увеличении размера страницы до 8192 байт максимальный размер таблицы вырастает с 4 ГБ до 6 ГБ. При установке страницы 64 КБ теоретический лимит увеличивается многократно. Однако стоит помнить, что чем больше страница, тем медленнее может работать база при большом количестве мелких операций чтения/записи.
Иногда пользователи видят ошибку с упоминанием файла 1Cv8tmp.1CD. Проанализируем ситуацию: это временный файл, который создается платформой при тяжелых операциях (например, при реструктуризации базы или при выполнении регламентных заданий). Если во время переноса файлов в тома или при обновлении конфигурации вылетает эта ошибка, значит, временные данные превысили лимит текущей страницы базы.
Решение в данном случае аналогично — использование CNVDBFL.EXE для основной базы. Временный файл наследует настройки размера страницы от основного файла .1CD.
Разберем, что еще можно сделать, чтобы уменьшить размер базы без радикальных мер:
_InfoRegXXXX (регистр сведений версий объектов) часто разрастается быстрее, чем сами данные. Очистите старые версии через Администрирование — Обслуживание — Очистка ненужных версий.Tool1CD. Она позволяет просмотреть размер каждой таблицы внутри файла базы данных. Это поможет точечно определить проблему (например, переполненный журнал регистрации, если он еще хранится внутри базы).Если ваша база стабильно перешагивает порог в 10–12 ГБ, любые манипуляции с файловой версией — это лишь временная отсрочка. Проанализируем преимущества клиент-серверного варианта (MS SQL, PostgreSQL). В SQL-версии ограничения на размер таблиц практически отсутствуют (лимиты измеряются терабайтами), а стабильность работы базы при многопользовательском доступе значительно выше. Если бюджет ограничен, рассмотрим связку 1С + PostgreSQL, которая является бесплатной альтернативой коммерческим СУБД.
Подведем итог: первым делом настраиваем хранение файлов в томах, сжимаем таблицы через ТиИ, и если это не помогло — увеличиваем размер страницы через CNVDBFL. Эти шаги позволят восстановить работоспособность системы в кратчайшие сроки.