Условие задачи

Компания занимается оптовой торговлей. Для поиска клиентов используются агенты. В случае если агент приводит клиента в компанию, то он указывается в документах заказа или реализации.

В дальнейшем агент получает из кассы компании вознаграждение в размере 3% от суммы реализации.

Необходимо реализовать данный функционал.

Решение

Добавляем реквизит «ТорговыйАгент» в документах заказа и реализации товаров В обработке заполнения реализации дописываем

ТорговыйАгент = ДанныеЗаполнения. ДокументОснование. ТорговыйАгент;

Создаем РН ДвиженияПремийАгентов Измерения – ТорговыйАгент Ресурсы – Сумма Создаем предопределенные зачения

а)Справочники. СтатьиДвиженияДенежныхСредств - ПремииТорговыхАгентов(после Указать в предприятии реквизит ХозОперации-СтатьяРасходов).

б)ПВХ. СтатьиРасходов – ПремииТорговыхАгентов(после Указать в предприятии(в таб части РКО)вариант распределения "На направления деятельности", аналитика расходов – Партнер).

Создаем общий модуль с обработками проведений документов реализации и РКО

Процедура ПриПроведенииДокРеал(Источник, Отказ) Экспорт        

       // регистр ДвиженияПремийАгентов Приход

       Если ЗначениеЗаполнено(Источник. ТорговыйАгент) тогда

               Источник. Движения. ДвиженияПремийАгентов. Записывать = Истина;

               Источник. Движения. ДвиженияПремийАгентов. БлокироватьДляИзменения = Истина;

               Движение = Источник. Движения. ДвиженияПремийАгентов. Добавить();

               Движение. ВидДвижения = ВидДвиженияНакопления. Приход;

               Движение. Период = Источник. Дата;

               Движение. ТорговыйАгент = Источник. ТорговыйАгент;

               Движение. Сумма = Источник. СуммаДокумента*0.03;

  КонецЕсли;        

КонецПроцедуры

Процедура ПриПроведенииДокРКО(Источник, Отказ) Экспорт        

       // регистр ДвиженияПремийАгентов Приход

       Если Источник. ХозяйственнаяОперация = Перечисления. ХозяйственныеОперации. ПрочиеРасходы Тогда

               Если Источник. СтатьяДвиженияДенежныхСредств = ПредопределенноеЗначение("Справочник. СтатьиДвиженияДенежныхСредств. ПремииТорговыхАгентов")тогда

                       Источник. Движения. ДвиженияПремийАгентов. Записывать = Истина;

                       Источник. Движения. ДвиженияПремийАгентов. БлокироватьДляИзменения = Истина;

                       Для каждого Стр из Источник. РасшифровкаПлатежа цикл

                               Движение = Источник. Движения. ДвиженияПремийАгентов. Добавить();

                               Движение. ВидДвижения = ВидДвиженияНакопления. Расход;

                               Движение. Период = Источник. Дата;

                               Движение. ТорговыйАгент = Стр. АналитикаРасходов;

                               Движение. Сумма = Стр. Сумма;

                       КонецЦикла;

               КонецЕсли;

  КонецЕсли;        

КонецПроцедуры


Создаем подписки на оброботку проведений по соответствующим документам. Заполнение РКО по остаткам задолженности. Для отображение кнопки Подобрать по остаткам:

В модуле ДенежныеСредстваСервер. УстановитьВидимостьПодбораПоОстаткамРасчетов

Добавить строку МассивОпераций. Добавить(Перечисления. ХозяйственныеОперации. ПрочиеРасходы);

Затем в модуле формы документа

&НаКлиенте

Процедура ПодборПоОстаткам(Команда)        

       Если Объект. ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление. ХозяйственныеОперации. ПрочиеРасходы") тогда

        Если Объект. СтатьяДвиженияДенежныхСредств = ПредопределенноеЗначение("Справочник. СтатьиДвиженияДенежныхСредств. ПремииТорговыхАгентов")тогда

                       ЗаполнитьПоОстаткамЗадолженностиТП();

                       Объект. СуммаДокумента = Объект. РасшифровкаПлатежа. Итог("Сумма");

        КонецЕсли;

       Иначе ….(код который был)

       КонецЕсли;

&НаСервере

Процедура ЗаполнитьПоОстаткамЗадолженностиТП()

       Запрос = Новый Запрос;

       Запрос. Текст =

               "ВЫБРАТЬ

               |        ДвиженияПремийАгентовОстатки. ТорговыйАгент КАК АналитикаРасходов,

               |        ДвиженияПремийАгентовОстатки. СуммаОстаток КАК Сумма,

               |        ЗНАЧЕНИЕ(ПланВидовХарактеристик. СтатьиРасходов. ПремииТорговыхАгентов) КАК СтатьяРасходов,

               |        &Отдел КАК Подразделение

               |ИЗ

               |        РегистрНакопления. ДвиженияПремийАгентов. Остатки КАК ДвиженияПремийАгентовОстатки";

Запрос. УстановитьПараметр("Отдел", ПараметрыСеанса. ТекущийПользователь. ТекущееПодразделение);

       Результат = Запрос. Выполнить();

       Объект. РасшифровкаПлатежа. Загрузить(Результат. Выгрузить());

КонецПроцедуры


7. Создаем отчет в СКД "Расчеты с торговыми агентами" по регистру РасчетыСАгентами.

Вопросы

Тип Торгового агента выбирать Партнера или ФизЛицо? Откуда брать отдел при заполнении таб части РКО(расшифровка платежа)?