Нужно ли сохранять остатки в регистрах Книга покупок и Книга продаж при свертке базы 1С:Торговля и Склад 7.7?

Программист 1С v7.7 Налоговый учет Торговля и дистрибуция
← На главную

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

Почему регистры книг покупок и продаж блокируют удаление документов

В типовой конфигурации «Торговля и Склад 7.7» первичные документы (ПоступлениеТМЦ, РеализацияТМЦ, СчетФактура и др.) при проведении автоматически формируют приходные движения по регистрам КнигаПокупок и КнигаПродаж. Однако расходные движения по этим регистрам формируются только специализированными регламентными документами (например, ФормированиеЗаписейКнигиПокупок и ФормированиеЗаписейКнигиПродаж).

Если в организации налоговый учет по НДС ведется в бухгалтерской программе (например, 1С:Бухгалтерия 7.7), бухгалтеры не вводят регламентные документы в торговой базе. В результате в регистрах накапливаются исключительно положительные движения («Приход»), а «Расход» отсутствует вовсе.

Разберем технические последствия такой ситуации:

  1. Блокировка ссылочной целостности: Измерения регистров содержат прямые ссылки на первичные документы и счета-фактуры. Механизм контроля ссылочной целостности платформы 1С 7.7 проверяет наличие ссылок в таблицах движений (файлы RA*.DBF) и таблицах итогов (файлы RG*.DBF). Если ссылка присутствует в незакрытом регистре, платформа запрещает физическое удаление документа из таблиц 1SJOURN и 1SDOCS.
  2. Ежемесячное раздувание таблиц итогов: В платформе 1С 7.7 итоги регистров рассчитываются и сохраняются с шагом в один месяц. Если регистр не закрывается в ноль, все накопленные комбинации измерений со всеми ссылками на старые документы дублируются в таблице RG*.DBF на каждый последующий месяц. Это приводит к экспоненциальному росту файла итогов.
  3. Падение производительности: Огромный объем незакрытых итогов замедляет перемещение точки актуальности (ТА), тормозит проведение любых документов и увеличивает время выборки данных.
  4. Риск превышения лимита 2 ГБ в DBF: В файловых базах 1С 7.7 размер любого файла таблицы базы данных не может превышать 2 гигабайта. Разрастание таблиц итогов и журнала документов способно привести к аварийной остановке базы и повреждению данных.

Способ 1. Полная очистка остатков регистров при свертке базы

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

  1. Создадим резервную копию информационной базы.
  2. Выполним свертку остатков по всем оперативным регистрам (ОстаткиТМЦ, ПартииНаличие, ВзаиморасчетыПокупателей и т.д.) с помощью штатной или специализированной обработки свертки на выбранную дату (например, на начало года).
  3. Исключим регистры КнигаПокупок и КнигаПродаж из списка регистров, по которым формируются входящие остатки в документе ввода остатков. Входящие остатки по этим регистрам создавать не нужно.
  4. Удалим движения по регистрам книг покупок и продаж за обрезаемый период. Для этого можно очистить движения в документах или применить специализированную обработку очистки таблиц движений.
  5. Запустим операцию «Удаление помеченных объектов». После снятия ссылок из регистров платформа сможет успешно удалить все устаревшие документы.

Способ 2. Отключение движений по регистрам в коде конфигурации

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

  1. Откроем конфигуратор и найдем модули проведения документов, формирующих записи в книги покупок и продаж (ПоступлениеТМЦ, РеализацияТМЦ, СчетФактура, СчетФактураПолученный, СтрокаВыпискиПриход, СтрокаВыпискиРасход).
  2. В процедурах ОбработкаПроведения найдем вызовы функций формирования движений по регистрам КнигаПокупок и КнигаПродаж и закомментируем их.

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


// РегКнигаПокупок = СоздатьОбъект("Регистр.КнигаПокупок");
// РегКнигаПокупок.Приход();
// РегКнигаПокупок.СчетФактура = ТекущийДокумент();
// РегКнигаПокупок.Записать();

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

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

Если база является нетиповой или полностью снята с поддержки, самым кардинальным и эффективным решением будет полное удаление регистров КнигаПокупок и КнигаПродаж из дерева метаданных конфигурации.

  1. В конфигураторе открываем ветку «Регистры».
  2. Удаляем регистры КнигаПокупок и КнигаПродаж (а также другие неиспользуемые регистры, если в них нет потребности, например, регистры учета наличных и безналичных денежных средств).
  3. Сохраняем конфигурацию и принимаем изменения структуры данных.
  4. Платформа 1С 7.7 автоматически удалит соответствующие файлы RA*.DBF и RG*.DBF из каталога базы данных, что мгновенно освободит дисковое пространство и ускорит расчет итогов.

Способ 4. Низкоуровневая очистка таблиц DBF и переиндексация

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

  1. Создаем полную архивную копию каталога базы данных.
  2. Открываем файл словаря данных 1Cv7.DD любым текстовым редактором и находим идентификаторы таблиц нужных регистров (ищем строки с описанием Регистр.КнигаПокупок и Регистр.КнигаПродаж). Находим соответствующие имена файлов (например, RA1234.DBF и RG1234.DBF).
  3. С помощью сторонней утилиты для работы с DBF очищаем записи (выполняем ZAP или упаковываем PACK) в найденных файлах движений и итогов.
  4. Удаляем все индексные файлы с расширением *.CDX из каталога базы данных.
  5. Запускаем 1С:Предприятие 7.7 в монопольном режиме и выполняем режим «Администрирование» -> «Тестирование и исправление ИБ» с установленными флагами «Реиндексация таблиц», «Проверка физической целостности» и «Пересчет итогов регистров».

Способ 5. Регламентное закрытие регистров (если книги необходимы)

Если на предприятии книги покупок и продаж формируются непосредственно в торговой базе для сверки данных с бухгалтерией, регистры очищать нельзя. В этом случае необходимо настроить корректный регулярный документооборот:

  1. Ежемесячно вводить регламентные документы ФормированиеЗаписейКнигиПокупок и ФормированиеЗаписейКнигиПродаж.
  2. Контролировать с помощью стандартных отчетов по регистрам («Остатки и обороты»), чтобы на конец каждого налогового периода (квартала) сальдо по регистру сводилось к нулю.
  3. При таком ведении учета таблицы итогов RG* не будут разрастаться, а при свертке базы старые закрытые периоды легко удалятся без нарушения целостности.
← На главную