Как настроить контроль остатков в 1С:УНФ и избежать «минусов» при работе задним числом?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет Торговля и дистрибуция
← На главную

Многие пользователи и администраторы системы 1С:Управление нашей фирмой (УНФ) сталкиваются с ситуацией, когда программа позволяет проводить документы расхода «задним числом», даже если на тот момент товара фактически не было на складе. Это создает серьезный хаос в учете, особенно при синхронизации с 1С:Бухгалтерией (БП), где контроль остатков работает более строго — по дате документа. В этой статье мы подробно разберем, почему так происходит, как работает механизм резервирования и какие шаги нужно предпринять, чтобы навести порядок в складском учете.

Разберем причину: что такое «Оперативный контроль»

Проанализируем архитектуру 1С:УНФ. В отличие от многих других конфигураций, в УНФ по умолчанию реализован так называемый оперативный контроль. Это означает, что система проверяет наличие товара на текущий момент (на «сейчас»), а не на момент времени, указанный в документе, если вы создаете его прошедшей датой.

Рассмотрим пример: сегодня на складе есть 10 единиц товара, которые пришли утром. Если менеджер решит выписать накладную вчерашним числом, система УНФ позволит это сделать, так как «на текумент» остаток положительный. Однако в 1С:Бухгалтерии такая операция не пройдет, так как на вчерашнее число остаток был нулевым. Выясним причину такого поведения: разработчики заложили эту логику, чтобы не блокировать работу менеджеров в условиях, когда документы поступления могут вноситься с опозданием, но для корректного учета это часто становится проблемой.

Механизм резервирования: «Склад» против «Заказа»

Часто пользователи жалуются на «фантомную нехватку» или, наоборот, неожиданные минусы при использовании Заказа покупателя. Посмотрим на ситуацию глубже. В УНФ существует разделение на физический остаток и доступный остаток.

  1. Остаток на складе: общее количество товара, которое физически находится в ячейках.
  2. Резерв: товар, который еще не ушел со склада, но уже «обещан» под конкретный заказ.
  3. Доступно: Остаток на складе минус Резерв.

Важно понимать, что документ Заказ покупателя сам по себе не списывает товар и не создает минус на складе. Он лишь создает запись в регистре резервов. Проблемы начинаются, когда менеджеры не умеют работать с документом Резервирование запасов. Если товар заблокирован старым заказом, который так и не был отгружен, система не даст продать его новому клиенту. В таких случаях полезно использовать обработку для исключения резервов или внедрить автоматическое снятие резервов в УНФ по истечении срока. Проанализируем движения по регистрам: если вы видите остаток, но документ не проводится — проверьте отчет «Остатки товаров» или используйте вывод актуальных остатков и цен в списках номенклатуры.

Решение 1: Административные меры и ограничение прав

Прежде чем приступать к написанию кода, рассмотрим самый эффективный способ борьбы с беспорядком — административный. Как показывает практика, бесконтрольное исправление документов задним числом невозможно победить только программно.

Рекомендуем применить следующие правила:

  1. Ограничение круга лиц: Право проведения документов задним числом должно быть только у 1–2 ответственных сотрудников (например, главного бухгалтера или администратора склада).
  2. Дата запрета редактирования: Регулярно устанавливайте дату запрета редактирования. Это заставит сотрудников вносить данные оперативно.
  3. Регламент исправлений: Любое исправление в закрытом периоде должно сопровождаться служебной запиской. Это дисциплинирует персонал и позволяет собрать статистику: почему документы не вводятся вовремя.

Решение 2: Типовые настройки и обновление системы

Проверьте настройки вашей программы. В последних версиях 1С:УНФ разработчики внедрили более совершенные механизмы контроля. Убедитесь, что в разделе «Настройки — Еще больше возможностей — Закупки» включен контроль остатков.

Посмотрим на поведение системы при включенном контроле: она должна блокировать проведение расхода, если итоговый остаток (после проведения документа) станет отрицательным. Однако помните, что без кастомных доработок это все равно остается оперативным контролем на текущий момент времени.

Решение 3: Программная доработка (Создание собственного контроля)

Если типовых средств недостаточно, и вам требуется «жесткий» контроль именно на дату документа (как в 1С:Бухгалтерии), необходимо использовать механизм расширений. Можно установить готовое расширение для контроля остатков для бухгалтерии в 1С:УНФ или реализовать собственную логику. Рассмотрим алгоритм, который следует реализовать программисту. Нужно перехватить процедуру ОбработкаПроведения в документах расхода (Расходная накладная, Заказ-наряд, Списание запасов).

Проанализируем примерный алгоритм проверки:


// В расширении для документа РасходнаяНакладная
&Перед("ОбработкаПроведения")
Процедура Контроль_ПередОбработкойПроведения(Отказ, РежимПроведения)
    
    Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
        Возврат; // Оперативный контроль отработает штатно
    КонецЕсли;

    // Выполняем запрос к остаткам на МоментВремени документа
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ЗапасыОстатки.Номенклатура,
    |   ЗапасыОстатки.КоличествоОстаток
    |ИЗ
    |   РегистрНакопления.Запасы.Остатки(&МоментКонтроля, ) КАК ЗапасыОстатки";
    
    Запрос.УстановитьПараметр("МоментКонтроля", ЭтотОбъект.МоментВремени());
    
    // Сравниваем остаток с количеством в табличной части
    // Если остатка на дату документа меньше, чем в ТЧ - Отказ = Истина;
    
КонецПроцедуры

Такой подход заставит систему проверять наличие товара на каждую секунду времени в прошлом. Это решит проблему синхронизации с БП, так как «минусы» в истории движений просто не смогут появиться.

Особенности партионного учета

Разберем еще один важный аспект: партионный учет по методу FIFO. В УНФ при проведении документа задним числом система должна пересчитать всю цепочку списания партий. Если вы вставляете расход «в середину» месяца, это может привести к тому, что последующие документы расхода «потеряют» свои партии. Чтобы облегчить этот процесс, можно использовать автоматическое заполнение партий в УНФ. Именно поэтому важно не просто проверять остаток, но и следить за последовательностью проведения. Проанализируем ситуацию: если документ проведен, но выдает странные ошибки при синхронизации, скорее всего, нарушена граница последовательности, и требуется полное перепроведение документов за период.

Резюме и рекомендации

Для наведения порядка в 1С:УНФ мы рекомендуем действовать комплексно:

Помните, что автоматизация хаоса приводит лишь к автоматизированному хаосу. Только сочетание правильных настроек программы и дисциплины пользователей позволит вам иметь актуальные и достоверные данные по складским остаткам.

← На главную