Обработка получает и показывает на форме таблицу с лишними остатками.
Запрос.Текст =
"ВЫБРАТЬ
| РаспределениеЗапасов.Номенклатура КАК Номенклатура,
| РаспределениеЗапасов.Характеристика КАК Характеристика,
| РаспределениеЗапасов.Склад КАК Склад,
| РаспределениеЗапасов.Назначение КАК Назначение,
| СУММА(РаспределениеЗапасов.ВНаличии) КАК ВНаличии,
| СУММА(ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0)) КАК Результат
|ИЗ
| РегистрСведений.РаспределениеЗапасов КАК РаспределениеЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
| ПО РаспределениеЗапасов.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
| И РаспределениеЗапасов.Характеристика = ТоварыНаСкладахОстатки.Характеристика
| И РаспределениеЗапасов.Склад = ТоварыНаСкладахОстатки.Склад
| И РаспределениеЗапасов.Назначение = ТоварыНаСкладахОстатки.Назначение
|ГДЕ
| РаспределениеЗапасов.Состояние = ЗНАЧЕНИЕ(Перечисление.РаспределениеЗапасовСостояния.ОстатокНаСкладе)
|
|СГРУППИРОВАТЬ ПО
| РаспределениеЗапасов.Номенклатура,
| РаспределениеЗапасов.Характеристика,
| РаспределениеЗапасов.Склад,
| РаспределениеЗапасов.Назначение
|
|ИМЕЮЩИЕ
| СУММА(ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0)) < СУММА(РаспределениеЗапасов.ВНаличии)";
Далее можно выбрать те записи, которые требуется исправить, и нажать кнопку "Исправить".
Записи в регистре сведений удаляются или перезаписываются с меньшим количеством:
Если СтрТз.Пометка Тогда
НаборЗаписей = РегистрыСведений.РаспределениеЗапасов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Состояние.Установить(Перечисления.РаспределениеЗапасовСостояния.ОстатокНаСкладе);
НаборЗаписей.Отбор.Номенклатура.Установить(СтрТз.Номенклатура);
НаборЗаписей.Отбор.Характеристика.Установить(СтрТз.Характеристика);
НаборЗаписей.Отбор.Назначение.Установить(СтрТз.Назначение);
НаборЗаписей.Отбор.Склад.Установить(СтрТз.Склад);
НаборЗаписей.Прочитать();
Для Каждого Запись ИЗ НаборЗаписей Цикл
Если СтрТз.Результат = 0 Тогда
НаборЗаписей.Очистить();
Иначе
Запись.ВНаличии = СтрТз.Результат;
Запись.Свободно = Мин(СтрТз.Результат,Запись.Свободно);
Запись.Запас = СтрТз.Результат;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать();
КонецЕсли;
После этого действия данные отчетов Ведомость по товарам на складах и Остатки и доступность товаров совпадают.
Проверено на версии 1С 8.3.20.1789 для конфигурации Управление торговлей, редакция 11 (11.5.8.267).