В процессе работы с розничными продажами в программе 1С:Управление торговлей 11 (УТ 11.3 и выше) пользователи часто сталкиваются с проблемой: при оформлении возврата товара не в день покупки через документ Отчет о розничных продажах (ОоРП) с отрицательными строками, себестоимость возвращенного товара после закрытия месяца рассчитывается как нулевая. Это приводит к искажению финансового результата и недовольству бухгалтерии.
В данной статье мы разберем причины такого поведения системы, проанализируем внутренние механизмы работы регистров себестоимости и рассмотрим эффективные способы решения этой задачи.
Проанализируем ситуацию с точки зрения архитектуры 1С. Документ Отчет о розничных продажах предназначен для отражения факта реализации товаров в рамках одной кассовой смены. Когда мы вводим в него отрицательную строку, система воспринимает это как сторнирование продажи. Однако для корректного расчета себестоимости системе необходимо знать, из какой «партии» (или по какому Виду запасов) этот товар был списан изначально.
Рассмотрим основные причины обнуления стоимости:
Отчет о розничных продажах на уровне строк отсутствует реквизит, позволяющий указать конкретную первичную реализацию.Себестоимость товаров.Виды запасов. При возврате через ОоРП программа часто формирует новый вид запаса без привязки к суммовым оценкам прошлых периодов.Выясним, как рекомендует поступать фирма 1С. Согласно методологии, разделение возвратов на «в день покупки» и «не в день покупки» является ключевым. Если возврат происходит после закрытия кассовой смены (в другой день), использование Чека ККМ и последующего Отчета о розничных продажах технически возможно, но методически неверно для учета себестоимости.
Разберем по шагам правильный алгоритм:
Возврат от розничного покупателя.Документ продажи. Если указать там документ реализации (или ОоРП, которым был продан товар), система автоматически подтянет себестоимость из той партии.Возврат товаров от клиента (начиная с версии 11.3) можно выбрать способ определения себестоимости:
Именно возможность ручного указания себестоимости решает проблему главного бухгалтера. При выборе этого варианта вы можете прямо в документе зафиксировать сумму, которая должна «вернуться» на склад вместе с товаром.
Если возвраты загружаются из внешней кассовой программы (фронт-офиса), необходимо перенастроить логику загрузки. Вместо создания отрицательных строк в Отчете о розничных продажах, рассмотрим возможность создания отдельных документов возврата.
Проанализируем пример логики обработки данных:
// Пример логики при загрузке данных
Если ДанныеОВозврате.ДатаПродажи < НачалоДня(ТекущаяДата) Тогда
// Это возврат не в день покупки
НовыйВозврат = Документы.ВозвратТоваровОтКлиента.СоздатьДокумент();
НовыйВозврат.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя;
// Заполняем товары и ищем себестоимость в базе или берем из внешней системы
ЗаполнитьСтрокиВозврата(НовыйВозврат, ДанныеОВозврате);
НовыйВозврат.Записать(РежимЗаписиДокумента.Проведение);
Иначе
// Возврат в день покупки - включаем в ОоРП как обычно
ДобавитьСтрокуВОтчетОРозничныхПродажах(ДанныеОВозврате);
КонецЕсли;
Такой подход позволит автоматизировать процесс и сохранить корректность учета без ручного вмешательства бухгалтера.
Если по каким-то причинам (например, требование руководства использовать только ОоРП) вы не можете перейти на использование документов возврата, потребуется программная доработка. Рассмотрим подробнее, что для этого нужно сделать.
Во-первых, необходимо добавить в табличную часть Товары документа Отчет о розничных продажах новый реквизит СебестоимостьВозврата. Во-вторых, нужно вмешаться в процедуру проведения документа, чтобы эти данные попали в регистры.
Проанализируем ситуацию с регистрами. Основной регистр, отвечающий за стоимость — Себестоимость товаров. При проведении ОоРП формируются движения с видом Расход (для возвратов это будет расход с минусом). Вам необходимо модифицировать модуль расчета, чтобы в поле Стоимость записывалось ваше значение из нового реквизита.
Внимание! Это сложный путь, так как в УТ 11 расчет себестоимости выполняется отложенно при закрытии месяца. Просто записать сумму в регистр при проведении документа может быть недостаточно, так как обработка Расчет себестоимости может перезаписать эти движения.
Результат решения проблемы также зависит от используемой версии партионного учета. Посмотрим на различия:
Вид запаса.Подводя итог, можно сказать, что попытка заставить Отчет о розничных продажах корректно обрабатывать себестоимость возвратов прошлых периодов — это борьба с типовой архитектурой программы.
Для достижения результата рекомендуем следующее:
Возврате товаров от клиента вы всегда можете принудительно указать себестоимость, если первичная продажа была совершена в другой информационной базе или данные о ней утеряны.Соблюдение этих правил позволит вам и вашему главному бухгалтеру всегда иметь актуальные и достоверные данные о прибыли и остатках товаров на складах.