Условие задачи
Компания занимается оптовой торговлей. Для поиска клиентов используются агенты. В случае если агент приводит клиента в компанию, то он указывается в документах заказа или реализации.
В дальнейшем агент получает из кассы компании вознаграждение в размере 3% от суммы реализации.
Необходимо реализовать данный функционал.
Решение
Добавляем реквизит «ТорговыйАгент» в документах заказа и реализации товаров В обработке заполнения реализации дописываемТорговыйАгент = ДанныеЗаполнения. ДокументОснование. ТорговыйАгент;
Создаем РН ДвиженияПремийАгентов Измерения – ТорговыйАгент Ресурсы – Сумма Создаем предопределенные заченияа)Справочники. СтатьиДвиженияДенежныхСредств - ПремииТорговыхАгентов(после Указать в предприятии реквизит ХозОперации-СтатьяРасходов).
б)ПВХ. СтатьиРасходов – ПремииТорговыхАгентов(после Указать в предприятии(в таб части РКО)вариант распределения "На направления деятельности", аналитика расходов – Партнер).
Создаем общий модуль с обработками проведений документов реализации и РКОПроцедура ПриПроведенииДокРеал(Источник, Отказ) Экспорт
// регистр ДвиженияПремийАгентов Приход
Если ЗначениеЗаполнено(Источник. ТорговыйАгент) тогда
Источник. Движения. ДвиженияПремийАгентов. Записывать = Истина;
Источник. Движения. ДвиженияПремийАгентов. БлокироватьДляИзменения = Истина;
Движение = Источник. Движения. ДвиженияПремийАгентов. Добавить();
Движение. ВидДвижения = ВидДвиженияНакопления. Приход;
Движение. Период = Источник. Дата;
Движение. ТорговыйАгент = Источник. ТорговыйАгент;
Движение. Сумма = Источник. СуммаДокумента*0.03;
КонецЕсли;
КонецПроцедуры
Процедура ПриПроведенииДокРКО(Источник, Отказ) Экспорт
// регистр ДвиженияПремийАгентов Приход
Если Источник. ХозяйственнаяОперация = Перечисления. ХозяйственныеОперации. ПрочиеРасходы Тогда
Если Источник. СтатьяДвиженияДенежныхСредств = ПредопределенноеЗначение("Справочник. СтатьиДвиженияДенежныхСредств. ПремииТорговыхАгентов")тогда
Источник. Движения. ДвиженияПремийАгентов. Записывать = Истина;
Источник. Движения. ДвиженияПремийАгентов. БлокироватьДляИзменения = Истина;
Для каждого Стр из Источник. РасшифровкаПлатежа цикл
Движение = Источник. Движения. ДвиженияПремийАгентов. Добавить();
Движение. ВидДвижения = ВидДвиженияНакопления. Расход;
Движение. Период = Источник. Дата;
Движение. ТорговыйАгент = Стр. АналитикаРасходов;
Движение. Сумма = Стр. Сумма;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Создаем подписки на оброботку проведений по соответствующим документам. Заполнение РКО по остаткам задолженности. Для отображение кнопки Подобрать по остаткам:
В модуле ДенежныеСредстваСервер. УстановитьВидимостьПодбораПоОстаткамРасчетов
Добавить строку МассивОпераций. Добавить(Перечисления. ХозяйственныеОперации. ПрочиеРасходы);
Затем в модуле формы документа
&НаКлиенте
Процедура ПодборПоОстаткам(Команда)
Если Объект. ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление. ХозяйственныеОперации. ПрочиеРасходы") тогда
Если Объект. СтатьяДвиженияДенежныхСредств = ПредопределенноеЗначение("Справочник. СтатьиДвиженияДенежныхСредств. ПремииТорговыхАгентов")тогда
ЗаполнитьПоОстаткамЗадолженностиТП();
Объект. СуммаДокумента = Объект. РасшифровкаПлатежа. Итог("Сумма");
КонецЕсли;
Иначе ….(код который был)
КонецЕсли;
&НаСервере
Процедура ЗаполнитьПоОстаткамЗадолженностиТП()
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| ДвиженияПремийАгентовОстатки. ТорговыйАгент КАК АналитикаРасходов,
| ДвиженияПремийАгентовОстатки. СуммаОстаток КАК Сумма,
| ЗНАЧЕНИЕ(ПланВидовХарактеристик. СтатьиРасходов. ПремииТорговыхАгентов) КАК СтатьяРасходов,
| &Отдел КАК Подразделение
|ИЗ
| РегистрНакопления. ДвиженияПремийАгентов. Остатки КАК ДвиженияПремийАгентовОстатки";
Запрос. УстановитьПараметр("Отдел", ПараметрыСеанса. ТекущийПользователь. ТекущееПодразделение);
Результат = Запрос. Выполнить();
Объект. РасшифровкаПлатежа. Загрузить(Результат. Выгрузить());
КонецПроцедуры
7. Создаем отчет в СКД "Расчеты с торговыми агентами" по регистру РасчетыСАгентами.
Вопросы
Тип Торгового агента выбирать Партнера или ФизЛицо? Откуда брать отдел при заполнении таб части РКО(расшифровка платежа)?

