При работе в конфигурации 1С:Бухгалтерия предприятия 3.0 (начиная с релизов 3.0.103.x) пользователи часто сталкиваются с досадной ошибкой при попытке провести повторную Корректировку реализации. Программа выдает сообщение: «Реализовано меньше чем возвращается». На первый взгляд ситуация кажется абсурдной: бухгалтер видит по карточке счета 41 или 62, что товар был отгружен и его достаточно для оформления возврата или уменьшения стоимости. Однако логика системы 1С в данном случае опирается не на остатки на счетах, а на специализированные регистры контроля.
В этой статье мы подробно разберем, почему возникает эта ошибка, проанализируем работу механизмов контроля и рассмотрим несколько способов решения проблемы — от ручной правки движений до изменения логики работы с документами.
Для того чтобы понять суть проблемы, нам необходимо заглянуть «под капот» системы. Проанализируем, как программа проверяет возможность возврата. При проведении документа Корректировка реализации система обращается к регистру накопления РеализованныеТоварыИУслуги. Этот регистр предназначен специально для того, чтобы отслеживать «виртуальный» остаток отгруженного товара, который еще можно скорректировать в сторону уменьшения.
Рассмотрим стандартную цепочку документов:
РеализованныеТоварыИУслуги со знаком «плюс» (например, 10 шт.).8 - 9 = -1. Поскольку остаток не может быть отрицательным, программа блокирует проведение и выдает ошибку.Однако проблема часто возникает там, где логика не нарушена. Главная причина кроется в корректировках на увеличение. В старых релизах БП 3.0 существовала особенность (или баг): при оформлении корректировки на увеличение количества (доотгрузка), записи в регистр РеализованныеТоварыИУслуги могли не вноситься. В итоге система «забывала», что товара у клиента стало больше, и при последующей попытке сделать частичный возврат выдавала ошибку о нехватке реализованного товара.
Выясним еще одну важную деталь, которую часто упускают из виду. Программа может некорректно оценивать отгрузки, сделанные в прошлых налоговых периодах. Если исходная Реализация была создана в прошлом году, а корректировка делается в текущем, алгоритм проверки в модуле документа может отрабатывать некорректно, не учитывая начальные остатки регистра или обороты за закрытые периоды. Это происходит из-за особенностей работы запроса в модуле менеджера документа, который ищет остатки к возврату.
Если вам необходимо срочно провести документ и вы уверены в правильности своих действий, можно воспользоваться методом ручной корректировки движений. Рассмотрим, как это сделать правильно, чтобы не нарушить общую логику учета.
Проанализируем шаги:
Реализованные товары и услуги.Как советуют опытные специалисты, если проблема вызвана тем, что предыдущая корректировка «в плюс» не сделала движений, вы можете добавить запись в регистр с видом движения Приход в текущем документе или в предыдущем (исправив его). Это «наполнит» виртуальный остаток, и документ проведется.
Для программистов более правильным решением будет создание небольшого расширения, которое корректирует движения документа при проведении. Проанализируем пример логики, которую можно внедрить. Нам нужно убедиться, что при корректировке в сторону увеличения количества (когда Количество > КоличествоДоИзменения), записи в регистр РеализованныеТоварыИУслуги все равно вносятся.
Посмотрим на примерный алгоритм (условно):
// В обработке проведения документа КорректировкаРеализации
Если Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийКорректировкиРеализации.КорректировкаПоСогласованиюСторон") Тогда
Для Каждого СтрокаТовары Из Объект.Товары Цикл
Если СтрокаТовары.Количество > СтрокаТовары.КоличествоДоИзменения Тогда
// Добавляем движение в регистр РеализованныеТоварыИУслуги
// с положительным значением разницы, чтобы увеличить лимит возврата
Движение = Движения.РеализованныеТоварыИУслуги.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Объект.Дата;
Движение.Номенклатура = СтрокаТовары.Номенклатура;
Движение.Количество = СтрокаТовары.Количество - СтрокаТовары.КоличествоДоИзменения;
// Заполнение остальных измерений (Договор, Партия и т.д.)
КонецЕсли;
КонецЦикла;
КонецЕсли;
Такой подход позволит системе всегда иметь актуальные данные о том, сколько товара реально находится у покупателя, независимо от того, сколько раз и в какую сторону менялась реализация.
Если вы не хотите прибегать к программированию или ручной правке регистров, разберем методический способ решения. Вместо цепочки корректировок (которые в 1С реализованы достаточно жестко с точки зрения контроля партий) можно использовать документ Возврат товаров от покупателя.
Документ Возврат товаров от покупателя менее требователен к состоянию регистра РеализованныеТоварыИУслуги и чаще всего позволяет оформить фактический возврат товара на склад 41 без возникновения ошибки о нехватке реализованного количества. Однако помните, что в этом случае вам придется вручную следить за формированием Корректировочного счета-фактуры, если это необходимо для целей НДС.
Чтобы минимизировать появление подобных ошибок в будущем, рекомендуем придерживаться следующих правил:
Корректировке реализации были значительно переработаны. Если ваша версия ниже, обновление может решить проблему без вмешательства в код.Реализации. В ней сразу укажите финальные данные («После изменения»). Это избавит систему от необходимости строить длинные цепочки расчетов в регистрах.Корректировке реализации правильно подтянута Документ-основание (исходная реализация). Если ссылка на партию потеряна, контроль остатков по регистру гарантированно выдаст ошибку.Подводя итог, можно сказать, что ошибка «Реализовано меньше чем возвращается» — это следствие жесткого контроля управленческого регистра Реализованные товары и услуги. Исправив движения этого регистра или обновив конфигурацию до актуальной версии, вы сможете успешно проводить документы и сохранять корректность учета.