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