Каждый практикующий специалист или пользователь программы «1С:Управление торговлей 11» (УТ 11) хотя бы раз сталкивался со странным поведением системы при попытке отменить проведение документов. Типичный сценарий: вы пытаетесь сделать распроведение документа Возврат товаров от клиента, а программа выдает категорический отказ с ошибкой вида: «Не хватает товара... на складе...».
При этом вы открываете складские отчеты, внимательно изучаете остатки и видите, что товар на складе есть либо его остаток равен нулю. Возникает логичный вопрос: почему программа не дает отменить документ, который исторически уже был проведен? Давайте подробно разберем внутренние механизмы платформы 1С, выясним причины такого поведения системы и рассмотрим пошаговые сценарии решения этой проблемы.
Для начала проанализируем математику процесса. Документ Возврат товаров от клиента по своей сути является приходным документом для вашего склада. Когда вы его провели, на склад поступило, например, 2 штуки товара. В дальнейшем этот товар мог быть успешно продан конечному покупателю другим документом (например, Реализация товаров и услуг), в результате чего текущий остаток на складе снизился до 0.
Что происходит, когда мы пытаемся отменить проведение (распровести) этот возврат? Программа пытается выполнить обратное действие — «забрать» со склада эти 2 штуки товара. Но текущий остаток равен 0! Если система разрешит распроведение, то текущий остаток мгновенно превратится в -2 штуки.
В отличие от старых конфигураций (таких как УТ 10.3), в УТ 11 реализован жесткий сквозной контроль остатков. Программа контролирует наличие товара в следующих точках времени:
Таким образом, блокируя отмену проведения возврата, программа страхует базу данных от появления некорректных отрицательных остатков на текущую дату.
Часто пользователи путаются, глядя в обычную складскую ведомость. Дело в том, что в УТ 11 параллельно и независимо друг от друга работают два контура учета:
Товары на складах. Именно по нему строится стандартный отчет «Ведомость по товарам на складах». Он отвечает на вопрос: «Сколько физически коробок лежит на полке?».Товары организаций и Себестоимость товаров. Этот контур отвечает на вопросы: «Какому юридическому лицу принадлежит этот товар?» и «Какова его себестоимость?».При закрытии месяца пользователи часто видят ошибку: «Обнаружены отрицательные остатки по количеству в регистре себестоимости». Это происходит из-за того, что на складе товар физически может присутствовать, но в разрезе конкретной организации или определенного вида запасов его нет. Например, если возврат оформлен без указания конкретного документа продажи, система не может определить партию поступления, что приводит к перекосам в регистре себестоимости. Для решения этой проблемы можно использовать обработку для автоматического исправления отрицательных остатков при закрытии месяца.
Для понимания того, как система видит остатки в регистрах, программисты часто используют запросы к виртуальным таблицам остатков. Рассмотрим пример простого запроса к регистру складских остатков:
ВЫБРАТЬ
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ОстатокНаСкладе
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекущаяДата, Склад = &СкладРозница) КАК ТоварыНаСкладахОстатки
Если этот запрос возвращает нулевое значение, то любая попытка уменьшить остаток (в том числе путем отмены возврата) вызовет ошибку блокировки проведения.
Рассмотрим несколько практических способов обойти данную блокировку и навести порядок в базе данных.
Если вам нужно срочно отменить проведение документа для исправления ошибок, вы можете временно отключить системный контроль лимитов. Выполним следующие действия по шагам:
Возврат товаров от клиента и успешно отменим его проведение.Ошибки вида «отрицательный остаток в регистре себестоимости» при закрытии месяца чаще всего возникают из-за того, что возврат оформлен «вслепую». Проанализируем правильный алгоритм действий:
Реализация товаров и услуг, по которому этот товар изначально отгружался клиенту.В конфигурации 1С:УТ 11 предусмотрен мощный встроенный функционал автоматического исправления перекосов учета. Воспользуемся им:
Обычная складская ведомость не всегда показывает реальную картину по организациям. Чтобы выяснить истинную причину «зависания» остатков, нам нужно запустить другие отчеты:
Себестоимость товаров. Это позволит нам точечно отследить, какой именно документ сделал «минусовое» движение по конкретной номенклатурной позиции.Таким образом, понимая внутреннюю структуру регистров 1С:УТ 11 и логику работы оперативного контроля остатков, вы сможете легко диагностировать подобные ошибки и успешно закрывать отчетные периоды без привлечения программистов.