При нарушении хронологической последовательности проведения документов реализации в программе «1С:Управление торговлей 11» пользователи часто сталкиваются с ситуацией, когда ранее оформленные документы невозможно провести повторно. Система сообщает о нехватке остатков в регистре Товары организаций, хотя на физических складах товар присутствует в полном объеме. Выясним внутренние механизмы платформы, приводящие к этой проблеме, и подробно разберем способы ее устранения.
Почему возникает блокировка и не помогает обычное перепроведение?
Проанализируем структуру хранения данных в конфигурациях на базе ERP-платформы 1С. В документах выбытия (таких как РеализацияТоваровУслуг, СписаниеНедостачТоваров, ВнутреннееПотреблениеТоваров) присутствует скрытая служебная табличная часть — ВидыЗапасов. В ней фиксируется конкретная принадлежность списываемого товара: организация-владелец, поставщик, ставка НДС, номер ГТД и признак налогообложения.
Механизм распределения работает по следующим правилам:
Кэширование данных: При первичном проведении документа табличная часть ВидыЗапасов заполняется автоматически и сохраняется внутри самого документа. При последующем стандартном групповом перепроведении система не рассчитывает эту аналитику с нуля, а пытается списать именно те строки, которые уже зафиксированы в табличной части.
Перехват остатков: Если один документ распровели, а затем провели более поздние отгрузки, эти поздние документы забирают освободившиеся остатки себе. Когда мы пытаемся вернуть исходный документ в проведенное состояние, система обнаруживает, что сохраненные в нем виды запасов уже израсходованы другими операциями. Возникает блокировка.
Особенность штатных обработок: Стандартная обработка Групповое проведение документов выполняет обычный вызов метода записи без предварительной отмены проведения. Поскольку строки табличной части не очищаются, документ продолжает претендовать на недоступные остатки.
Способ 1. Восстановление последовательности через отмену проведения и хронологический расчет
Рассмотрим основной способ решения коллизии. Чтобы табличная часть видов запасов пересчиталась заново с учетом реальных остатков на момент совершения операции, документ необходимо сначала обязательно распровести.
Разберем по шагам правильный порядок действий:
Сброс зависимых документов: Если на предприятии используется схема интеркампани, распроводим все регламентные и межфирменные документы за проблемный период — ПередачаТоваровМеждуОрганизациями, ОтчетПоКомиссииМеждуОрганизациями и документы ИсправлениеРазвернутогоСальдоТоваровОрганизаций. Пока передачи проведены, они жестко блокируют перемещение партий.
Снятие проведения с проблемных документов: Снимаем с проведения все документы реализации, которые сформировали коллизию (включая те, которые сейчас не проводятся, и те, которые ошибочно перехватили их остатки).
Последовательное проведение: Выстраиваем все приходные и расходные документы в строгий хронологический порядок по дате и времени. Выполняем поочередное проведение начиная с самых ранних дат. При проведении непроведенного документа система выполняет алгоритм автоподбора заново и корректно заполняет табличную часть ВидыЗапасов.
Восстановление межфирменных цепочек: После успешного закрытия товарных цепочек переходим в рабочее место Передачи к оформлению, формируем новые документы межфирменных передач и проводим их.
Способ 2. Программное перезаполнение видов запасов
Если документов много и вручную отменять проведение нерационально, воспользуемся программной обработкой. В конфигурациях линейки «1С:Управление торговлей 11» предусмотрен специальный параметр для принудительного обновления аналитики без необходимости интерактивного нажатия кнопок в каждом документе.
Посмотрим на пример кода, который выполняет принудительное перезаполнение видов запасов для выборки документов:
Выборка = Документы.РеализацияТоваровУслуг.Выбрать(ДатаНачала, ДатаКонца);
Пока Выборка.Следующий() Цикл
ДокументОбъект = Выборка.ПолучитьОбъект();
// Сбрасываем признак ручной корректировки, если он был установлен
Если ДокументОбъект.Метаданные().Реквизиты.Найти("ВидыЗапасовУказаныВручную") <> Неопределено Тогда
ДокументОбъект.ВидыЗапасовУказаныВручную = Ложь;
КонецЕсли;
// Очищаем существующую табличную часть
ДокументОбъект.ВидыЗапасов.Очистить();
// Передаем системный флаг для алгоритмов проведения конфигурации
ДокументОбъект.ДополнительныеСвойства.Вставить("ПерезаполнитьВидыЗапасов", Истина);
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить("Не удалось провести документ: " + ДокументОбъект.Ссылка + " — " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Указанный алгоритм гарантирует очистку старых заблокированных строк и запускает стандартный расчет видов запасов по актуальным данным регистра Товары организаций на момент даты документа.
Способ 3. Использование помощника закрытия месяца
В типовом функционале программы присутствует регламентный механизм, способный выровнять расхождения по видам запасов в конце отчетного периода.
Разберем процедуру использования этого механизма:
Переходим в раздел Финансовый результат и контроллинг — Закрытие месяца.
Выбираем организацию и отчетный период.
Находим регламентные операции: Исправление отрицательных остатков товаров организаций и Исправление развернутого сальдо по видам запасов и ГТД.
В настройках операции выбираем режим исправления для всех документов периода.
Система автоматически создаст корректировочные документы, устраняющие пересортицу по аналитике видов запасов, после чего закрытие месяца завершится без ошибок.
Способ 4. Временное отключение контроля остатков
В экстренных случаях, когда восстановить строгую хронологию невозможно из-за большого числа заблокированных отгрузок, применим обходной маневр с последующим штатным исправлением:
В разделе администрирования (настройки учета товаров) временно отключаем опцию Контролировать остатки товаров организаций.
Проводим все проблемные документы реализации. Поскольку оперативный контроль выключен, документы запишутся и сформируют движения в регистре Товары организаций (возможно, с образованием временных отрицательных остатков или развернутого сальдо).
Запускаем процедуру Закрытие месяца и выполняем пункты исправления отрицательных остатков и развернутого сальдо по видам запасов. Помощник автоматически сформирует требуемые движения для балансировки аналитики.
Обязательный шаг: После устранения перекосов возвращаем флаг Контролировать остатки товаров организаций в активное состояние, чтобы исключить возникновение неконтролируемых минусов в будущем.