При закрытии месяца в 1С:Управление торговлей 11.5 (а также в ERP 2.5 и КА 2.5) пользователи часто сталкиваются с парадоксальной ситуацией: Помощник исправления остатков товаров организаций указывает на наличие проблем в прошлых месяцах (например, в феврале при закрытии апреля), но при этом пишет, что отрицательных остатков «0». При этом стандартные отчеты по остаткам не показывают явных минусов. Разберемся детально, почему так происходит, как диагностировать скрытые ошибки и какими инструментами их исправлять.
Самая частая причина «невидимых» ошибок — это так называемое развернутое сальдо. Это ситуация, когда в целом по организации и складу остаток товара положительный или нулевой, но в разрезе дополнительных аналитик (например, Номеров ГТД или Видов запасов) висит одновременно и плюс, и минус.
Рассмотрим ситуацию: в карточке номенклатуры включен флаг ВестиУчетПоГТД. Если часть товара была списана без указания ГТД (пустое значение), а поступила с указанием конкретного номера ГТД, система видит это как две разные записи в регистре ТоварыОрганизаций. В итоге отчет «Остатки товаров» без детальной группировки покажет корректный общий остаток, но Помощник будет блокировать закрытие месяца, так как видит технический «минус» на пустом ГТД.
При использовании схемы Intercompany (перепродажи между организациями) отрицательные остатки могут «маскироваться» в регистре РезервыТоваровОрганизаций. Система фиксирует потребность одной организации в товаре другой еще до оформления официальных документов передачи. Помощник анализирует этот регистр наряду с основным, и если цепочка передач не завершена или оформлена с ошибками в аналитике, он будет требовать исправления, даже если фактически товар на складе есть.
Для понимания того, как именно Помощник «видит» остатки, проанализируем фрагмент кода запроса, который используется в модуле менеджера обработки ПомощникИсправленияОстатковТоваровОрганизаций. Этот запрос собирает данные из двух ключевых регистров и проверяет соответствие признака учета ГТД фактическим записям.
Функция ПомИсп_ЗапросДетальныеОстаткиНаКонецМесяцаИсправления(МесяцИсправления) Экспорт
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
СформироватьВТКонтролируемыеВидыЗапасов(МенеджерВременныхТаблиц);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНаКонецМесяцаИсправления.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ОстаткиНаКонецМесяцаИсправления.Организация КАК Организация,
| ОстаткиНаКонецМесяцаИсправления.ВидЗапасов КАК ВидЗапасов,
| ОстаткиНаКонецМесяцаИсправления.НомерГТД КАК НомерГТД,
| СУММА(ОстаткиНаКонецМесяцаИсправления.КоличествоОстаток) КАК КоличествоОстаток
|ПОМЕСТИТЬ ДетальныеОстаткиНаКонецМесяцаИсправления
|ИЗ
| (ВЫБРАТЬ
| ТоварыОрганизацийОстатки.АналитикаУчетаНоменклатуры,
| ТоварыОрганизацийОстатки.Организация,
| ТоварыОрганизацийОстатки.ВидЗапасов,
| ТоварыОрганизацийОстатки.НомерГТД,
| ТоварыОрганизацийОстатки.КоличествоОстаток
| ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(&ГраницаИсправления,
| ВидЗапасов В (ВЫБРАТЬ Ссылка ИЗ ВТКонтролируемыеВидыЗапасов)) КАК ТоварыОрганизацийОстатки
| ОБЪЕДИНИТЬ ВСЕ
| ВЫБРАТЬ
| РезервыТоваровОрганизаций.АналитикаУчетаНоменклатуры,
| РезервыТоваровОрганизаций.Организация,
| РезервыТоваровОрганизаций.ВидЗапасов,
| РезервыТоваровОрганизаций.НомерГТД,
| РезервыТоваровОрганизаций.КоличествоОстаток
| ИЗ
| РегистрНакопления.РезервыТоваровОрганизаций.Остатки(&ГраницаИсправления,
| ВидЗапасов В (ВЫБРАТЬ Ссылка ИЗ ВТКонтролируемыеВидыЗапасов)) КАК РезервыТоваровОрганизаций) КАК ОстаткиНаКонецМесяцаИсправления
| ГДЕ
| НЕ ОстаткиНаКонецМесяцаИсправления.АналитикаУчетаНоменклатуры.Номенклатура.ВестиУчетПоГТД
| ИЛИ (ОстаткиНаКонецМесяцаИсправления.АналитикаУчетаНоменклатуры.Номенклатура.ВестиУчетПоГТД
| И ОстаткиНаКонецМесяцаИсправления.НомерГТД <> ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка))";
// ... дальнейшая группировка
КонецФункции
Важный нюанс: Обратите внимание на условие ГДЕ. Если в системе есть остатки импортного товара (флаг ГТД включен), но в регистре НомерГТД пустой — такой остаток может отсекаться или обрабатываться специфически, из-за чего Помощник выдает «0» в колонке отрицательных остатков, но не считает период «чистым».
Выясним причину несоответствия, используя стандартные инструменты программы:
Рассмотрим подробнее три основных способа устранения выявленных расхождений:
Если ошибка возникла в текущем (открытом) месяце, достаточно найти первичный документ (например, РеализацияТоваровУслуг или ПеремещениеТоваров), в котором не подтянулся номер ГТД, и перепровести его. При наличии остатков на складе система автоматически заполнит пустые поля аналитики.
В современных релизах УТ 11.5 это наиболее правильный метод. Если вы обнаружили, что в феврале висит «плюс» на одном ГТД и «минус» на пустом ГТД, не нужно открывать период и менять старые документы. Рассмотрим, как это сделать:
В исключительных случаях, когда стандартные документы не справляются (например, при сложных сбоях в Intercompany), можно воспользоваться документом Корректировка регистров. Нам необходимо вручную выровнять остатки по регистру ТоварыОрганизаций и, если требуется, по регистру РезервыТоваровОрганизаций, чтобы убрать технические «зависания» количественных показателей.
Резюме: Если Помощник исправления остатков в УТ 11.5 ведет себя странно и ссылается на «нулевые» ошибки в прошлых месяцах, всегда проверяйте развернутое сальдо по ГТД. Проблема почти всегда заключается в том, что система видит разные «кучки» одного и того же товара из-за незаполненной аналитики, что с точки зрения алгоритмов закрытия месяца является критической ошибкой учета.