Автор Тема: 2.41  (Прочитано 14290 раз)

0 Пользователей и 1 Гость просматривают эту тему.

kastrtroy2006

  • Новичок
  • *
  • Сообщений: 4
  • ФИО: Веряскин Артем
2.41
« : Август 21, 2013, 11:11:40 am »
Агент указывается вручную или попадает автоматически?

DrShust

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: DrShust
2.41
« Ответ #1 : Август 21, 2013, 11:24:07 am »
kastrtroy2006, думаю автоматом. Два варианта на вскидку приходят в голову:
 1. В карточку Партнёра добавить реквизит ТорговыйАгент (физлицо)и в Реализацию тоже. Подпиской ПередЗаписью документа Реализация реквизит ТорговыйАгент заполняется в Реализации из карточки выбранного Партнёра. Тогда вроде как и история будет вестись. Захотят потом, чтобы вознаграждение получал другой агент (при увольнении, например, предыдущего), тогда в карточке поставят нового (либо вообще уберут) и в новых реализациях уже будет стоять он.
 2. Регистр сведений (независ, периодич.): Измерение-Партнёр, Ресурс - ФизЛицо (агент).
 Я бы выбрал первое., хотя это нужно обдумать...


Nechipury

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Нечипоренко Евгений Александрович
2.41
« Ответ #2 : Август 21, 2013, 11:26:32 am »
Делал через сделки
 Включить сделки
 Сзд. предопр. элемент Агент пвх КаналыРекламныхВоздействий 
 В предприятии сзд. несколько сделок с разными агентами, партнерами, с заказами и реализациями и без таковых
 В запросе в 1-й ВТ соед. внутр. рс ИсточникиПервичногоИнтереса и спр СделкиСКлиентами по Сделка с усл. 
 ИсточникиПервичногоИнтереса.КаналПервичногоИнтереса = ЗНАЧЕНИЕ(ПланВидовХарактеристик.КаналыРекламныхВоздействий.Агент)
 Во 2-й ВТ соед.  внутр. 1-ю ВТ с рн ВыручкаИСебестоимостьПродаж по Сделка 
 поле СуммаВыручки*0,03
 усл. Период между
 Сзд. Отчет - в отчеты по финансам

Toxicoff

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кирилл
2.41
« Ответ #3 : Август 28, 2013, 09:29:25 am »
А как считаете, нужно ли отражать само отчисления агентам?
 Если да, то как ?

Glime

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Стас
2.41
« Ответ #4 : Август 28, 2013, 06:16:49 pm »
Toxicoff, нужно, при помощи РКО, проверяют отчетами, у меня попалась на сдаче эта задача.

DrShust

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: DrShust
2.41
« Ответ #5 : Август 29, 2013, 10:39:05 am »
Glime, ну и как сдал? По задаче: тоже делал через сделки или...?

Добавлено (29.08.2013, 10:39)
---------------------------------------------
В РКО какой вид операции должен быть: Выплата зарплаты работнику? И как должен РКО заполняться автоматом (имею ввиду накопленную сумму)? И нужен ли регистр накопления для реализации, чтобы считать премию и его же для РКО, чтобы списывать? Может я слишком наворачиваю...


Toxicoff

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Кирилл
2.41
« Ответ #6 : Август 29, 2013, 01:06:16 pm »
присоединяюсь к вопросу DrShust,

kindzadza

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: ru
2.41
« Ответ #7 : Август 29, 2013, 01:50:59 pm »
Toxicoff, да тут не только на эту задачу дубли есть...

Glime

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Стас
2.41
« Ответ #8 : Август 29, 2013, 04:15:30 pm »
нет не сдал, когда генирил аналитику забыл про партнера, ну и все, при проверки отчетом не чего не показал.
 вот ссылка на мое решение, я правда с валютами немного поизвращался.
 https://drive.google.com/folderview?id=0B8zHaMT56KmsMVk3d3M3TVhFTG8&usp=sharing
 DrShust, в задаче не где не сказано что это сотрудник.

Nechipury

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Нечипоренко Евгений Александрович
2.41
« Ответ #9 : Август 29, 2013, 04:27:32 pm »
Glime, мне кажется вы очень сильно усложняете себе жизнь и остальным тоже, задача решается намного проще, а вы начинаете ломать и переписывать)))

Glime

  • Новичок
  • *
  • Сообщений: 1
  • ФИО: Стас
2.41
« Ответ #10 : Август 29, 2013, 06:33:45 pm »
Nechipury, и як?

kastrtroy2006

  • Новичок
  • *
  • Сообщений: 4
  • ФИО: Веряскин Артем
2.41
« Ответ #11 : Сентябрь 16, 2013, 03:55:59 pm »
Я думаю, раз написано, что агент приводит КЛИЕНТА в компанию, то и указывать его можно в карточке клиента. А от туда он попадает в зак.пок и реализацию(хотя зачем он там).

SanPav

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
2.41
« Ответ #12 : Сентябрь 17, 2013, 03:30:12 pm »
Мой вариант решения:

 1. Определяем предопределенное значение "Торговый агент" в ПВХ "ДополнительныеРеквизитыИСведения" тип Справочники.Партнер.
 2. Назначаем его как доп. реквизит в документах "Заказ клиента"  и "Реализация товаров и услуг".
 3. Создаем независимый непериодический регистр сведений РазмерКомиссии. Измерение ведущее - Партнер, Ресурс - Процент.
 4. Создаем регистр накопления РасчетыСАгентами. Измерение - Партнер, Ресурс - Сумма. Регистраторы: РеализацияТоваровУслуг и РКО.
 5. Создаем подписку на событие проведения документов РеализацияТоваровУслуг и РКО. Где формируется движения по регистру РасчетыСАгентами приход по документу РеализацияТоваровУслуг (сумма документа умноженная на соответсвующий процент из регистра РазмерКомиссии) и расход по РКО. Проверяемв момент расхода, Вид операции РКО должен быть "Прочие расходы". Статья расходов "Агентские услуги" с вариантом распределения "На направления деятельности", аналитика расходов - Партнер. Сумма остатка в регистре по партнеру агенту должна быть больше или равна сумме в документе РКО.
 6. Создаем подписку на событие обработки заполнения документа РеализацияТоваровУслуг на основании документа ЗаказКлиента, чтобы автоматически заполнить по заказу в реализации значение доп. реквизита "Торговый агент".
 7. Создаем отчет в СКД "Расчеты с торговыми агентами" по регистру РасчетыСАгентами.

  
 Данный вариант решения выбран потому что:
 1. Просто и быстро реализовать.
 2. При таком решении не сложно будет в дальнейшем обновлять конфигурацию.
 3. Использовать типовые регистры для учета взаиморасчетов с партнерами не рекомендую, т.к. на самом деле они не настолько просты, как кажется на первый взгляд, например, нужно учитывать стадии взаимоотношений. Если опираться на типовые процедуры и функции при проведении, то они могут измениться с выходом новой версии конфигурации.
 4. Не используются документы для фиксации входящий услуг от агентов, т.к. чаще всего они на практике торговыми агентами и не предоставляются. А фиктивные потом перекачуют в Бухгалтерию, где они не нужны.
« Последнее редактирование: Сентябрь 17, 2013, 03:36:58 pm от Александр »

VaKiSe

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: VaKiSe
2.41
« Ответ #13 : Сентябрь 19, 2013, 12:11:10 am »
SanPav. Согласен с решением!

 Только пункты 6 и 7 думаю будут лишними.
 По пункту 6: В условии сказано "В случае если агент приводит клиента в компанию, то он указывается в документах заказа или реализации", т.е. или в заказе или в реализации, по этому пункт 6 можно не делать, я проверял в реализации, если там не указан, то в заказе, если и там нет, то движения в регистре тоже нет!
 По пункту 7: В условии нету отчета)))

 А в целом логика железная!

SanPav

  • Новичок
  • *
  • Сообщений: 0
  • ФИО: Александр
2.41
« Ответ #14 : Сентябрь 20, 2013, 04:30:19 pm »
Согласен, что пп. 6 и 7 не обязательны, если не хватит времени можно их и не делать, поэтому по очередности они последние. Но их реализация довольно проста, у меня бы на них ушло 5-10 минут, а это может добавить дополнительные очки в вашу пользу.

 Добавлено (20.09.2013, 16:30)
 ---------------------------------------------
 А вот и сами обработчики событий:

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

 Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
 Запрос = Новый Запрос;
 Запрос.Текст =
 "ВЫБРАТЬ
 | ЗаказКлиентаДополнительныеРеквизиты.НомерСтроки,
 | ЗаказКлиентаДополнительныеРеквизиты.Свойство,
 | ЗаказКлиентаДополнительныеРеквизиты.Значение,
 | ЗаказКлиентаДополнительныеРеквизиты.ТекстоваяСтрока
 |ИЗ
 | Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
 |ГДЕ
 | ЗаказКлиентаДополнительныеРеквизиты.Ссылка = &Ссылка
 | И ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство";

 Запрос.УстановитьПараметр("Ссылка", ДанныеЗаполнения);
 Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ТорговыйАгент);

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

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

 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

 НовСтрока = Источник.ДополнительныеРеквизиты.Добавить();

 ЗаполнитьЗначенияСвойств(НовСтрока, ВыборкаДетальныеЗаписи);
 КонецЦикла;
 КонецЕсли;

 КонецПроцедуры
  
  
 Процедура ПроведениеРасчетовСТорговымиАгентамиОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт

 Если ТипЗнч(Источник) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
 //Получим данные документа

 Запрос = Новый Запрос;
 Запрос.Текст =
 "ВЫБРАТЬ ПЕРВЫЕ 1
 | РеализацияТоваровУслугДополнительныеРеквизиты.Значение КАК Агент,
 | &ЗаказКлиента
 |ПОМЕСТИТЬ ДокРеализации
 |ИЗ
 | &ТЧДополнительныеРеквизиты КАК РеализацияТоваровУслугДополнительныеРеквизиты
 |ГДЕ
 | РеализацияТоваровУслугДополнительныеРеквизиты.Свойство = &СвойствоТорговыйАгент
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ ПЕРВЫЕ 1
 | ЗаказКлиентаДополнительныеРеквизиты.Значение КАК Агент,
 | ЗаказКлиентаДополнительныеРеквизиты.Ссылка
 |ПОМЕСТИТЬ ДокЗаказ
 |ИЗ
 | Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
 |ГДЕ
 | ЗаказКлиентаДополнительныеРеквизиты.Свойство = &СвойствоТорговыйАгент
 | И ЗаказКлиентаДополнительныеРеквизиты.Ссылка = &ЗаказКлиента
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ
 | ЕСТЬNULL(ДокРеализации.Агент, ДокЗаказ.Агент) КАК Агент
 |ПОМЕСТИТЬ ДанныеПоПродажам
 |ИЗ
 | ДокРеализации КАК ДокРеализации
 |  ПОЛНОЕ СОЕДИНЕНИЕ ДокЗаказ КАК ДокЗаказ
 |  ПО ДокРеализации.ЗаказКлиента = ДокЗаказ.Ссылка
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ
 | ДанныеПоПродажам.Агент,
 | ЕСТЬNULL(РазмерКомиссииАгента.Процент, 0) КАК Процент
 |ИЗ
 | ДанныеПоПродажам КАК ДанныеПоПродажам
 |  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмерКомиссииАгента КАК РазмерКомиссииАгента
 |  ПО ДанныеПоПродажам.Агент = РазмерКомиссииАгента.Партнер";

 Запрос.УстановитьПараметр("СвойствоТорговыйАгент", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ТорговыйАгент);
 Запрос.УстановитьПараметр("РеализацияТоваров", Источник.Ссылка);
 Запрос.УстановитьПараметр("ЗаказКлиента", Источник.ЗаказКлиента);
 Запрос.УстановитьПараметр("ТЧДополнительныеРеквизиты", Источник.ДополнительныеРеквизиты.Выгрузить());

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

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

 Если ВыборкаДетальныеЗаписи.Следующий() Тогда

 СуммаВознаграждения = ВыборкаДетальныеЗаписи.Процент * Источник.СуммаДокумента/100;

 Если СуммаВознаграждения > 0 Тогда
 // регистр РасчетыСТорговымиАгентами Приход
 Источник.Движения.РасчетыСТорговымиАгентами.Записывать = Истина;
 Источник.Движения.РасчетыСТорговымиАгентами.БлокироватьДляИзменения = Истина;
 Движение =  Источник.Движения.РасчетыСТорговымиАгентами.Добавить();
 Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
 Движение.Период = Источник.Дата;
 Движение.Партнер = ВыборкаДетальныеЗаписи.Агент;
 Движение.Сумма = СуммаВознаграждения;
 КонецЕсли;

 КонецЕсли;

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

 ТаблЗн = Источник.РасшифровкаПлатежа.Выгрузить(,"Сумма, СтатьяРасходов, АналитикаРасходов");
 ТаблЗн.Свернуть("СтатьяРасходов, АналитикаРасходов", "Сумма");

 Запрос = Новый Запрос;
 Запрос.Текст =
 "ВЫБРАТЬ
 | РасходныйКассовыйОрдерРасшифровкаПлатежа.АналитикаРасходов КАК Агент,
 | РасходныйКассовыйОрдерРасшифровкаПлатежа.Сумма
 |ПОМЕСТИТЬ Оплата
 |ИЗ
 | &ТЧРасшифровкаПлатежа КАК РасходныйКассовыйОрдерРасшифровкаПлатежа
 |где
 | РасходныйКассовыйОрдерРасшифровкаПлатежа.СтатьяРасходов = &СтатьяРасходов
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ
 | РасчетыСТорговымиАгентамиОстатки.Партнер,
 | РасчетыСТорговымиАгентамиОстатки.СуммаОстаток
 |ПОМЕСТИТЬ Долг
 |ИЗ
 | РегистрНакопления.РасчетыСТорговымиАгентами.Остатки(
 |   &ДатаОстатка,
 |   Партнер В
 |    (ВЫБРАТЬ
 |     Оплата.Агент
 |    ИЗ
 |     Оплата КАК Оплата)) КАК РасчетыСТорговымиАгентамиОстатки
 |;
 |
 |////////////////////////////////////////////////////////////////////////////////
 |ВЫБРАТЬ
 | Оплата.Агент,
 | Оплата.Сумма КАК СуммаОплаты,
 | ЕСТЬNULL(Долг.СуммаОстаток, 0) КАК СуммаДолга,
 | ПРЕДСТАВЛЕНИЕ(Оплата.Агент) КАК АгентПредставление
 |ИЗ
 | Оплата КАК Оплата
 |  ЛЕВОЕ СОЕДИНЕНИЕ Долг КАК Долг
 |  ПО Оплата.Агент = Долг.Партнер";

 Запрос.УстановитьПараметр("ДатаОстатка", Источник.МоментВремени());
 Запрос.УстановитьПараметр("ТЧРасшифровкаПлатежа", ТаблЗн);
 Запрос.УстановитьПараметр("СтатьяРасходов", ПланыВидовХарактеристик.СтатьиРасходов.ВознаграждениеТорговымАгентам);

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

 Выборка = Результат.Выбрать();

 Пока Выборка.Следующий() Цикл

 Если Выборка.СуммаОплаты > Выборка.СуммаДолга Тогда

 Сообщение = Новый СообщениеПользователю();
 Сообщение.Текст = "Оплата агенту " + Выборка.АгентПредставление + " в сумме: " + Формат(Выборка.СуммаОплаты, "ЧДЦ=2") + " превышает его долг: " + Формат(Выборка.СуммаДолга, "ЧДЦ=2");
 Сообщение.Сообщить();

 Отказ = Истина;
 Иначе
 Если Не Отказ Тогда
 // регистр РасчетыСТорговымиАгентами Расход
 Источник.Движения.РасчетыСТорговымиАгентами.Записывать = Истина;
 Источник.Движения.РасчетыСТорговымиАгентами.БлокироватьДляИзменения = Истина;
 Движение =  Источник.Движения.РасчетыСТорговымиАгентами.Добавить();
 Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
 Движение.Период = Источник.Дата;
 Движение.Партнер = Выборка.Агент;
 Движение.Сумма =  Выборка.СуммаОплаты;
 КонецЕсли;
 КонецЕсли;
 КонецЦикла;
 КонецЕсли;
 КонецЕсли;

 КонецПроцедуры
« Последнее редактирование: Сентябрь 20, 2013, 04:32:08 pm от Александр »