| 
    
        
     
     | 
    
  | 
Реализация кэшбэка | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        prilforreal    
     27.11.17 
            ✎
    12:26 
 | 
         
        Пишу обработку для начисления кэшбэка. Принцип работы такой: раз в месяц будет запускаться, выбирать документы по этим контрагентам, считать сумму из этих доков, и начислять процент на баланс, пока пишу  код для расчета этого процента, но появилась проблема, запускаю обработку для проверки, жму выполнить, никакой реакции... смотрю отладчиком, доходит до цикла и завершает процедуру, помогите разобраться будьте добры)
 
        Процедура КнопкаВыполнитьНажатие(Кнопка) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! ТабДок = Новый ТабличныйДокумент; Макет = ЭтотОбъект.ПолучитьМакет("Макет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДилЗаказ.Дилер, | СУММА(ДилЗаказ.Сумма_Итог) КАК Сумма_Итог |ИЗ | Документ.ДилЗаказ КАК ДилЗаказ |ГДЕ | ДилЗаказ.Проведен = &Истина | И ДилЗаказ.Дилер.Кэшбэк = &Истина | И ДилЗаказ.Дата МЕЖДУ &НачПериода И &КонПериода | |СГРУППИРОВАТЬ ПО | ДилЗаказ.Дилер"; Запрос.УстановитьПараметр("Истина", Истина); Запрос.УстановитьПараметр("КонПериода", ТекущаяДата()); НачПериода = НачалоДня(ТекущаяДата()-86400); Запрос.УстановитьПараметр("НачПериода", НачПериода); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); СуммаКБ=0; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл СуммаКБ=(ВыборкаДетальныеЗаписи.Сумма_Итог/100)*6; Сообщить(СуммаКБ); КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры  | 
|||
| 
    1
    
        Numerus Mikhail    
     27.11.17 
            ✎
    12:28 
 | 
         
        Сообщить(РезультатЗапроса.Пустой());     
         | 
|||
| 
    2
    
        Джинн    
     27.11.17 
            ✎
    12:28 
 | 
         
        И что, по не выполненным заказам тоже откаты начисляете?     
         | 
|||
| 
    3
    
        Numerus Mikhail    
     27.11.17 
            ✎
    12:30 
 | 
         
        НачПериода = НачалоДня(ТекущаяДата()-86400);
 
        это не месяц, а день, если что. Возможно у вас нет документов за последний день  | 
|||
| 
    4
    
        Рэйв    
     27.11.17 
            ✎
    12:31 
 | 
         
        (0)>>Реализация кэшбэка
 
        В цивилизованном мире это называется ретро-бонус:-)  | 
|||
| 
    5
    
        prilforreal    
     27.11.17 
            ✎
    12:34 
 | 
         
        (2) Есть проверка на проведенные документы, если документ проведен, значит заказ выполнен) (3) Ух, точно, какой невнимательный я, сейчас исправлю и посмотрю) (4) Нууууу! Где цивилизация а где мы?))     
         | 
|||
| 
    6
    
        vde69    
     27.11.17 
            ✎
    12:37 
 | 
         
        что-либо начислять на основании документов (вне этого документа) - грубейшая методологическая ошибка.
 
        надо так 1. сделать новый регистр "УчитываемыеПродажи" 2. подписку на событие по документам где делаем проводки по этому регистру 3. уже на основании движений в этом регистре начисляем бонусы/откаты плюс такого подхода - можно часть документов отсторнировать по этому одному документу, или наоборот ввести начальные остатки...  | 
|||
| 
    7
    
        wondkind    
     27.11.17 
            ✎
    12:46 
 | 
         
        &Истина - да, это сильно     
         | 
|||
| 
    8
    
        vde69    
     27.11.17 
            ✎
    12:51 
 | 
         
        еще один момент - при изменений в контрагенте реквизита "Кэшбэк" у тебя сразу начнет считать для всех документов.
 
        Так не делается... например мы до 1 января начисляли, потом с 1 января по 1 июля не начисляем а дальше опять начисляем... твоя схема такое не сможет реализовать...  | 
|||
| 
    9
    
        Адинэснег    
     27.11.17 
            ✎
    13:11 
 | 
         
        (0)ты регистр накопления не думал под задачу сделать?
 
        помимо начисления, надо еще и списывать баланс  | 
|||
| 
    10
    
        prilforreal    
     27.11.17 
            ✎
    14:55 
 | 
         
        (9) Кэшбэк только начисляет, есть регистр расчеты, в него и запишу, тз толкового не дали, так что думаю еще придется поплясать. (8) Как так для всех? Только для ДилЗаказа, в запросе же написано)     
         | 
|||
| 
    11
    
        prilforreal    
     27.11.17 
            ✎
    14:56 
 | 
         
        (8) Каждого пятого числа будет начислять:
 
        C 5ого ноября по 5 декабря, с 5 декабря по 5 января итд  | 
|||
| 
    12
    
        Numerus Mikhail    
     27.11.17 
            ✎
    14:59 
 | 
         
        (11) Имеется в виду, что если вы подключили контрагента к кэшбеку 1 декабря, твоя система посчитает все документы за период с 5 ноября по 1 декабря тоже. Это, вероятнее всего, неверно.     
         | 
|||
| 
    13
    
        prilforreal    
     27.11.17 
            ✎
    15:27 
 | 
         
        (6) Спасибо, обработка будет создавать в цикле документ оплата, через который и будет происходить начисление. (12) Отличное замечание! Спасибо! Поработаю над этим!     
         | 
|||
| 
    14
    
        3achem    
     27.11.17 
            ✎
    16:44 
 | 
         
        (0) Устанавливай дату непосредственно, если не понимаешь как высчитывать её программно. Убери из запроса проверку на &Истина. 
 
        Это: ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); На это: ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать().Выгрузить(); Это Пока ВыборкаДетальныеЗаписи.Следующий() Цикл На это Для каждого НСтр ИЗ ВыборкаДетальныеЗаписи Цикл Отладчиком намного легче смотреть таблицу значения, не правда ли? И предварительно, чтобы понять, что у тебя возвращает запрос прогони его через консоль. Бонус: Это можно сделать в запросе: СуммаКБ=(ВыборкаДетальныеЗаписи.Сумма_Итог/100)*6;  | 
|||
| 
    15
    
        3achem    
     27.11.17 
            ✎
    16:46 
 | 
         
        (14) И добавлю, правильно данные хранить в регистрах, чем обращаться к документам.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |