Часто в базе УТ не требуется типовой суммовой учет по розничным складам. В статье рассказывается, как его отключить и дается обработка для подчистки уже существующих движений.
Нулевые движения – это движения с количеством ноль и ненулевой суммой. Часто они не нужны, наоборот, движения по документу «Переоценка» сильно мешают. Например, в моей базе эти паразитные движения занимали 10% самого объемного регистра «Товары в рознице», которая весила 6 Гб.
Чтобы их отключить, нужно сделать вставку кода в модуль набора записей регистра накопления «Товары в рознице»:
Процедура ПередЗаписью(Отказ, Замещение)
//Осипов - отключаем учет сумм
Для Каждого МЗ ИЗ ЭтотОбъект Цикл
МЗ.СуммаПродажная = 0;
КонецЦикла;
КонецПроцедуры
Принцип простой – если сумма нулевая, то и переоценки не будут делать движений.
Прикладываю обработку, которая удаляет нулевые движения за указанный период:
Нужно выбрать дату начала и конца и она выполнит удаление. Результат выводится в окно сообщений, можно прервать работу обработки:
Код обработки простой, если у документа есть ненулевые движения, она их не затронет:
З = Новый Запрос(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыВРознице.Регистратор
|ИЗ
| РегистрНакопления.ТоварыВРознице КАК ТоварыВРознице
|ГДЕ
| ТоварыВРознице.Количество = 0
| И ТоварыВРознице.Период МЕЖДУ &ДАТА1 И &ДАТА2
|
|УПОРЯДОЧИТЬ ПО
| ТоварыВРознице.Период");
З.УстановитьПараметр("Дата1", Дата1);
З.УстановитьПараметр("Дата2", КонецДня(Дата2));
Выборка = З.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ТекДок = Выборка.Регистратор;
НЗ = РегистрыНакопления.ТоварыВРознице.СоздатьНаборЗаписей();
НЗ.Отбор.Регистратор.Значение = ТекДок;
НЗ.Отбор.Регистратор.Использование = истина;
НЗ.Прочитать();
КУдалению = Новый Массив();
Для Каждого МЗ ИЗ НЗ Цикл
Если МЗ.Количество = 0 Тогда КУдалению.Добавить(МЗ); КонецЕсли;
КонецЦикла;
Для Каждого МЗ Из КУдалению Цикл
НЗ.Удалить(МЗ);
КонецЦикла;
НЗ.ОбменДанными.Загрузка = истина;
НЗ.Записать();
Сообщить(ТекДок);
ОбработкаПрерыванияПользователя();
КонецЦикла;