При организации обмена данными между конфигурациями «1С:Розница» (редакции 2.2 / 2.3) и «1С:Бухгалтерия предприятия 3.0» (БП) технические специалисты часто сталкиваются со следующей проблемой: документы Отчет о розничных продажах (ООРП) переносятся некорректно. Чаще всего это выражается в том, что на вкладку «Возвраты» в БП не попадают возвращенные товары, либо сам документ отказывается проводиться, выдавая ошибки нехватки остатков или некорректного заполнения сумм.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем логику работы типовых обменов 1С, изучим скрытые причины сбоев и найдем оптимальные пути решения.
Прежде чем приступать к исправлению правил обмена или программного кода, давайте разберем методологию учета розничных возвратов в системе 1С. Поведение программы принципиально отличается в зависимости от того, когда был сделан возврат: в день продажи (в рамках одной кассовой смены) или в последующие дни.
Рассмотрим ситуацию возврата «день в день»:
Отчет о розничных продажах.Однако, если товар возвращается не в день продажи (в другую кассовую смену), то свертка не происходит. В «1С:Розница» создается чек возврата, который при закрытии смены должен перенестись на вкладку «Возвраты» документа Отчет о розничных продажах в «1С:Бухгалтерию» с обязательным указанием документа продажи (реализации).
Если в вашем случае возвраты прошлых периодов не переносятся или переносятся некорректно, причина кроется в технических ошибках платформы, конфигураций или правил обмена.
В линейках «1С:Розница» 2.2 и 2.3 при использовании синхронизации через универсальный формат EnterpriseData присутствовал официально зарегистрированный баг (в частности, ошибка 00-00317897).
Суть проблемы заключается в следующем: при выгрузке данных табличная часть «Возвраты» документа ООРП заполнялась, но колонка «Дата реализации» (или ссылка на документ-основание) оставалась пустой. При попытке провести такой документ в «1С:Бухгалтерии 3.0» возникают критические ошибки:
Проанализируем популярную ошибку, возникающую при проведении ООРП в Бухгалтерии: «Документом реализовано на Х ед. меньше, чем возвращается». Она может возникать по двум скрытым причинам:
А. Схлопывание и свертка характеристик. В «1С:Розница» учет товаров ведется в разрезе характеристик (размеры, цвета). В «1С:Бухгалтерии» учет характеристик по умолчанию отсутствует. При выгрузке через обмен данные сворачиваются до уровня номенклатуры. Из-за этого алгоритмы сопоставления в БП 3.0 могут некорректно обрабатывать строки, считая, что происходит попытка вернуть товар, которого физически не было в исходной реализации.
Б. Несколько касс (ККМ) за одну смену. Если в организации за один день продажи велись по нескольким кассам и было сформировано несколько ООРП, то алгоритм проведения возврата в БП 3.0 пытается найти продажу конкретной позиции за текущий день. Из-за несовершенства поисковых запросов в коде БП программа может проанализировать только первый попавшийся документ ООРП. Не найдя там нужного объема продаж, она блокирует проведение, даже если суммарно по всем кассам товара было продано достаточно.
Рассмотрим еще два важных ограничения, которые вызывают ошибки при переносе документов из розничной сети:
Проанализировав все возможные причины, выделим три основных способа решения проблемы.
В большинстве случаев проблема некорректного переноса возвратов и пустых дат реализации решается простым обновлением конфигураций. Разработчики 1С регулярно оптимизируют механизмы обмена через EnterpriseData и устраняют ошибки поиска документов реализации.
Для устранения багов синхронизации выполните следующие действия:
Чтобы избежать логических ошибок при свертке кассовых смен и проблем с эквайрингом, рекомендуется изменить сам бизнес-процесс оформления возвратов не день в день:
Возврат товаров от покупателя на основании ранее созданного и проведенного чека.Возврат товаров от покупателя. Он сформирует корректные проводки по возврату на склад и не будет смешиваться с текущей выручкой в документе Отчет о розничных продажах, что исключит ошибки блокировки проведения.Если вам необходимо срочно провести старые непроведенные документы ООРП в Бухгалтерии без обновления конфигураций, можно воспользоваться групповой обработкой или написать простую процедуру для заполнения пропущенных дат реализации.
Рассмотрим пример кода на встроенном языке 1С, который находит пустые даты реализации в табличной части возвратов и заполняет их датой самого документа ООРП (что позволяет обойти жесткую проверку проведения):
// Пример обработки документов "Отчет о розничных продажах"
Выборка = Документы.ОтчетОРозничныхПродажах.Выбрать(НачалоДня(ВыбДата), КонецДня(ВыбДата));
Пока Выборка.Следующий() Цикл
ОбъектДок = Выборка.ПолучитьОбъект();
Модифицирован = Ложь;
Для Каждого СтрокаВозврата Из ОбъектДок.Возвраты Цикл
// Проверяем заполнение даты или документа реализации
Если Не ЗначениеЗаполнено(СтрокаВозврата.ДатаРеализации) Тогда
СтрокаВозврата.ДатаРеализации = ОбъектДок.Дата;
Модифицирован = Истина;
КонецЕсли;
КонецЦикла;
Если Модифицирован Тогда
Попытка
ОбъектДок.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ " + ОбъектДок + " успешно исправлен и проведен.");
Исключение
Сообщить("Ошибка проведения документа " + ОбъектДок + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
Применение этого скрипта в консоли кода или в виде внешней обработки позволит быстро восстановить последовательность проведения документов за прошлые периоды, не дожидаясь глобального обновления информационных баз.