|
Помогите, как можно реализовать задачу! | ☑ | ||
---|---|---|---|---|
0
pavel_vip
29.09.11
✎
11:54
|
Конфигурация Управление торговлей 10! В справочнике "контрагенты" контрагенты разделены по группам,то есть контрагент или несколько контрагентов подчинены одному контрагенту. При покупке некоторого товара контрагенту начисляется определенное количество баллов, которые указанны и закреплены за конкретной позицией в справочнике "номенклатура". Дак вот что нужно - нужно вести учет количества баллов по каждому контрагенту и сумме балов по группе контрагентов. Как в 1С все это можно реализовать?
для наглядности могу скинуть обработку на 1С 7.7 или код. |
|||
1
IamAlexy
29.09.11
✎
11:55
|
эээ в отчете по баллам сгруппировать по группе :)
|
|||
2
Pro100
29.09.11
✎
11:56
|
(0) А что мешает сделать также как в 7.7 было?
|
|||
3
shuhard
29.09.11
✎
11:57
|
(0)[Как в 1С все это можно реализовать]
запросом |
|||
4
Godofsin
29.09.11
✎
11:57
|
>>несколько контрагентов подчинены одному контрагенту
Холдинг что ле? |
|||
5
pavel_vip
29.09.11
✎
11:57
|
Функция НайтиВетку(ГруппаНПА,ТекКонтр)
СпрКонтр = СоздатьОбъект("Справочник.Контрагенты"); //сообщить(ТекКонтр); Если СпрКонтр.ВыбратьЭлементыПоРеквизиту("Спонсор",ТекКонтр)=1 Тогда Пока СпрКонтр.ПолучитьЭлемент()=1 Цикл ГруппаНПА.ДобавитьЗначение(СпрКонтр.ТекущийЭлемент()); //сообщить(СпрКонтр.ТекущийЭлемент()); Если ТекКонтр = СпрКонтр.ТекущийЭлемент() Тогда сообщить("Проверьте: "+СокрЛП(ТекКонтр)); Возврат 0; КонецЕсли; Если НайтиВетку(ГруппаНПА,СпрКонтр.ТекущийЭлемент())=1 Тогда // КонецЕсли; КонецЦикла; Иначе Возврат 0; КонецЕсли; Возврат 1; КонецФункции //НайтиВетку() Процедура Печать(Докум, Устройство=0, КолвоКопий=1) Перем НачПовт, КонПовт; //Посчитаем баллы с начала месяца... //индивидуальные ДатаНач = НачМесяца(Докум.ДатаДок); ДатаКон = Докум.ДатаДок; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период с ДатаНач по ДатаКон; |ОбрабатыватьДокументы Проведенные; |Покупатель = Документ.ЗаявкаПокупателя.Контрагент,Документ.Замена.Контрагент; |Склад = Документ.ЗаявкаПокупателя.Склад,Документ.Замена.Склад; |СуммаББ = Документ.ЗаявкаПокупателя.СуммаББ; |СуммаББЗ = Документ.Замена.СуммаББ; |СуммаЗББ = Документ.Замена.СуммаББ1; |Функция Баллы = Сумма(СуммаББ + (СуммаЗББ - СуммаББЗ)); |Условие (Покупатель = Докум.Контрагент); |Условие (Склад = Докум.Склад); |Группировка Покупатель без групп; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; СтрокаББСНачалаМесяца = ""; СуммаББЛичная = 0; Если Запрос.Группировка("Покупатель") = 1 Тогда СуммаББЛичная = Запрос.Баллы; КонецЕсли; СтрокаББСНачалаМесяца = "Сумма личных баллов с начала месяца (включая данный док-т): "+глФРМ(СуммаББЛичная); //спонсорские //сначала составим список группы ГруппаНПА = СоздатьОбъект("СписокЗначений"); ГруппаНПА.УдалитьВсе(); СпрКонтр = СоздатьОбъект("Справочник.Контрагенты"); СпрКонтр.ВыбратьЭлементы(); Пока СпрКонтр.ПолучитьЭлемент()=1 Цикл Если СпрКонтр.Спонсор = Докум.Контрагент Тогда ГруппаНПА.ДобавитьЗначение(СпрКонтр.ТекущийЭлемент()); //сообщить(СпрКонтр.ТекущийЭлемент()); Если НайтиВетку(ГруппаНПА,СпрКонтр.ТекущийЭлемент())=0 Тогда Продолжить; //Прервать; КонецЕсли; КонецЕсли; КонецЦикла; //СчетчикЦикла = 0; //Для СчетчикЦикла = 1 По ГруппаНПА.РазмерСписка() Цикл //ВспТекст = ""; //сообщить(ГруппаНПА.ПолучитьЗначение(СчетчикЦикла,ВспТекст)); //КонецЦикла; СуммаББСпонсорская = 0; Если ГруппаНПА.РазмерСписка()>0 Тогда ТекстЗапроса = " |Период с ДатаНач по ДатаКон; |ОбрабатыватьДокументы Проведенные; |Покупатель = Документ.ЗаявкаПокупателя.Контрагент,Документ.Замена.Контрагент; |Склад = Документ.ЗаявкаПокупателя.Склад,Документ.Замена.Склад; |СуммаББ = Документ.ЗаявкаПокупателя.СуммаББ; |СуммаББЗ = Документ.Замена.СуммаББ; |СуммаЗББ = Документ.Замена.СуммаББ1; |Функция Баллы = Сумма(СуммаББ + (СуммаЗББ - СуммаББЗ)); |Условие (Покупатель в ГруппаНПА); |Условие (Склад = Докум.Склад); |Группировка Покупатель без групп; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка("Покупатель") = 1 Цикл //Сообщить(СокрЛП(Запрос.Покупатель)+" = "+СокрЛП(Запрос.СуммаББ)); СуммаББСпонсорская = СуммаББСпонсорская + Запрос.Баллы; КонецЦикла; КонецЕсли; СуммаББСпонсорская = СуммаББСпонсорская + СуммаББЛичная; СтрокаББСНачалаМесяца = СтрокаББСНачалаМесяца + РазделительСтрок + "Сумма групповых баллов с начала месяца (включая данный док-т): "+глФРМ(СуммаББСпонсорская); |
|||
6
pavel_vip
29.09.11
✎
11:58
|
мешает то что я начинающий программист, и пока не могу сам все это реализовать
|
|||
7
IamAlexy
29.09.11
✎
11:59
|
начинающий VIP программист? :)
|
|||
8
pavel_vip
29.09.11
✎
12:00
|
надеюсь что господа с данного форума люди грамотные и умные, и в свободное время ничем не занимаются, может и поможет кто нить:)
|
|||
9
Vadim_37
29.09.11
✎
12:01
|
Привязываться к группе несколько рискованно, оператор может положить в группу как бог пошлет. А вот "головной контрагент" это да, более надежно. Только из (0) я понял, что у вас и так все реализовано. Продаете баллы (в РТиУ) потом отчет "продажи" и все видно.
|
|||
10
Vadim_37
29.09.11
✎
12:03
|
(5) платили за каждую строчку?
|
|||
11
pavel_vip
29.09.11
✎
12:12
|
у меня есть конфигурация на 7.7 в которой это все реализованно, а нужно это все дело перенести на 8-ку.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |