Свертка информационной базы — стандартная процедура для большинства конфигураций на платформе «1С:Предприятие», позволяющая существенно уменьшить размер базы данных и повысить скорость ее работы за счет удаления устаревших документов. Однако, когда дело касается конфигурации «1С:Зарплата и кадры 7.7» (ЗиК), простая техническая задача превращается в сложнейший процесс с множеством подводных камней.
В этой статье мы подробно разберем, почему штатные механизмы часто не приносят желаемого результата, проанализируем ключевые технические препятствия при обрезке данных в ЗиК 7.7, изучим альтернативные методы свертки и выясним, почему переход на современную систему «1С:Зарплата и управление персоналом 8» является единственным надежным долгосрочным решением.
cvldcj77.ert не дает видимого эффекта?При попытке свернуть базу пользователи часто прибегают к специализированной обработке cvldcj77.ert, которая поставлялась на дисках информационно-технологического сопровождения (ИТС). Данная обработка предназначена для выгрузки и последующей загрузки записей журналов расчетов с очисткой старых периодов. Однако на практике ее запуск часто не приносит видимого уменьшения размера базы или удаления документов. Выясним основные технические причины этого явления:
cvldcj77.ert работает исключительно с записями журналов расчетов. Она очищает движения расчетных механизмов за прошлые периоды, но при этом не удаляет сами первичные документы (приказы, начисления, больничные листы и т.д.), которые эти записи породили. В результате в информационной базе остаются тысячи документов, которые продолжают занимать место на диске и ссылаться на несуществующие или очищенные движения.1SJOURN.DBF или таблицы журналов расчетов CJ*.DBF) не уменьшается автоматически. Записи лишь помечаются специальным внутренним флагом как удаленные. Для того чтобы физически освободить место на жестком диске и сжать таблицы, необходимо после любых манипуляций запустить базу в монопольном режиме через «Конфигуратор» и выполнить процедуру «Тестирование и исправление информационной базы» с обязательной установкой флажка «Упаковка таблиц». Без этого действия файлы базы сохранят свой прежний объем.Сворачивать базу расчета заработной платы гораздо сложнее, чем обычную бухгалтерскую или торговую базу. Это обусловлено уникальной архитектурой метаданных и логикой расчетов в системе ЗиК 7.7. Рассмотрим подробнее основные архитектурные препятствия:
1. Расчет среднего заработка (отпуска и больничные)
Для расчета отпускных и больничных листов программе требуются фактические данные о начислениях и отработанном времени сотрудников за предшествующие периоды (12 месяцев для отпусков и до 24 месяцев для пособий по временной нетрудоспособности). Если мы полностью удалим расчетные документы и очистим журналы расчетов до даты свертки, программа потеряет базу для расчета среднего заработка. Бухгалтерам придется при вводе каждого нового больничного или отпуска рассчитывать и заполнять средний заработок вручную, что парализует работу расчетного отдела. Поэтому проводить полную очистку данных «под ноль» нельзя — необходимо оставлять расчетную историю как минимум за последние 1-2 года.
2. Периодические реквизиты справочников
Вся кадровая история сотрудников (должности, оклады, плановые начисления, ставки, паспортные данные, инвалидность и т.д.) в 1С 7.7 хранится в виде периодических реквизитов справочника Сотрудники (физически данные записываются в таблицу 1SCONST.DBF). Очень часто эти значения записываются кадровыми документами (например, «Приказ о приеме на работу» или «Кадровое перемещение»). Если в процессе свертки эти документы будут удалены как устаревшие, то вся история периодических реквизитов очистится. Программа просто «забудет», на какой должности работал сотрудник и какой оклад получал до даты свертки, что сделает невозможным корректный расчет и ведение учета.
3. Налоги накопительным итогом
Расчет НДФЛ и страховых взносов происходит нарастающим итогом с начала налогового периода (календарного года). Попытка провести свертку базы посреди года приведет к полной потере налоговой базы текущего года, из-за чего программа не сможет правильно рассчитать налоги в последующих месяцах. Свертку ЗиК можно производить строго на 1 января (начало нового налогового периода).
4. Жесткая связь документов и Журнала расчетов
В отличие от «1С:Бухгалтерии 7.7», где проводки принадлежат операции документа, в ЗиК расчетные механизмы живут обособленно в Журнале расчетов (ЖР). Попытка напрямую очистить документы без очистки записей ЖР (или наоборот) нарушает ссылочную целостность базы. Это приводит к возникновению «битых» ссылок и системным ошибкам при попытке пересчитать или открыть любой прошлый период.
Поскольку штатные обработки свертки зачастую не справляются с поставленной задачей, в сообществе разработчиков 1С исторически выработались два альтернативных подхода к решению этой проблемы.
Метод 1: «Свертка переносом» (создание чистой базы)
Это наиболее безопасный, чистый и качественный метод. Вместо того чтобы пытаться вырезать данные из старой, перегруженной базы, создается абсолютно новая пустая база ЗиК той же самой конфигурации. С помощью универсальных обработок выгрузки-загрузки данных (например, через XML или правила «Конвертации данных») в новую базу переносят только необходимый минимум данных:
Сотрудники (последние оклады, должности, плановые начисления) в виде статических записей, не привязанных к удаленным кадровым документам;Этот метод гарантирует отсутствие «мусорных» файлов и битых ссылок в новой рабочей базе.
Проанализируем пример концептуального кода на встроенном языке 1С 7.7, который разработчики используют для программного анализа записей журналов расчетов перед переносом или очисткой:
// Пример программного обхода записей журнала расчетов для анализа периодов
ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ЖР.ВыбратьЗаписи();
Пока ЖР.ПолучитьЗапись() = 1 Цикл
Если ЖР.ПериодДействия < ДатаСвертки Тогда
// Запись относится к устаревшему периоду
Сообщить("Устаревшая запись сотрудника: " + ЖР.Объект + " за период: " + ЖР.ПериодДействия);
Иначе
// Запись входит в период поддержки среднего заработка
Сообщить("Актуальная запись для расчета среднего: " + ЖР.Объект);
КонецЕсли;
КонецЦикла;
Метод 2: Использование сторонних инструментов
На профильных ресурсах для обрезки журналов расчетов и корректного удаления документов специалисты часто применяют сторонние внешние обработки:
wrap.ert — комплексные решения, которые умеют корректно сворачивать периодические реквизиты справочников, преобразовывать их в статические константы на дату свертки и удалять документы-регистраторы без потери истории изменений.Важно понимать, что любые попытки свернуть и реанимировать базу ЗиК 7.7 в современных условиях — это лишь временная мера, которая не решает главных системных проблем:
Таким образом, бухгалтеры получают чистую, свернутую и быстроработающую базу в современной программе «1С:ЗУП 8», полностью соответствующей актуальному законодательству РФ. При этом старая база ЗиК 7.7 остается в качестве архивной копии, к которой всегда можно обратиться для просмотра исторических данных или печати справок за прошлые года.