Каждый практикующий специалист по внедрению и сопровождению системы 1С:Управление торговлей 11 (а также смежных решений 1С:ERP и 1С:Комплексная автоматизация) рано или поздно сталкивается с ситуацией, когда при закрытии месяца программа выдает ошибки, связанные с отрицательными остатками товаров организаций. При этом пользователь может утверждать, что физически товар на складе есть, даты документов поступления корректны, а оперативные остатки в отчетах выглядят абсолютно правильными. В рамках этой статьи мы подробно разберем, почему возникает данная проблема, как устроена внутренняя логика программы и какими методами ее можно решить на практике.
Для того чтобы понять природу этой ошибки, нам необходимо проанализировать архитектуру хранения данных в 1С:Управление торговлей 11. В отличие от старых версий конфигураций (например, УТ 10.3), где учет был относительно линейным, в УТ 11 учет запасов разделен на несколько параллельных и независимых контуров (регистров накопления):
Когда менеджер проводит документ реализации, система проверяет остатки в оперативном режиме. Если в настройках системы отключен жесткий контроль остатков организаций или складов, программа позволяет проводить документы «задним числом» или в любой произвольной последовательности. Однако при перепроведении документов или при запуске процедуры закрытия месяца хронология восстанавливается. Даже если дата поступления на бумаге меньше даты реализации, внутри базы данных время проведения документов (вплоть до секунд) может нарушать логическую цепочку. Например, документ ПриобретениеТоваровУслуг проведен в 12:00:00, а РеализацияТоваровУслуг — в 10:00:00 того же дня. С точки зрения программы, на 10:00:00 товара еще не было, что порождает локальный отрицательный остаток («оперативный минус»), мешающий корректному расчету себестоимости.
Это одна из самых коварных особенностей конфигурации УТ 11. Зачастую общий количественный остаток по складу сходится в ноль или идет в плюс, но программа все равно отказывается закрывать месяц и сигнализирует о нехватке запасов. Выясним причину этого поведения.
Для каждой записи о движении товаров система генерирует уникальные ключи аналитики, которые записываются в регистр сведений АналитикаУчетаНоменклатуры, а также заполняет скрытую табличную часть под названием Виды запасов в самих документах списания. Рассинхронизация и возникновение отрицательных остатков происходят из-за расхождения аналитики по следующим разрезам:
ЗаказКлиента), его нельзя просто так списать обычной реализацией без указания этого же назначения. Возникает пересортица: по аналитике «Под назначение» висит плюс, а по аналитике «Общий остаток» — минус.В результате в регистре ТоварыОрганизаций образуется классическая «пересортица аналитик». Общее количество по номенклатуре верное, но внутри детальной аналитики по одному ключу висит положительный остаток, а по другому — отрицательный.
В системе присутствует штатный механизм — Помощник исправления остатков товаров организаций. Он призван в автоматическом режиме сопоставлять виды запасов и устранять расхождения. Однако на практике пользователи часто сталкиваются с тем, что помощник сообщает о невозможности выполнения операции из-за нехватки остатков на складе. Проанализируем, почему так происходит:
РаспределениеЗапасов. Помощник видит свободный остаток равным нулю и не может перераспределить виды запасов.ТоварыНаСкладах товар числится, но по регистру ТоварыОрганизаций он уже был списан другим документом, который был проведен более поздним числом.АналитикаУчетаНоменклатуры, из-за чего стандартный алгоритм сопоставления заходит в тупик.Рассмотрим подробнее несколько действенных способов исправления отрицательных остатков и некорректных видов запасов, которые применяются специалистами на практике.
Если проблемных документов немного, наиболее безопасным и методологически верным решением будет точечное исправление аналитики вручную. Разберем этот процесс по шагам:
В ситуациях, когда документов сотни или тысячи, ручная корректировка становится невозможной. В этом случае разработчики прибегают к программному методу исправления. Суть метода заключается в очистке табличной части ВидыЗапасов во всех расходных документах за отчетный период с их последующим групповым перепроведением.
Когда документ проводится с пустой табличной частью ВидыЗапасов, система «с чистого листа» заново анализирует текущие свободные остатки в регистрах и автоматически подставляет актуальные и корректные ключи аналитики, которые есть в наличии.
Для реализации этого метода программисты пишут внешнюю обработку. Посмотрим на пример кода, который выполняет очистку видов запасов и перепроведение документа:
// Пример программного сброса видов запасов для документа Реализация товаров и услуг
Процедура ИсправитьВидыЗапасовНаДокументе(СсылкаНаДокумент)
// Получаем объект документа для редактирования
ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
// Проверяем наличие табличной части "ВидыЗапасов"
Если ДокументОбъект.Метаданные().ТабличныеЧасти.Найти("ВидыЗапасов") <> Неопределено Тогда
// Очищаем табличную часть видов запасов
ДокументОбъект.ВидыЗапасов.Очистить();
// Записываем и проводим документ в режиме проведения
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ успешно перепроведен: " + СсылкаНаДокумент);
Исключение
Сообщить("Ошибка проведения документа " + СсылкаНаДокумент + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецПроцедуры
Перед запуском подобной обработки крайне важно убедиться, что все документы поступления за отчетный период уже введены в базу и проведены в правильной хронологической последовательности. В противном случае система снова распределит виды запасов неверно.
Чтобы оперативно локализовать проблему и понять, по какому именно разрезу аналитики пошло расхождение, мы рекомендуем использовать встроенные аналитические отчеты. Самым информативным в данном случае является отчет Ведомость по товарам организаций или отчет Себестоимость товаров.
Настроим отчет для поиска ошибок:
Ведомость по товарам организаций.Номенклатура -> Организация -> Вид запасов -> Номер ГТД -> Серия.При таком детальном рассмотрении вы сразу увидите строки, где конечный остаток по количеству равен нулю, но при этом внутри группировок присутствуют строки с положительными и отрицательными значениями (например, по одному ГТД висит +10, а по другому -10). Это явный признак пересортицы аналитики, которую необходимо устранить методами, описанными выше.
Чтобы минимизировать появление отрицательных остатков и проблем с закрытием месяца в вашей базе 1С:Управление торговлей 11, рекомендуется придерживаться нескольких правил:
НСИ и администрирование — Настройка НСИ и разделов — Финансовый результат и контроллинг).Помощник исправления остатков товаров организаций еженедельно, чтобы оперативно выявлять и устранять мелкие расхождения до того, как они накопятся в критическую массу.