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