При проведении процедуры свертки (обрезки) информационной базы конфигурации 1С:Торговля и Склад 7.7 администраторы и разработчики часто сталкиваются с ситуацией, когда штатная обработка удаления помеченных объектов не может удалить десятки тысяч старых документов. Одной из главных причин этой проблемы являются регистры КнигаПокупок и КнигаПродаж. Проанализируем, почему эти регистры разрастаются, как они влияют на производительность и ссылочную целостность базы, а также рассмотрим практические способы решения проблемы.
В типовой конфигурации «Торговля и Склад 7.7» первичные документы (ПоступлениеТМЦ, РеализацияТМЦ, СчетФактура и др.) при проведении автоматически формируют приходные движения по регистрам КнигаПокупок и КнигаПродаж. Однако расходные движения по этим регистрам формируются только специализированными регламентными документами (например, ФормированиеЗаписейКнигиПокупок и ФормированиеЗаписейКнигиПродаж).
Если в организации налоговый учет по НДС ведется в бухгалтерской программе (например, 1С:Бухгалтерия 7.7), бухгалтеры не вводят регламентные документы в торговой базе. В результате в регистрах накапливаются исключительно положительные движения («Приход»), а «Расход» отсутствует вовсе.
Разберем технические последствия такой ситуации:
RA*.DBF) и таблицах итогов (файлы RG*.DBF). Если ссылка присутствует в незакрытом регистре, платформа запрещает физическое удаление документа из таблиц 1SJOURN и 1SDOCS.RG*.DBF на каждый последующий месяц. Это приводит к экспоненциальному росту файла итогов.Если книги покупок и продаж ведутся в отдельной бухгалтерской конфигурации, сохранять остатки по этим регистрам на дату свертки нет никакой необходимости. Разберем по шагам, как правильно выполнить очистку:
ОстаткиТМЦ, ПартииНаличие, ВзаиморасчетыПокупателей и т.д.) с помощью штатной или специализированной обработки свертки на выбранную дату (например, на начало года).КнигаПокупок и КнигаПродаж из списка регистров, по которым формируются входящие остатки в документе ввода остатков. Входящие остатки по этим регистрам создавать не нужно.Чтобы исключить повторное накопление «мертвых» остатков в течение следующего рабочего года, целесообразно отключить формирование движений по этим регистрам в модулях документов. Рассмотрим, как это сделать без удаления объектов метаданных:
ПоступлениеТМЦ, РеализацияТМЦ, СчетФактура, СчетФактураПолученный, СтрокаВыпискиПриход, СтрокаВыпискиРасход).ОбработкаПроведения найдем вызовы функций формирования движений по регистрам КнигаПокупок и КнигаПродаж и закомментируем их.Посмотрим на пример закомментированного кода проведения:
// РегКнигаПокупок = СоздатьОбъект("Регистр.КнигаПокупок");
// РегКнигаПокупок.Приход();
// РегКнигаПокупок.СчетФактура = ТекущийДокумент();
// РегКнигаПокупок.Записать();
Такой подход сохраняет типовую структуру метаданных, что позволяет без проблем обновлять отчетность, но полностью останавливает рост ненужных таблиц.
Если база является нетиповой или полностью снята с поддержки, самым кардинальным и эффективным решением будет полное удаление регистров КнигаПокупок и КнигаПродаж из дерева метаданных конфигурации.
КнигаПокупок и КнигаПродаж (а также другие неиспользуемые регистры, если в них нет потребности, например, регистры учета наличных и безналичных денежных средств).RA*.DBF и RG*.DBF из каталога базы данных, что мгновенно освободит дисковое пространство и ускорит расчет итогов.В случаях, когда конфигурация не изменяется, но требуется быстро очистить накопленные миллионы строк движений в файловой базе, разберем низкоуровневый порядок действий:
1Cv7.DD любым текстовым редактором и находим идентификаторы таблиц нужных регистров (ищем строки с описанием Регистр.КнигаПокупок и Регистр.КнигаПродаж). Находим соответствующие имена файлов (например, RA1234.DBF и RG1234.DBF).ZAP или упаковываем PACK) в найденных файлах движений и итогов.*.CDX из каталога базы данных.Если на предприятии книги покупок и продаж формируются непосредственно в торговой базе для сверки данных с бухгалтерией, регистры очищать нельзя. В этом случае необходимо настроить корректный регулярный документооборот:
ФормированиеЗаписейКнигиПокупок и ФормированиеЗаписейКнигиПродаж.RG* не будут разрастаться, а при свертке базы старые закрытые периоды легко удалятся без нарушения целостности.