Как решить проблемы с превышением размера файловой базы и ошибками при свертке 1С:Бухгалтерии 3.0?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет Финансы и профессиональные услуги
← На главную

При работе с файловыми информационными базами 1С:Предприятия, особенно при их значительном росте, нередко возникают трудности, которые могут парализовать работу всей бухгалтерии. Одной из наиболее распространенных и критичных проблем является превышение максимально допустимого размера внутреннего файла базы данных, что приводит к невозможности проведения документов или выполнения ресурсоемких операций, таких как свертка информационной базы. Дополнительно, при попытке свертки уже в клиент-серверном варианте, могут возникать ошибки аварийного завершения фоновых заданий. Давайте подробно разберем эти проблемы и найдем комплексные решения.

Проблема 1: Превышение максимально допустимого размера внутреннего файла 1Cv8.1CD

Первая ошибка, с которой мы сталкиваемся, звучит как "Превышен максимально допустимый размер внутреннего файла 1Cv8.1CD". Эта проблема характерна для файловых баз 1С и сигнализирует о том, что одна из внутренних таблиц вашей информационной базы достигла предельного размера, установленного для файлового режима работы. Для различных версий платформы и размеров страниц этот лимит может варьироваться, но в большинстве случаев он составляет 4 ГБ, иногда до 6 ГБ или 16 ГБ для самых новых платформ с увеличенным размером страницы. Однако, если база продолжает использовать страницы размером 4 КБ, лимит в 4 ГБ остается актуальным независимо от версии платформы.

Почему это происходит? Информационная база 1С активно увеличивается в размерах со временем. Основными причинами могут быть:

  1. Накопление большого объема данных: множество документов, операций, регистров сведений и накопления за длительный период.
  2. Хранение вложенных файлов непосредственно в базе: сканы документов, электронные письма, XML-файлы из 1С-Отчетности или 1С-ЭДО, прикрепленные к объектам 1С, значительно увеличивают размер файла 1Cv8.1CD.
  3. Отсутствие регулярной оптимизации: несвоевременная очистка, сжатие и обслуживание базы.

Диагностика проблемы

Прежде чем принимать решения, нам необходимо выяснить, какая именно таблица в базе данных "распухла" и вызвала превышение лимита. Для этого существуют специальные инструменты и методы:

  1. Внешние обработки для анализа размера таблиц: такие как Tool_1CD (или ее аналоги, доступные на различных ресурсах для разработчиков 1С). Эти обработки позволяют увидеть размеры всех таблиц в файловой базе и определить, какая из них занимает наибольший объем. Хотя Tool_1CD изначально предназначалась для старых форматов баз, ее последние версии могут использоваться для просмотра структуры и размеров таблиц в новых форматах (например, 8.3.8 и выше).
  2. Метод ПолучитьРазмерДанныхБазыДанных(): Начиная с платформы 8.3.15.1489, в глобальном контексте доступен метод ПолучитьРазмерДанныхБазыДанных(). Этот метод позволяет программно получить информацию о размере таблиц базы данных. Мы можем использовать его для создания собственного отчета или обработки, которая покажет, какие таблицы занимают больше всего места.

Решения проблемы превышения размера файла

После диагностики мы можем приступить к решению. Здесь важно понимать, что некоторые меры являются временными, а другие – стратегическими.

1. Оптимизация хранения файлов:

Если причиной разрастания базы является хранение вложенных файлов, то это первое, что мы должны исправить. Перенесем прикрепленные файлы из базы данных во внешнее хранилище. Это значительно уменьшит размер файла 1Cv8.1CD.

  1. Настройка хранения: В конфигурации 1С (например, в 1С:Бухгалтерии 3.0) перейдите в раздел Администрирование → Общие настройки.
  2. Раздел "Файлы": Найдите блок настроек, связанный с файлами, и установите опцию "Хранить файлы в томах на диске".
  3. Настройка томов хранения: Укажите каталог на диске, где будут храниться внешние файлы. Убедитесь, что у пользователя, под которым запускается 1С (или у серверного агента 1С), есть соответствующие права доступа к этому каталогу.
  4. Перенос существующих файлов: После настройки нового способа хранения файлов, в том же разделе "Файлы" или через специальную обработку, запустите процесс переноса уже существующих в базе файлов во внешние тома. Этот процесс может занять значительное время в зависимости от объема данных.

2. Регулярная очистка и обслуживание базы:

  1. Удаление ненужных данных: Мы должны регулярно удалять устаревшие или ненужные документы, справочники и регистры, а также помеченные на удаление объекты. Используйте стандартную обработку "Удаление помеченных объектов".
  2. Сжатие таблиц информационной базы (для файлового варианта): В режиме Конфигуратор откройте Администрирование → Тестирование и исправление. Установите флаг "Сжатие таблиц информационной базы". Эта операция поможет очистить неиспользуемое пространство, образовавшееся после удаления данных.
  3. Выгрузка и загрузка базы данных: Полная выгрузка базы данных в dt-файл и последующая загрузка может помочь очистить неиспользуемое пространство и "перестроить" внутреннюю структуру файла 1Cv8.1CD, потенциально уменьшая его размер. Однако, если уже превышен лимит размера внутреннего файла, то даже выгрузка или загрузка из dt может вызвать ту же ошибку. В таких случаях можно попробовать выгрузить/загрузить не всю базу, а только данные (как упоминалось в сообщении 19).
  4. Сокращение журнала регистрации: Журнал регистрации может занимать значительное пространство. Его регулярная очистка через Конфигуратор (Администрирование → Настройка журнала регистрации) может способствовать уменьшению общего размера базы.

3. Стратегическое решение: Переход на клиент-серверный вариант работы:

Это оптимальное и долгосрочное решение для больших баз данных, которое снимает большинство ограничений файлового режима по размеру, производительности и надежности. При переходе на клиент-серверный вариант, база данных размещается на СУБД (например, MS SQL Server, PostgreSQL), а работа пользователей осуществляется через сервер 1С:Предприятия. Это позволяет:

  1. Снять ограничения на размер внутренних файлов: СУБД не имеет таких жестких ограничений, как файловый режим 1С.
  2. Значительно повысить производительность: особенно при одновременной работе нескольких пользователей и выполнении ресурсоемких операций.
  3. Улучшить надежность и безопасность: механизмы резервного копирования и восстановления данных в СУБД гораздо более развиты.

Что потребуется для перехода:

  1. Лицензия на сервер 1С:Предприятия.
  2. Сервер СУБД: Например, MS SQL Server, PostgreSQL, IBM DB2, Oracle Database.
  3. Лицензии 1С:Предприятия ПРОФ: Даже если вы используете базовую конфигурацию 1С:Бухгалтерии, для работы в клиент-серверном режиме потребуются ПРОФ-лицензии для пользователей. Как было отмечено в обсуждении (сообщение 15), базовая конфигурация может работать с сервером 1С, если используется ПРОФ-лицензия, обходя ограничения базовой лицензии.

Проблема 2: "Аварийно завершился рабочий процесс фонового задания" при свертке на сервере

После переноса базы на сервер (MS SQL) при попытке свертки может возникнуть новая ошибка: "Аварийно завершился рабочий процесс фонового задания". Эта ошибка указывает на сбой в работе фонового задания, которое отвечает за выполнение длительных операций (в нашем случае – свертки).

Причины возникновения этой ошибки:

  1. Недостаток памяти: Выполнение свертки – это очень ресурсоемкая операция. Если сервер 1С или СУБД не имеет достаточного объема оперативной памяти, рабочий процесс может быть аварийно завершен.
  2. Ошибки в коде платформы: Иногда эта ошибка может быть вызвана известными ошибками в определенных релизах технологической платформы 1С:Предприятия. Как упоминалось в обсуждении (сообщение 8), проблема наблюдалась в релизах 8.3.16.1791, 8.3.17.1823, 8.3.18.1201 и была исправлена в версиях 8.3.17.2231, 8.3.18.1483 и выше.
  3. Проблемы с СУБД: Недостаточная производительность дисковой подсистемы, некорректные настройки СУБД или её обслуживание (отсутствие реиндексации, старые статистики).
  4. Ограничения базовой конфигурации: Хотя с ПРОФ-лицензией базовая конфигурация может работать в клиент-серверном режиме, иногда ее упрощенная логика может вызывать "сюрпризы" при выполнении сложных операций. Некоторые эксперты (сообщение 10) рекомендуют на время свертки перевести конфигурацию в ПРОФ, а затем, если необходимо, вернуться к базовой.

Решения проблемы "Аварийно завершился рабочий процесс фонового задания"

1. Обновление платформы 1С:

Это одно из наиболее эффективных решений, если причина кроется в ошибках платформы. Мы должны актуализировать платформу 1С:Предприятия до последних стабильных версий. Убедимся, что установленная версия платформы 1С выше тех, где была обнаружена ошибка, например, 8.3.17.2231 или 8.3.18.1483 и новее.

Порядок действий:

  1. Создадим резервную копию информационной базы.
  2. Загрузим и установим новую версию платформы с портала 1С:Обновление программ.
  3. Запустим 1С с новой версией платформы и позволим ей обновить внутренние структуры.
  4. Повторим попытку свертки информационной базы.

2. Оптимизация настроек сервера 1С и СУБД:

  1. Увеличение доступной памяти: Мы должны убедиться, что сервер 1С и сервер СУБД имеют достаточный объем оперативной памяти. В случае необходимости, увеличим объем ОЗУ на сервере.
  2. Автоматический перезапуск рабочих процессов rphost: В консоли администрирования кластера серверов 1С:Предприятия можно настроить автоматический перезапуск рабочих процессов (rphost) через определенный интервал времени или при достижении определенных порогов использования памяти. Это может помочь предотвратить "зависание" или аварийное завершение процессов из-за накопления утечек памяти или других проблем. В настройках рабочего сервера кластера 1С, найдем параметр "Интервал перезапуска" и установим его значение. Иногда установка значения 0 (как уже было попробовано автором) не решает проблему, если причина в ошибке платформы или недостаточности ресурсов.
  3. Оптимизация базы данных SQL: Для базы, работающей на MS SQL Server, мы должны регулярно выполнять следующие операции:
    • Реиндексация: Перестроение индексов таблиц для повышения скорости доступа к данным.
    • Обновление статистики: Актуализация статистики, используемой оптимизатором запросов SQL для построения оптимальных планов выполнения запросов.
    • Очистка "мертвых" данных: Периодическое обслуживание для удаления неиспользуемого пространства и устаревших данных.
  4. Переход на 64-разрядную версию 1С и операционную систему: Если проблема связана с недостаточной доступной памятью для одного процесса, переход на 64-разрядные версии 1С и операционной системы может позволить рабочим процессам 1С использовать больше оперативной памяти, снимая ограничения 32-разрядных систем.

3. Альтернативные методы свертки информационной базы:

Если стандартная свертка через типовые обработки 1С продолжает вызывать ошибки, мы можем прибегнуть к альтернативным, более "ручным" или специализированным методам.

Метод 1: Свертка с использованием правил обмена и документов "Ввод начальных остатков" (как в сообщении 4).

Этот подход предполагает создание новой (или чистой) базы и перенос в нее только актуальных данных и остатков на заданную дату свертки.

  1. Создание новой информационной базы: Запускаем Конфигуратор и создаем новую пустую информационную базу на основе типовой конфигурации.
  2. Настройка правил обмена: Мы разрабатываем или используем готовые правила обмена данными (например, на основе типовых правил конвертации данных или внешних разработок). Эти правила должны обеспечить перенос следующих объектов:
  3. Формирование документов "Ввод начальных остатков": Вместо переноса старых документов до даты свертки, мы формируем документы Ввод начальных остатков в новой базе на дату свертки. Эти документы должны содержать все необходимые балансы по счетам бухгалтерского учета, взаиморасчетам, товарам на складах и другим регистрам. Это критически важный этап, требующий тщательной проверки.
  4. Замена старых документов: В исходной базе (или в новой, если переносятся все документы, но потом старые удаляются) старые документы до даты свертки можно либо удалить, либо заменить на документы ручного учета с контрагентом "Свертка" для сохранения истории операций, но уже без детализации.
  5. Проверка данных: После переноса и формирования остатков, мы должны очень тщательно сверить данные новой базы с исходной на дату свертки, используя стандартные отчеты 1С (оборотно-сальдовые ведомости, отчеты по складу, по взаиморасчетам и т.д.).

Метод 2: Ручной перенос данных за определенный период с помощью ВыгрузкаЗагрузкаДанныхXML83.epf (как в сообщении 6).

Этот метод предполагает использование стандартной обработки для выгрузки и загрузки данных в формате XML.

  1. Подготовка новой базы: Аналогично предыдущему методу, создаем новую пустую информационную базу.
  2. Использование обработки ВыгрузкаЗагрузкаДанныхXML83.epf: Открываем эту обработку в режиме 1С:Предприятия.
  3. Настройка выгрузки: Мы должны настроить выгрузку следующих типов данных из старой базы:
  4. Важно! Мы не выгружаем данные, относящиеся к прошлым периодам, которые должны быть свернуты.

  5. Выгрузка данных в XML-файл: Запускаем процесс выгрузки данных в один или несколько XML-файлов.
  6. Загрузка данных в новую базу: В новой, пустой базе, через ту же обработку ВыгрузкаЗагрузкаДанныхXML83.epf, выполняем загрузку созданных XML-файлов.
  7. Формирование начальных остатков: После загрузки всех актуальных данных, нам потребуется вручную или с помощью специализированных обработок сформировать документы Ввод начальных остатков в новой базе на дату свертки. Это самый трудоемкий и ответственный этап, который требует внимательного анализа всех счетов и регистров.
  8. Тщательная проверка: Как и в предыдущем методе, критически важна полная сверка данных новой базы с исходной на дату свертки.

Этот метод, хотя и несложен в плане использования самой обработки, требует глубокого понимания структуры данных и корректного формирования остатков.

Дополнительные рекомендации и советы

Переход на ПРОФ-версию конфигурации:

Хотя базовая конфигурация 1С:Бухгалтерии может работать с ПРОФ-лицензией в клиент-серверном варианте, иногда для выполнения сложных операций (например, свертки) или для использования расширенного функционала, который может отсутствовать в базовой версии, рекомендуется рассмотреть перевод самой конфигурации на ПРОФ-версию. В ПРОФ-версии часто бывает более гибкая логика для работы с большими объемами данных и больше возможностей для настроек.

Переход в облако 1С:

Как альтернативное стратегическое решение, если нет возможности или желания разворачивать собственный сервер, мы можем рассмотреть переход в облачные сервисы 1С (например, 1С:Фреш или сторонние провайдеры). Это позволяет избежать необходимости администрирования собственного сервера, обеспечивает доступность из любой точки мира через интернет, включает автоматические обновления и резервное копирование, а также предоставляет ряд полезных сервисов, таких как 1С:Контрагент.

Важно: Тестирование и резервное копирование

Независимо от выбранного метода свертки, мы всегда должны выполнять ее на тестовой копии информационной базы. И только после полной проверки корректности данных в тестовой базе, можно приступать к работе с основной базой. Обязательно создаем полную резервную копию рабочей базы перед началом любых операций по свертке или серьезной реструктуризации.

Комплексный подход к решению проблем с разросшейся базой 1С и ошибками при свертке включает в себя как технические меры по оптимизации и обновлению, так и стратегические решения по изменению архитектуры работы с базой. Выбирайте тот путь, который наилучшим образом соответствует вашим ресурсам и потребностям.

← На главную