При работе в программе 1С:Управление торговлей 11.4 (а также в сопряженных конфигурациях 1С:Комплексная автоматизация 2.4 и 1С:ERP 2.4) пользователи часто сталкиваются с неприятной ситуацией. Возникает необходимость восстановить последовательность и перепровести документы за прошлый период (например, за месяц или квартал). Однако система начинает выдавать ошибки о нехватке товаров, ссылаясь на то, что на складе отсутствует нужное количество позиций. При этом пользователь точно знает: на дату проведения конкретного документа остаток был положительным, а дефицит возникает только на текущую дату.
В этой статье мы подробно проанализируем ситуацию, выясним причину такого поведения системы, разберем по шагам логику работы контроля остатков в современных конфигурациях и рассмотрим несколько эффективных практических способов решения этой проблемы.
В старых версиях программных продуктов (например, в легендарной 1С:Управлении торговлей 10.3) контроль остатков выполнялся преимущественно при оперативном проведении — то есть «текущим временем». Если документ проводился «задним числом» (неоперативно), система по умолчанию пропускала проверку лимитов, предполагая, что пользователь вручную контролирует корректность хронологии.
В современных конфигурациях на платформе 1С:Предприятие 8.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С:УТ 11.4 предусмотрен интеллектуальный инструмент автоматического исправления подобных ошибок. При выполнении процедуры закрытия месяца система сама выявляет коллизии в остатках.
Рассмотрим, как задействовать этот механизм:
Отрицательные остатки по товарам организаций.---
Если вы хотите автоматизировать этот процесс или написать внешнюю обработку для точечного проведения документов в обход контроля остатков, можно воспользоваться программными механизмами платформы 1С. В коде проведения документов УТ 11.4 анализируются дополнительные свойства объектов.
Посмотрим на пример кода, который позволяет временно отключить проверку остатков для конкретного документа при его проведении из внешней обработки:
// Создадим выборку документов для перепроведения
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
| И РеализацияТоваровУслуг.Проведен = ИСТИНА";
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ВыбДатаНачала));
Запрос.УстановитьПараметр("ДатаКонца", КонецДня(ВыбДатаКонца));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Получаем объект документа для изменения свойств
ДокОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
// Передаем параметр в дополнительные свойства, отключающий контроль остатков
ДокОбъект.ДополнительныеСвойства.Вставить("ПропуститьКонтрольОстатков", Истина);
Попытка
// Записываем документ в режиме проведения
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Сообщить("Успешно проведен документ: " + Строка(ДокОбъект));
Исключение
Сообщить("Ошибка проведения документа " + Строка(ДокОбъект) + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Использование свойства ПропуститьКонтрольОстатков в структуре ДополнительныеСвойства позволяет временно обойти алгоритмы проверки дефицита товаров, заложенные в модуле проведения документа, без необходимости менять глобальные константы и настройки всей информационной базы.
Проанализировав все представленные варианты, мы рекомендуем использовать Способ 1 для быстрой ручной корректировки силами администратора системы или обратиться к Способу 3, если ошибки вызваны расхождениями в учете организаций (интеркампани) либо пересортицей по ГТД.