Имя: Пароль:
1C
1С v8
Как сделать что бы в 1С 8.2 УТ считалась скидка не по владельцу дисконтной кар
0 M-comp
 
29.03.15
22:18
Помогите плиз,в конфигураторе разбираюсь туго...
У меня есть 1000 дисконтных карт с разными штихкодами ,но с одним владельцем карты(у 1С ,конечно владельцы карт это разные люди) в ЧекККМ если пробивать разные дисконтные карты ,предварительно установив пороги скидок 1С начинает считать что это всё одна карта, т.е владелец у неё же один и тот же,и соответственно суммы всех покупок суммирует, владельцев для 1С создать разных 1000 штук это не реально и глупо,я залез в конфигуратор и нашёл такую вещь
Процедура ПроверитьВозможностьЗаменыДисконтнойКарты(ДокументОбъект, УчетнаяПолитика) Экспорт

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

        ПериодНакопления = ОбработкаТабличныхЧастей.ПолучитьПериодРасчетаНакопительныхСкидок(ДокументОбъект.Дата, УчетнаяПолитика);

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

        Запрос.УстановитьПараметр("ДатаНач", ПериодНакопления.ДатаНач);
        Запрос.УстановитьПараметр("ДатаКон", ПериодНакопления.ДатаКон);
        Запрос.УстановитьПараметр("ВладелецДисконтнойКарты", ДокументОбъект.ДисконтнаяКарта.ВладелецКарты);

        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Следующий() Тогда
            ТекВидКарты = ДокументОбъект.ДисконтнаяКарта.ВидДисконтнойКарты;
            Если Выборка.ЗначениеПорога <> ТекВидКарты Тогда
                Предупреждение("Сумма, накопленная покупателем, составила " + (ОбщегоНазначения.ФорматСумм(Выборка.Сумма,
                глЗначениеПеременной("ВалютаУправленческогоУчета")))+"." + Символы.ПС + Символы.ПС
                   + "Покупателю можно обменять дисконтную карту" + Символы.ПС
                   + """" + СокрЛП(ТекВидКарты) + """ на """ + СокрЛП(Выборка.ЗначениеПорога) + """.");
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры // ПроверитьВозможностьЗаменыДисконтнойКарты()



Прочитав код я понял что он черпает этого владельца с РегистраНакоплений,но поменяв ВдалецДисконтнойКарты на ДисконтнаяКарта( это именно порядковый номер который присваивает 1С при создании объектов) база перестаёт высчитывать эти пороги,перестаёт высчитывать и выдавать сообщение что при заступлении второго и последующих порогов меняется вид дисконтной карты(согласно порогам дисконтных карт)
Что я делаю не правильно??? или может я вообще даже мыслю не правильно? Казалось бы такая мелочь, но не получается
1 Галахад
 
гуру
30.03.15
06:21
Наверное надо просто учетной политике поменять СпособИспользованияНакопительныхСкидок
2 M-comp
 
30.03.15
11:10
(1) Почему то не работает,пробывал