Как перепровести документы в 1С:Управлении торговлей 11.4, если проведение блокируется контролем остатков?

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

При работе в программе 1С:Управление торговлей 11.4 (а также в сопряженных конфигурациях 1С:Комплексная автоматизация 2.4 и 1С:ERP 2.4) пользователи часто сталкиваются с неприятной ситуацией. Возникает необходимость восстановить последовательность и перепровести документы за прошлый период (например, за месяц или квартал). Однако система начинает выдавать ошибки о нехватке товаров, ссылаясь на то, что на складе отсутствует нужное количество позиций. При этом пользователь точно знает: на дату проведения конкретного документа остаток был положительным, а дефицит возникает только на текущую дату.

В этой статье мы подробно проанализируем ситуацию, выясним причину такого поведения системы, разберем по шагам логику работы контроля остатков в современных конфигурациях и рассмотрим несколько эффективных практических способов решения этой проблемы.

Почему возникает эта проблема? Разбираем механизм контроля остатков

В старых версиях программных продуктов (например, в легендарной 1С:Управлении торговлей 10.3) контроль остатков выполнялся преимущественно при оперативном проведении — то есть «текущим временем». Если документ проводился «задним числом» (неоперативно), система по умолчанию пропускала проверку лимитов, предполагая, что пользователь вручную контролирует корректность хронологии.

В современных конфигурациях на платформе 1С:Предприятие 8.3 применяется так называемая «новая методика проведения». Контроль остатков здесь работает всегда, независимо от того, проводится документ оперативно или неоперативно. Логика проверки выглядит следующим образом:

  1. Документ делает предварительные («виртуальные») движения по регистрам накопления (например, по регистру ТоварыНаСкладах или ТоварыОрганизаций).
  2. Система анализирует получившиеся остатки в контрольных точках временной шкалы. Проверка выполняется:
    • На дату проводимого документа (с учетом его времени).
    • На конец месяца, в котором проводится документ.
    • На конец каждого последующего месяца, который следует за проводимым документом (если в будущем уже есть движения).
    • На текущую дату (дату актуальности системы).
  3. Если хотя бы в одной из этих точек остаток уходит в минус (становится отрицательным), транзакция проведения отменяется, а пользователю выводится сообщение об ошибке.

Посмотрим на пример, который наглядно демонстрирует возникновение «замкнутого круга» при попытке последовательного проведения документов:

Проанализируем текущую ситуацию в базе данных. На текущий момент в системе числится только Поступление от 01.01.2020 (+2) и Реализация от 10.02.2020 (-2). Итоговый остаток равен 0.

Теперь мы пытаемся последовательно провести документы. Начинаем с Реализации от 01.02.2020 (-2 шт.). На дату 01.02.2020 в системе есть остаток +2 шт. (от поступления 01.01.2020). Казалось бы, документ должен провестись. Но система делает виртуальную запись и проверяет остатки по всей цепочке вперед. На дату 10.02.2020 у нас уже проведена вторая реализация на -2 шт. Если мы сейчас проведем реализацию от 01.02.2020, то на дату 10.02.2020 (и на текущую дату) общий остаток составит 2 - 2 - 2 = -2. Контроль остатков видит этот будущий минус и блокирует проведение Реализации от 01.02.2020, выдавая ошибку нехватки товара. Провести последующее Поступление от 05.02.2020 (+10 шт.), которое исправило бы этот минус, мы не можем, пока не разберемся с предыдущими документами. Мы оказались в тупике.

Рассмотрим подробнее четыре практических способа, как обойти это ограничение и успешно перепровести все документы за период.

---

Способ 1: Временное отключение контроля остатков для текущего сеанса (Рекомендуемый)

Разработчики фирмы 1С предусмотрели штатную возможность временно отключать контроль остатков товаров для проведения регламентных работ по исправлению последовательности. Это самый быстрый и безопасный способ, не требующий написания программного кода.

Выполним процедуру настройки по шагам:

  1. Перейдем в раздел меню НСИ и администрирование, затем выберем пункт Настройка НСИ и разделов -> Финансовый результат и контроллинг.
  2. Развернем группу параметров Учет товаров.
  3. Найдем опцию Контролировать остатки товаров организаций и временно снимем этот флаг. Если в системе настроен контроль по складам, перейдем в карточки складов (раздел Склады и магазины) и в поле «Вариант контроля остатков» установим значение Не использовать.
  4. Если мы не хотим отключать контроль для всех пользователей информационной базы, воспользуемся специальной функцией отключения контроля для текущего сеанса (доступно администраторам в настройках параметров разделов учета товаров).
  5. Запустим групповое перепроведение документов за требуемый период (например, через стандартную обработку Проведение документов). Все документы проведутся успешно в хронологическом порядке. Чтобы исключить появление случайных ошибок после массовых изменений, применяется инструмент автоматической сверки бухгалтерских и налоговых проводок для сравнения данных в текущей базе и в её резервной копии.
  6. Важно: после завершения перепроведения обязательно вернем настройки контроля остатков в исходное (включенное) состояние! Это предотвратит появление реальных ошибок списания товаров «в минус» при текущей работе менеджеров.

---

Способ 2: Метод полной последовательной очистки (хронологический)

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

Разберем алгоритм действий:

  1. Выделим в списке документов все расходные документы (Реализация товаров и услуг, Списание товаров, Перемещение товаров) за восстанавливаемый период и отменим их проведение (распроведем). Это полностью освободит остатки на складах и снимет «блокирующие» будущие минусы.
  2. Затем выберем все приходные документы (Приобретение товаров и услуг, Оприходование излишков товаров) за этот же период и последовательно проведем их. Теперь на каждую дату в системе будет зафиксировано корректное фактическое поступление товаров.
  3. После этого запустим хронологическое проведение ранее распроведенных расходных документов. Поскольку весь приход уже зафиксирован в базе, документы расхода проведутся без ошибок контроля остатков.

---

Способ 3: Использование встроенного Помощника закрытия месяца

В программе 1С:УТ 11.4 предусмотрен интеллектуальный инструмент автоматического исправления подобных ошибок. При выполнении процедуры закрытия месяца система сама выявляет коллизии в остатках.

Рассмотрим, как задействовать этот механизм:

  1. Перейдем в раздел Финансовый результат и контроллинг -> Закрытие месяца.
  2. Запустим процедуру закрытия за проблемный период. При возникновении ошибок система остановится на этапе «Оформление документов» и выведет предупреждение Отрицательные остатки по товарам организаций.
  3. Нажмем на гиперссылку Подробнее рядом с этой ошибкой, а затем нажмем кнопку Исправить.
  4. Система откроет специализированный Помощник по исправлению отрицательных остатков товаров организаций. Этот инструмент проанализирует базу и поможет автоматически перераспределить остатки (например, исправить пересортицу по номерам ГТД или между организациями холдинга), а также проведет «зависшие» документы в правильном порядке.

---

Способ 4: Программный обход контроля остатков для разработчиков

Если вы хотите автоматизировать этот процесс или написать внешнюю обработку для точечного проведения документов в обход контроля остатков, можно воспользоваться программными механизмами платформы 1С. В коде проведения документов УТ 11.4 анализируются дополнительные свойства объектов.

Посмотрим на пример кода, который позволяет временно отключить проверку остатков для конкретного документа при его проведении из внешней обработки:


// Создадим выборку документов для перепроведения
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	РеализацияТоваровУслуг.Ссылка КАК Ссылка
    |ИЗ
    |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |	РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
    |	И РеализацияТоваровУслуг.Проведен = ИСТИНА";

Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ВыбДатаНачала));
Запрос.УстановитьПараметр("ДатаКонца", КонецДня(ВыбДатаКонца));

РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    // Получаем объект документа для изменения свойств
    ДокОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
    
    // Передаем параметр в дополнительные свойства, отключающий контроль остатков
    ДокОбъект.ДополнительныеСвойства.Вставить("ПропуститьКонтрольОстатков", Истина);
    
    Попытка
        // Записываем документ в режиме проведения
        ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
        Сообщить("Успешно проведен документ: " + Строка(ДокОбъект));
    Исключение
        Сообщить("Ошибка проведения документа " + Строка(ДокОбъект) + ": " + ОписаниеОшибки());
    КонецПопытки;
КонецЦикла;

Использование свойства ПропуститьКонтрольОстатков в структуре ДополнительныеСвойства позволяет временно обойти алгоритмы проверки дефицита товаров, заложенные в модуле проведения документа, без необходимости менять глобальные константы и настройки всей информационной базы.

Проанализировав все представленные варианты, мы рекомендуем использовать Способ 1 для быстрой ручной корректировки силами администратора системы или обратиться к Способу 3, если ошибки вызваны расхождениями в учете организаций (интеркампани) либо пересортицей по ГТД.

← На главную