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

В этой статье мы разберём 5 проверенных способов уменьшить таблицы в 1С без потери критичных данных: от ручной чистки дублей до автоматизированной архивации. Методы подходят для большинства конфигураций (1С:Бухгалтерия, 1С:УТ, 1С:ЗУП и др.) и версий платформы 8.2–8.3. Важно: перед любыми манипуляциями с базой обязательно создайте резервную копию — некоторые операции необратимы!

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

1. Удаление дублирующихся записей

Дубли в справочниках и документах — одна из главных причин разрастания таблиц. Они появляются из-за ошибок пользователей, некорректного обмена данными или импорта из внешних систем. Например, в справочнике Контрагенты могут существовать десятки записей с одинаковым наименованием, но разными ИНН или адресами.

Чтобы найти и удалить дубли:

  • 🔍 Используйте стандартный отчёт Поиск дублирующихся объектов (доступен в большинстве конфигураций через Отчёты → Стандартные отчёты). Он покажет объекты с совпадающими реквизитами (наименование, ИНН, телефон и др.).
  • 📊 Для сложных случаев (например, дубли по частичному совпадению) применяйте внешние обработки, такие как "Поиск и замена дублей" от 1С-Рарус или Infostart.
  • 🗑️ Удаляйте дубли вручную или с помощью обработки, но предварительно проверьте ссылки на эти объекты в других документах (например, в заказах или платежах).

Если дубли критичны для бизнес-процессов (например, в справочнике Номенклатура), вместо удаления можно использовать механизм объединения объектов. В 1С:УТ и 1С:ERP для этого есть специальная обработка Объединение дублей номенклатуры.

⚠️ Внимание: Удаление дублей в справочниках, на которые ссылаются документы, может привести к ошибкам при проведении. Всегда тестируйте изменения на копии базы!
📊 Как часто вы сталкиваетесь с дублями в 1С?
Постоянно
Иногда
Резко
Никогда

2. Архивация старых данных

Многие таблицы в 1С разрастаются из-за накопления устаревших документов: закрытых заказов, оплат прошлых лет, архивных кадровых приказах. Эти данные редко используются в текущей работе, но занимают место и замедляют выборки. Решение — архивация.

Способы архивации:

  • 📂 Выгрузка в отдельную базу: перенесите документы старше 3–5 лет в архивную базу (например, 1С:Архив). Для этого используйте обработку ВыгрузкаЗагрузкаДанныхXML или специализированные решения вроде "Хранилище документов" от 1С-Битрикс.
  • 🗃️ Помечение на удаление: в некоторых конфигурациях (например, 1С:ЗУП) можно пометить устаревшие кадровые документы на удаление с отложенной датой. Они останутся в базе, но не будут участвовать в отчётах.
  • 🔄 Перенос в облако: для больших архивов (например, сканов документов) используйте облачные хранилища (Яндекс.Диск, Google Drive) с привязкой ссылок в 1С.

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


ВыгрузитьДанныеXML = Новый Запрос;

ВыгрузитьДанныеXML.Текст =

"ВЫБРАТЬ

| Документ.Ссылка КАК Ссылка

|ИЗ

| Документ.ЗаказПокупателя КАК Документ

|ГДЕ

| Документ.Дата < ДАТАВРЕМЯ(2020, 01, 01)";

⚠️ Внимание: Архивация документов, участвующих в регламентированном учёте (например, бухгалтерские проводки), может нарушить целостность отчётности. Перед архивацией проконсультируйтесь с аудитором!

Проверьте периоды хранения документов (налоговый кодекс требует хранить первичку не менее 5 лет)

Создайте резервную копию базы

Протестируйте выгрузку на небольшом наборе данных

Согласуйте список архивируемых документов с бухгалтерией

-->

3. Оптимизация индексов и полей таблиц

Неправильно настроенные индексы — частая причина медленной работы 1С. Если в таблице нет индексов по полям, которые часто используются в запросах (например, Дата, Контрагент, Номенклатура), система вынуждена сканировать всю таблицу, что занимает много времени и ресурсов.

Как оптимизировать индексы:

  • 🛠️ Проверьте текущие индексы в Конфигураторе: откройте нужную таблицу (например, Документ.РеализацияТоваровУслуг) и перейдите на вкладку Индексы. Удалите неиспользуемые индексы и добавьте новые для часто запрашиваемых полей.
  • 📈 Используйте составные индексы для полей, которые часто используются вместе (например, Дата + Контрагент).
  • 🚫 Избегайте индексов по полям с низкой селективностью (например, ПометкаУдаления или ЭтоГруппа), так как они не ускоряют, а замедляют запросы.

Пример создания индекса в Конфигураторе:

  1. Откройте объект (например, справочник Контрагенты).
  2. Перейдите на вкладку ДанныеИндексы.
  3. Добавьте новый индекс с именем ИндексПоИНН и включите в него поле ИНН.
  4. Установите флаг Уникальный, если дубли ИНН недопустимы.
Тип объекта Рекомендуемые поля для индексации Пример составного индекса
Документы (Реализация, Поступление) Дата, Контрагент, СуммаДокумента Дата + Контрагент + Номенклатура
Справочники (Номенклатура, Контрагенты) Наименование, Артикул, ИНН ИНН + Наименование
Регистры накопления (ОстаткиТоваров) Период, Номенклатура, Склад Период + Склад + Номенклатура
💡

Перед добавлением новых индексов проверьте их влияние на производительность с помощью Плана обмена или утилиты 1С:Линк. Индексы ускоряют выборки, но замедляют вставку и обновление данных.

4. Очистка временных таблиц и кэша

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

Как очистить временные данные:

  • 🧹 Ручная очистка: в Конфигураторе выполните команду Администрирование → Тестирование и исправление. Выберите опции:
    • 🗑️ Очистка временных таблиц
    • 🔄 Реиндексация таблиц
    • 📚 Очистка кэша метаданных
  • 🤖 Автоматизация: настройте регламентное задание ОчисткаВременныхФайлов (доступно в 1С:Предприятие 8.3.14+). Запускайте его еженедельно в нерабочее время.
  • 🗂️ Очистка полнотекстового поиска: если не используете поиск по содержимому документов, отключите его в настройках информационной базы (Администрирование → Полнотекстовый поиск).

Команда для очистки временных таблиц через Консоль запросов:


ОчиститьВременныеТаблицы();

⚠️ Внимание: Очистка временных таблиц в работающей базе может привести к ошибкам у пользователей. Выполняйте процедуру в нерабочие часы или на копии!
Что будет если не очищать временные таблицы?

С течением времени они могут занять десятки гигабайт, что приведёт к:

- Замедлению резервного копирования (временные таблицы включаются в бэкап).

- Ошибкам при обновлении платформы (недостаток места на диске).

- Падению производительности при выполнении сложных отчётов (система тратит время на сканирование ненужных данных).

5. Настройка периодов хранения данных

Многие конфигурации 1С (например, 1С:ЗУП или 1С:ERP) позволяют гибко настраивать периоды хранения данных. Это значит, что документы и записи старше определённой даты могут автоматически архивироваться или удаляться. Например, можно настроить хранение кадровых приказов только за последние 3 года, а более старые — переносить в архив.

Как настроить периоды хранения:

  1. Откройте Администрирование → Настройки программы → Периоды хранения данных.
  2. Выберите тип данных (например, Документы по зарплате или Кадровые приказы).
  3. Укажите период хранения (например, 36 месяцев).
  4. Настройте действие по истечении периода: Архивировать или Удалять.

Пример настройки для 1С:ЗУП 3.1:


ПериодХранения = Новый Структура;

ПериодХранения.Вставить("ТипДанных", Тип("Документ.КадровыйПриказ"));

ПериодХранения.Вставить("Период", 36); // Месяцев

ПериодХранения.Вставить("Действие", "Архивировать");

НастройкиХранения.Добавить(ПериодХранения);

Важно: для регламентированных документов (например, бухгалтерские проводки) период хранения должен соответствовать требованиям законодательства (не менее 5 лет). Настройте архивацию вместо удаления, чтобы не нарушать нормы.

💡

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

6. Использование внешних хранилищ для файлов

Если в вашей базе хранятся вложенные файлы (сканы документов, фотографии номенклатуры, Excel-отчёты), они могут занимать до 70% объёма таблиц. Например, в 1С:Документооборот или 1С:ERP файлы прикрепляются непосредственно к объектам, что приводит к быстрому росту базы.

Решения для оптимизации:

  • 📁 Перенос файлов во внешнее хранилище: используйте обработку "Выгрузка вложений в файловую систему" (доступна на Infostart). Файлы будут храниться на диске или в облаке, а в базе останутся только ссылки.
  • 🌐 Интеграция с облачными сервисами: настройте автоматическую загрузку вложений в Яндекс.Диск, Google Drive или 1С:Документооборот (если используете корпоративную версию).
  • 🗜️ Сжатие файлов: для старых сканов (например, архивных договоров) используйте сжатие в PDF/A или JPEG с меньшим разрешением.

Пример кода для выгрузки вложений в файловую систему:


Процедура ВыгрузитьВложения(КаталогВыгрузки)

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Вложение.Ссылка КАК Ссылка,

| Вложение.ИмяФайла КАК ИмяФайла,

| Вложение.Данные КАК Данные

|ИЗ

| Документ.ВложениеФайла КАК Вложение";

Результат = Запрос.Выполнить();

Пока Результат.Следующий() Цикл

ПутьКФайлу = КаталогВыгрузки + Результат.ИмяФайла;

Результат.Данные.Записать(ПутьКФайлу);

// Обновляем ссылку в базе

Объект = Результат.Ссылка.ПолучитьОбъект();

Объект.Вложение = Неопределено;

Объект.СсылкаНаФайл = ПутьКФайлу;

Объект.Записать();

КонецЦикла;

КонецПроцедуры

⚠️ Внимание: При переносе файлов во внешнее хранилище убедитесь, что:

- Пути к файлам остаются доступными для всех пользователей.

- Настроено резервное копирование внешнего хранилища.

- В базе сохранены метаданные файлов (дата, автор, описание).

7. Регулярное обслуживание базы

Даже после оптимизации таблицы в 1С будут постепенно разрастаться. Чтобы поддерживать базу в рабочем состоянии, настройте регулярное обслуживание:

  • 🔄 Реиндексация: запускайте ежемесячно через Тестирование и исправление (опция Реиндексировать таблицы).
  • 📊 Мониторинг роста: используйте обработку "Анализ объёма базы данных" (доступна на Infostart) для отслеживания самых "тяжёлых" таблиц.
  • 🛡️ Обновление платформы: в новых версиях 1С оптимизированы механизмы работы с данными (например, в 8.3.20+ улучшена работа с большими таблицами).
  • 🗑️ Очистка логов: регулярно удаляйте старые записи из журналов регистрации (Администрирование → Журнал регистрации).

Пример команды для очистки журнала регистрации:


ОчиститьЖурналРегистрации(ДатаНачала(2023, 1, 1)); // Удаляет записи старше 01.01.2023

Для автоматизации обслуживания создайте регламентные задания в Администрирование → Регламентные задания. Например:

Задание Периодичность Время выполнения
Очистка временных таблиц Еженедельно 22:00
Реиндексация Ежемесячно 23:00
Архивация документов старше 5 лет Ежеквартально 01:00

FAQ: Частые вопросы по уменьшению таблиц в 1С

Можно ли уменьшить таблицу без потери данных?

Да, большинство методов (архивация, оптимизация индексов, перенос файлов во внешние хранилища) позволяют сократить размер базы без удаления критичной информации. Однако всегда создавайте резервную копию перед изменениями!

Как узнать, какие таблицы занимают больше всего места?

Используйте обработку "Анализ объёма базы данных" (доступна на Infostart) или стандартный отчёт Администрирование → Монитор производительности. Также можно выполнить SQL-запрос к системным таблицам (например, SELECT * FROM INFORMATION_SCHEMA.TABLES ORDER BY DATA_LENGTH DESC для MySQL).

Что делать, если после очистки база не уменьшилась?

Возможные причины:

  • 🗑️ Файл базы физически не сжался (для файлового варианта 1С выполните Тестирование и исправление с опцией Сжать базу).
  • 📊 Данные удалены, но индексы не перестроены (выполните реиндексацию).
  • 🔄 Временные таблицы не очищены (проверьте настройки регламентных заданий).

Можно ли автоматизировать архивацию старых данных?

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

Как перенести архивные данные обратно в основную базу?

Для этого используйте обработку ВыгрузкаЗагрузкаДанныхXML или специализированные решения (например, "Загрузка данных из архива" для 1С:Бухгалтерии). Важно убедиться, что:

  • 🔄 Номера документов не конфликтуют с существующими.
  • 📅 Даты документов попадают в открытые периоды.
  • 📚 Справочники (контрагенты, номенклатура) синхронизированы.