Проблема контроля отрицательных остатков в программе «1С:Управление торговлей» редакции 11.1 (УТ 11.1) является одной из самых запутанных для администраторов и программистов. В этой версии архитектура контроля была значительно переработана по сравнению с «десяткой», что часто вводит в заблуждение даже опытных специалистов. Бывают ситуации, когда все необходимые флаги в интерфейсе установлены, но пользователи с правами Работник склада продолжают «молча» проводить документы, уводя остатки в минус. Разберем детально, почему это происходит и как настроить систему корректно.
Прежде всего, проанализируем архитектурную особенность УТ 11. В этой конфигурации контроль остатков разделен на два независимых механизма, которые часто путают:
Склады. Она отвечает за физическое наличие товара на конкретной территории. Если вы хотите запретить списание товара, которого нет на полках, нужно работать именно с этим параметром.Рассмотрим ситуацию, описанную пользователем: признак контроля организаций выключен, а признак «Контролировать обеспечение» на складе включен. Казалось бы, система должна блокировать проведение, если товара на складе ноль. Однако этого не происходит. Выясним причину.
В УТ 11.1 установка флага «Контролировать обеспечение» в справочнике Склады — это лишь половина дела. На самом деле программный код системы при проведении документа обращается не напрямую к реквизиту склада, а к специализированному регистру сведений — Настройка контроля обеспечения.
Проанализируем механизм работы: при установке флага в карточке склада система должна автоматически создать запись в этом регистре. Но из-за ошибок в коде, программных сбоев или некорректного импорта данных запись может не появиться. В результате:
Настройка контроля обеспечения пусто.Решение проблемы: Как выяснил автор темы, самым простым и эффективным способом восстановления связи является обычная перезапись элемента справочника «Склады». При нажатии кнопки «Записать и закрыть» в карточке склада срабатывают обработчики событий, которые принудительно создают или обновляют записи в регистре Настройка контроля обеспечения. После этого контроль начинает работать корректно.
Если перезапись склада не помогла, выполним более глубокую диагностику. Перейдем в меню «Все функции» (или «Функции для технического специалиста») и найдем регистр сведений Настройка контроля обеспечения. Проверим наличие записей:
Истина (галочка).Если записей нет, их можно создать вручную или убедиться, что тип склада поддерживает контроль (например, для складов с типом «Кладовая цеха» в ранних версиях могли быть нюансы).
Еще одна причина, по которой контроль может «молчать» — это специфические права пользователя. Проанализируем роль «Разрешить проведение документа без контроля остатков». Если пользователю с профилем Работник склада назначена эта роль (напрямую или через другие профили), система проигнорирует все запреты. Документ будет проведен, а внизу экрана может появиться лишь малозаметное предупреждение, на которое сотрудники часто не обращают внимания.
Рекомендуем проверить настройки в разделе «Администрирование — Настройки пользователей и прав — Профили групп доступа». Исключите роль, разрешающую превышение остатков, из рабочего профиля кладовщика.
Важно помнить, как работает 1С с понятием времени. Рассмотрим разницу между типами проведения:
Оперативное проведение выполняется, когда дата документа совпадает с текущим моментом. В этом случае УТ 11.1 выполняет жесткий контроль остатков «здесь и сейчас».
Неоперативное проведение (проведение «задним числом») в типовой логике УТ 11 часто не предполагает контроля текущих остатков, так как система считает, что вы восстанавливаете последовательность событий. Если ваш пользователь вводит документы вчерашней датой, контроль может не срабатывать по условиям самой конфигурации. Проверьте программный код в модуле менеджера или серверных модулях проведения, чтобы убедиться в наличии вызовов процедур контроля для неоперативного режима.
Для программистов, желающих разобраться в механике «под капотом», рассмотрим, куда ведут нити исполнения. Основная логика контроля в УТ 11.1 сосредоточена в общем модуле ПроведениеСерверУТ. Найдите процедуру со следующим названием:
Процедура ВыполнитьКонтрольРезультатовПроведения(ПараметрыПроведения, УзелКонтроля) Экспорт
// В этой процедуре система анализирует таблицы остатков,
// сформированные в процессе проведения, и сопоставляет их
// с настройками из регистра "Настройка контроля обеспечения".
КонецПроцедуры
Если вы столкнулись с тем, что контроль не работает даже после настройки регистров, поставьте точку останова в этой процедуре. Проанализируйте содержимое переменной ПараметрыПроведения. Система проверяет остатки по регистру накопления СвободныеОстатки. Если по каким-то причинам движения по этому регистру не формируются (например, из-за специфических статусов документа вроде «К отгрузке» вместо «Реализовано»), то и контролировать будет нечего.
В ходе обсуждения на форумах часто всплывает мнение, что контроль отрицательных остатков мешает работе. Проанализируем этот аргумент. Оппоненты контроля утверждают, что если клиент стоит перед кладовщиком с товаром в руках, а база не дает выписать накладную из-за ошибки в учете, то бизнес теряет деньги в реальном времени. В таких случаях «минус» в базе — это лишь отражение того, что учет отстал от реальности (товар приехал, но приходную накладную еще не завели).
Однако для большинства торговых предприятий контроль остатков необходим, так как:
Если ваша компания придерживается строгой дисциплины учета, убедитесь, что регистр Настройка контроля обеспечения заполнен, а роли пользователей ограничены. Это позволит избежать хаоса на складе и обеспечит достоверность данных в вашей 1С.