Имя: Пароль:
1C
1С v8
помогите сделать запрос к задаче 1,39
0 holy90
 
01.04.13
19:43
Второй день бьюсь с запросом к задаче 1,39

необходимо создать документ расчета премий сотрудников с учетом оборота продаж, оборот и процент премии указывается в регистре сведений(0-5%,100000-10%,500000-15%)
Проценты и обороты сопоставил, т.е процент из  учета объема продаж вычисляется нормально
но если отменить проведение документа (например март), то в апреле сумма начисленных премий не изменится, а должна прибавиться  

очень прошу помочь, так как языку запросов и 1с только учусь.
заранее всем спасибо!

ниже обработка команды заполнить:
также прикрепляю выгрузку базы

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

&НаКлиенте
Процедура Заполнить(Команда)
   РассчитатьПремиюСотрудников();
КонецПроцедуры
1 DirecTwiX
 
01.04.13
20:01
Судя по всему, надо заменить МАКСИМУМ на МИНИМУМ.. Но запрос вроде получше можно сделать
2 DirecTwiX
 
01.04.13
20:03
(100+ВТ1.ПроцентПремии) / 100 * ВТ1.СуммаОборот
3 exwill
 
01.04.13
20:03
Что означает - сумма в апреле не изменяется?
Проводишь апрель и не изменяется?
4 GROOVY
 
01.04.13
20:04
5 holy90
 
01.04.13
20:13
с мах и мин все нормально, процент считается правильно!
начисленная премия должна считаться как премия, начисленная за весь период минус уже начисленная.

у меня получается, если я в феврале создал  документ расчет премии и провел его, то мартовская премия и апрельская и тд должны быть подсчитаны без учета премии, начисленной в феврале, а если я отменю его проведение, то премия последующая, должна быть расчитана с учетом отмены проведения, т.е в апреле должна быть начислена премия и за апрель и за февраль
6 GROOVY
 
01.04.13
20:20
(5) Где результат расчета премии храниться?
7 Базис
 
naïve
01.04.13
20:32
(6)  tsya.ru
8 GROOVY
 
01.04.13
20:44
(7) Да пофиг, я после 1с МогуПисатьКакХочу.

Хотя, да стыдно, не грамотный...
9 Базис
 
naïve
01.04.13
20:48
(8) Так. "не грамотный" пишется раздельно только в варианте "не грамотный, а одинэсник".

Ты ж не татарин, знай и цени родной язык. (А то некоторые уже "счётчик" через "Е" пишут, срамота).
10 GROOVY
 
01.04.13
20:50
(9) Все, зачморил совсем. Пойду мороженое трескать с горя.
11 holy90
 
01.04.13
20:51
результат расчета премии хранится в оборотном регистре накопления