Как организовать одновременную разработку в 1С и оптимизировать место на дисках при больших объемах баз?

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

В процессе командной разработки на платформе 1С:Предприятие часто возникает ситуация, когда каждому программисту требуется индивидуальная копия «боевой» базы для отладки и тестирования. Если конфигурация, например 1С:Управление торговлей (УТ), имеет значительный объем (100 ГБ и более), то создание нескольких копий быстро исчерпывает ресурсы дисковой подсистемы. Проанализируем, как эффективно организовать процесс разработки, не превращая серверную в склад жестких дисков, и выясним, какие инструменты действительно помогают в этой ситуации.

Приоритеты разработки: Диски против времени

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

Оперативный простор для программиста — это залог качественного кода и отсутствия ошибок в промышленной базе. Если разработчик ограничен в создании тестовых сред, он начинает «тренироваться» на общих базах или вносить изменения с меньшим циклом тестирования, что неизбежно ведет к багам в «боевой» конфигурации.

Техническая оптимизация: Сжатие данных на уровне СУБД

Если объем баз действительно становится критическим, разберем методы сжатия данных. Большинство современных баз 1С работают под управлением Microsoft SQL Server, который предоставляет мощные механизмы компрессии.

Рассмотрим использование Page Compression (сжатие на уровне страниц). Это позволяет уменьшить физический размер базы на диске в 3–5 раз практически без потери производительности на чтение (а иногда и с её приростом за счет уменьшения операций ввода-вывода). Проанализируем, как это можно сделать с помощью SQL-скрипта для всех таблиц базы данных:


-- Пример скрипта для включения сжатия страниц для всех таблиц базы
DECLARE @TableName NVARCHAR(255);
DECLARE @SqlCommand NVARCHAR(MAX);

DECLARE TableCursor CURSOR FOR 
SELECT name FROM sys.tables;

OPEN TableCursor;
FETCH NEXT FROM TableCursor INTO @TableName;

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @SqlCommand = 'ALTER TABLE ' + QUOTENAME(@TableName) + ' REBUILD PARTITION = ALL WITH (DATA_COMPRESSION = PAGE);';
    EXEC sp_executesql @SqlCommand;
    FETCH NEXT FROM TableCursor INTO @TableName;
END;

CLOSE TableCursor;
DEALLOCATE TableCursor;

Применение такого подхода к тестовым копиям позволит хранить базу в 100 ГБ, занимая при этом всего 20–30 ГБ на диске. Важно помнить, что для разработки и отладки небольшое замедление на запись, которое может дать сжатие, абсолютно не критично.

Методика «Срезов данных» и очистка базы

Зачастую программисту для решения 90% задач не нужны данные за все 10 лет работы компании. Посмотрим на ситуацию внимательнее: для отладки текущих багов в 1С:УТ достаточно актуальных остатков и документов за последние несколько месяцев.

Рассмотрим по шагам процесс подготовки «легкой» тестовой базы:

  1. Создание копии: Разворачиваем полную копию базы.
  2. Обрезание данных: Используем типовые обработки (например, «Свертка информационной базы») или пишем свои скрипты для удаления старых документов.
  3. Очистка кэша и версий: В крупных базах огромный объем занимают таблицы версионирования объектов (_InfoRgChngR) и присоединенные файлы. Их можно очистить без вреда для логики разработки.
  4. Сжатие таблиц SQL: После удаления данных обязательно выполняем команду SHRINKDATABASE, чтобы вернуть освободившееся место операционной системе.

Проанализируем пример кода 1С для быстрой очистки движений документов в тестовой базе, чтобы уменьшить её вес:


// Пример программной очистки движений для ускорения базы
Процедура ОчиститьДвиженияСтарыхДокументов(ДатаОграничения)
    ДокументыДляОчистки = Документы.РеализацияТоваровУслуг.Выбрать(,, "Дата < '" + Формат(ДатаОграничения, "ДФ=yyyyMMdd") + "'");
    Пока ДокументыДляОчистки.Следующий() Цикл
        Набор = РегистрыНакопления.ВыручкаИСебестоимостьПродаж.СоздатьНаборЗаписей();
        Набор.Отбор.Регистратор.Установить(ДокументыДляОчистки.Ссылка);
        Набор.Записать(); // Записываем пустой набор, удаляя старые записи
    КонецЦикла;
КонецПроцедуры

EDT и Git: Решают ли они проблему данных?

Часто возникает вопрос: поможет ли переход на современные инструменты, такие как 1C:Enterprise Development Tools (EDT) и Git? Выясним разницу между кодированием и отладкой.

EDT и Git — это инструменты для работы с исходным кодом (метаданными). Они отлично решают проблему одновременной правки одних и тех же модулей разными программистами, позволяя сливать изменения (merge) и вести ветки (branches). Однако они никак не решают вопрос данных. Для запуска отладки вам всё равно потребуется база (информационная база), в которой этот код будет выполняться.

Тем не менее, использование EDT позволяет внедрить концепцию синтетических данных. Вместо того чтобы тянуть 100 ГБ реальных заказов, программист может написать скрипт (Unit-тест), который программно создает одного контрагента, одну номенклатуру и один документ. Это идеальный путь развития, к которому стоит стремиться в крупных проектах.

Разграничение сред: Dev, Preprod и Production

Для стабильной работы большой команды важно разделять понятия:

Такая структура позволяет разработчикам работать в «легких» условиях, а тяжелую 100-гигабайтную копию обновлять раз в неделю только для финальной проверки функционала. Это разумный компромисс между удобством и экономией ресурсов.

Подведем итог: Настороженность по поводу роста объемов оправдана, но она не должна блокировать работу программистов. Оптимальный путь — это сочетание покупки производительных дисков, использования SQL-сжатия и постепенного внедрения культуры работы с синтетическими данными или «срезами» баз. Помните, что время разработчика — самый дорогой ресурс в проекте автоматизации.

← На главную