Почему резко вырос размер базы 1С:ЗУП 3.1 и как уменьшить объем выгрузки?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При эксплуатации системы 1С:Зарплата и Управление Персоналом 3.1 системные администраторы и программисты часто сталкиваются с ситуацией, когда размер файла выгрузки (.dt) начинает расти в геометрической прогрессии после обновления релиза. В этой статье мы подробно разберем, почему это происходит, как найти «тяжелые» таблицы и какие шаги предпринять для оптимизации дискового пространства без вреда для учета.

Анализируем ситуацию: с чего начать поиск?

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


SELECT table_name, 
       pg_size_pretty(table_size) AS table_size, 
       pg_size_pretty(indexes_size) AS indexes_size, 
       pg_size_pretty(total_size) AS total_size 
FROM (
    SELECT table_name, 
           pg_table_size(table_name) AS table_size, 
           pg_indexes_size(table_name) AS indexes_size, 
           pg_total_relation_size(table_name) AS total_size 
    FROM (
        SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name 
        FROM information_schema.tables
    ) AS all_tables 
    ORDER BY total_size DESC
) AS pretty_sizes

Для пользователей MS SQL Server аналогичную информацию можно получить через стандартный отчет "Disk Usage by Top Tables" (в SQL Server Management Studio — правой кнопкой на базу данных -> Reports -> Standard Reports). Нас интересуют таблицы с наибольшим объемом в колонке Data.

Выясняем причину: справочник ХранилищеДвоичныхДанных

В современных релизах ЗУП 3.1 (особенно в ветках 3.1.27, 3.1.30 и выше) основной причиной роста часто становится справочник ХранилищеДвоичныхДанных (в SQL он может называться Reference45158 или иметь другой номер, в зависимости от конфигурации).

Почему это происходит? Проанализируем изменения в архитектуре программы:

  1. Переход на СЭДО (СФР): Теперь сообщения электронного документооборота, зашифрованные транспортные пакеты и квитанции хранятся именно в этом справочнике. При большом штате сотрудников количество таких записей растет лавинообразно.
  2. Миграция данных: При обновлении конфигурации 1С часто запускает фоновые задания, которые переносят старые данные из регистров сведений в это новое хранилище. Именно поэтому скачок размера выгрузки часто совпадает по времени с обновлением релиза.
  3. Скан-копии документов: Если в базе ведется активная работа с прикрепленными файлами (сканы паспортов, трудовых книжек, больничных), они также попадают в эту таблицу.

Шаг 1. Настройка хранения файлов в томах

Самый эффективный способ уменьшить размер .dt и самой базы данных — это перенос хранения двоичных данных из базы на диск (в тома). Разберем этот процесс по шагам:

Проанализируем текущие настройки в разделе Администрирование — Настройки работы с файлами. Установим переключатель в положение «В томах на диске». Создадим новый том, указав путь к сетевой папке или локальному диску на сервере. При необходимости упорядочить данные по филиалам пригодится инструмент для переноса присоединенных файлов отдельных организаций в томах.

Важный нюанс: Простое включение этой опции не затронет уже накопленные гигабайты. Нам необходимо запустить обработку «Перенос файлов в тома». Рассмотрим, как это работает: система будет поочередно считывать файлы из базы, записывать их на диск и очищать поле с двоичными данными в справочнике ХранилищеДвоичныхДанных.

Шаг 2. Очистка протоколов обмена и ненужных файлов

Рассмотрим штатные средства очистки, которые предоставляет БСП (Библиотека стандартных подсистем). Перейдем в Администрирование — Обслуживание — Очистка ненужных файлов.

Здесь мы можем увидеть распределение объема файлов по различным объектам (например, СведенияОЗастрахованныхЛицахФСС, Ответ на запрос ФСС и т.д.). Проанализируем возможность настройки автоматической очистки:

Шаг 3. Контроль качества сканирования

Часто причиной роста базы является человеческий фактор. Выясним, как кадровики загружают документы. Если сканирование происходит с разрешением 600 dpi в формате BMP или TIFF, один файл может весить 20–30 МБ.

Проверим настройки сканирования прямо в интерфейсе 1С. Рекомендуется установить формат JPG и разрешение 150–200 dpi. Этого достаточно для читаемости текста, при этом размер файла сокращается в десятки раз. Для уже загруженных огромных файлов поможет только выгрузка, сжатие и повторная загрузка (либо использование специализированных обработок с Инфостарта). Для выгрузки данных на диск подойдёт обработка для пакетного сохранения приложенных файлов в папку.

Шаг 4. Обслуживание СУБД после очистки

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

Чтобы физически уменьшить базу, выполним следующие операции:

  1. Запустим процедуру Shrink Database (Сжатие базы данных) в MS SQL Server.
  2. Выполним Тестирование и исправление в конфигураторе 1С с включенными опциями Реиндексация таблиц и Сжатие таблиц.

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

Резюме

Если ваша база ЗУП 3.1 начала «пухнуть», не спешите паниковать. В большинстве случаев это штатное поведение системы, связанное с новыми механизмами взаимодействия с СФР. Перенос данных в тома хранения файлов и настройка регламентной очистки протоколов СЭДО позволяют стабилизировать размер базы и значительно ускорить процесс создания ежедневных бэкапов.

← На главную