В типовой конфигурации 1С:Управление торговлей 11.5 (начиная с версии схемы комиссионной торговли 2.5) реализована строгая методологическая модель: комиссионер становится должен организации только тогда, когда он фактически продал товар конечному покупателю. С точки зрения системы, передача товара комиссионеру — это перемещение запасов на удаленный склад, где право собственности остается за принципалом. Однако в реальном бизнесе часто возникает потребность контролировать задолженность в формате [Передано] минус [Оплачено]. Рассмотрим подробно, почему это не работает "из коробки" и как реализовать такую схему учета самостоятельно.
Проанализируем механику работы системы. Когда мы оформляем документ Реализация товаров и услуг с видом операции "Передача на комиссию", система не делает движений по регистру накопления Расчеты с клиентами. Вместо этого основные движения происходят в регистре Товары переданные на комиссию. Задолженность (дебиторка) возникает только в момент проведения документа Отчет комиссионера (принципалу) о продажах.
Разберем причины такого поведения:
Прежде чем приступать к доработкам, проанализируем ситуацию: возможно, нам не нужен именно "Акт сверки", а достаточно оперативного отчета. Мы можем скомбинировать данные из двух источников.
Воспользуемся отчетом "Товары, переданные на комиссию". Он показывает остатки товаров у комиссионера в ценах передачи. Если комиссионер работает по фиксированным ценам (как упоминалось в обсуждении), то сумма остатка в этом отчете — это и есть потенциальный долг. Сопоставив эти данные с отчетом "Ведомость расчетов с клиентами", где отражены авансы от комиссионера, мы получим искомую разницу.
Чтобы не вносить изменения в типовую конфигурацию и не ломать логику взаиморасчетов, разработаем отчет, который объединит данные регистров. Рассмотрим структуру запроса для такого отчета. Нам нужно соединить данные по двум регистрам: РасчетыСКлиентами (или РасчетыСКлиентамиПоДокументам) и ТоварыПереданныеНаКомиссию.
Пример логики сбора данных на языке запросов 1С:
ВЫБРАТЬ
ТоварыПереданныеНаКомиссиюОстатки.Комиссионер КАК Контрагент,
ТоварыПереданныеНаКомиссиюОстатки.СуммаОстаток КАК СуммаВПодотчете,
0 КАК Оплачено
ИЗ
РегистрНакопления.ТоварыПереданныеНаКомиссию.Остатки(&Период, ) КАК ТоварыПереданныеНаКомиссиюОстатки
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
РасчетыСКлиентамиОстатки.АналитикаУчетаПоПартнерам.Партнер,
0,
РасчетыСКлиентамиОстатки.СуммаОстаток
ИЗ
РегистрНакопления.РасчетыСКлиентами.Остатки(&Период, ) КАК РасчетыСКлиентамиОстатки
Проанализируем эту схему: мы берем остаток товаров у комиссионера в денежном выражении и вычитаем (или прибавляем, в зависимости от знака в регистре) фактическую задолженность по оплатам. В итоге получаем управленческий баланс "переданного, но не оплаченного" товара.
Если бизнес-процесс требует, чтобы эти суммы попадали именно в типовой Акт сверки взаиморасчетов, нам придется вмешаться в проведение документов. Рассмотрим, как это сделать с помощью расширения, чтобы сохранить возможность легкого обновления УТ 11.5.
Нам необходимо расширить модуль документа ПередачаТоваровКомиссионеру (в версии 2.5 это может быть РеализацияТоваровУслуг) и добавить запись в регистр Расчеты с клиентами.
Важно: При таком подходе нужно быть крайне осторожными с документом Отчет комиссионера. Поскольку он тоже делает движения по взаиморасчетам, возникнет риск двойного зацикливания долга. Рассмотрим правильный алгоритм:
Передачи товаров фиксируем "плановый" долг.Отчета комиссионера сторнируем (уменьшаем) этот "плановый" долг на сумму проданного товара и фиксируем "реальный" финансовый долг.Пример кода в расширении для добавления движений (упрощенно):
&После("ДобавитьДвиженияРасчетыСКлиентами")
Процедура ИТ_ДобавитьДвиженияПоПередаче(ТаблицаДвижений, Отказ)
// Создаем новую строку в таблице движений регистра Расчеты с клиентами
НоваяСтрока = ТаблицаДвижений.Добавить();
НоваяСтрока.ВидДвижения = ВидДвиженияНакопления.Приход;
НоваяСтрока.Сумма = Объект.Товары.Итог("Сумма");
// Заполнение остальных обязательных полей (Аналитика, Заказ, Валюта)
// ...
КонецПроцедуры
Выясним причину, почему многие специалисты не рекомендуют внедрять этот метод в учетную систему напрямую через регистры взаиморасчетов. Основная проблема кроется в изменении цен.
Рассмотрим ситуацию: вы передали 10 единиц товара по цене 100 рублей. В вашем "кастомном" акте сверки появился долг 1000 рублей. Через неделю цена товара упала до 80 рублей. Вы оформляете документ Переоценка товаров, переданных на комиссию. Типовой регистр Товары переданные на комиссию обновит стоимость остатков, но ваш регистр Расчеты с клиентами (если вы его дописывали) останется прежним. В итоге акт сверки перестанет сходиться с реальными остатками товаров.
Как отметили участники обсуждения, некоторые компании решают это радикально: делают полный возврат товара по старым ценам и новую реализацию по новым ценам. Это позволяет поддерживать актуальность взаиморасчетов, но создает огромный объем лишнего документооборота.
Подведем итоги. Типовой функционал 1С:Управление торговлей 11.5 намеренно разделяет понятия "товар у комиссионера" и "деньги комиссионера". Для решения задачи просмотра состояния по схеме [Передано] - [Оплачено] мы рекомендуем: