Запрос к УТ11 на карты лояльности

1. MaCCapAkIII 09.02.17 05:57 Сейчас в теме
Приветствую, уважаемые.
Прошу посильной помощи.
Есть УТ11.2, из которой необходимо выгружать во фронт дисконтные карты (насколько я понимаю - в УТ11 это называется картами лояльности). Надо выгружать процент скидки и накопление. Пробовал сегодня вытянуть из демо-базы данные по вопросу - ничего не получилось. Не могу понять каким образом получить таблицу с картами лояльности, процентом скидки по каждой и накоплениям, если карта накопительная. Отдельно скидки и карты лояльности выводятся, но как только собираю их в один запрос и соединяю по ВидуКартыЛояльности (у карты лояльности это владелец, у скидки - реквизит) - результат обнуляется... Толкните пожалуйста в нужном направлении. Заранее весьма признателеню
user1982459; +1 Ответить
По теме из базы знаний
Найденные решения
13. MaCCapAkIII 13.02.17 08:07 Сейчас в теме
(12)(10)
Решил так.
1. Запросом к РН ДействиеСкидокНаценок выбираю все действующие скидки по картам лояльности.

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

2. Запросом выбираю выручку для выбранных ранее карт (предварительно сортирую и чищу ТЗ с картами на предмет удаления повторяющихся позиций, так как за каждой картой может быть закреплено несколько скидок, а мне нужен просто список карт для выручки)

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

3. Имея ТЗ с картами и выручкой и ТЗ с картами и скидкой обрабатываю две эти таблицы и создаю итоговую для выгрузки нужного мне состава. Всем спасибо за комментарии.
user1982459; rashnik; Ганс; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. kolya_tlt 89 09.02.17 16:32 Сейчас в теме
(1) давно УТ открывал, но сумма начислений вроде хранятся в РН БонусныеБаллы, а процент надо будет считать по РН ВыручкаИСебестоимостьПродаж (имеется в виду сколько было предоставлено ранее)
7. MaCCapAkIII 09.02.17 16:40 Сейчас в теме
(6)
давно УТ открывал, но сумма начислений вроде хранятся в РН БонусныеБаллы, а процент надо будет считать по РН ВыручкаИСебестоимостьПродаж

Про сумму накоплений по РН ВыручкаИСебестоимостьПродаж понял, надо будет либо из него, либо считать по документам ОтчетОРозничныХПродажах, а вот про % - неужели нельзя вытянуть из скидки, привязанной к виду карты лояльности? Нелогично как-то...
8. kolya_tlt 89 09.02.17 16:58 Сейчас в теме
(7) вам что нужно? сколько по диск карте надо дать клиенту скидку? или вычислить процент скидки, которую дали при продаже? одних ОРП будет не достаточно, документов продаж много в программе и забыть про возвраты нужно
9. MaCCapAkIII 09.02.17 17:04 Сейчас в теме
(8)
вам что нужно? сколько по диск карте надо дать клиенту скидку? или вычислить процент скидки, которую дали при продаже? одних ОРП будет не достаточно, документов продаж много в программе и забыть про возвраты нужно


Надо получить для выгрузки в кассовую программу данные: Карта лояльности, Процент скидки, сумма накопления. Подразумевается, что система скидок у клиента скорее всего будет простая, типа 5% на накопления 10000, 10% - на 50000. Но базы целевой нет, работаю с демо базой УТ11.2, и даже смоделировать простую карту с простоя накопительной скидкой не получается. Запросом достать из БД имеющиеся карты со скидками тоже не получается...
2. Ганс 09.02.17 11:20 Сейчас в теме
Смотрю в свой запрос и вижу что вы на правильном пути!
Уверенны ли вы что ВидКартЛояльности заполнен и там и там?

Вопрос для себя, как вы всё это дело планируете синхронизировать, просто тоже сейчас стоит такая задача и всё откладываю её реализацию, так как идей много, но ни одна мне не нравиться!
3. MaCCapAkIII 09.02.17 15:58 Сейчас в теме
(2)Задача на данный момент стоит наладить общение УТ и кассовой программы. Впоследствии весь алгоритм выгрузки будет работать автоматически. Я в данный момент занимаюсь выгрузкой карт лояльности.
Уверенны ли вы что ВидКартЛояльности заполнен и там и там?
Что имелось в виду? И могу ли я просить вас показать каким образом Ваш запрос устроен, к каким таблицам обращаетесь и как их соединяете?
4. Ганс 09.02.17 16:06 Сейчас в теме
(3)На самом деле за основу я взял обработку от сюда: http://infostart.ru/public/298635/

Там 2 запроса, соответственно:
Запрос.Текст = 
        "ВЫБРАТЬ
        |    ВидыКартЛояльностиСкидкиНаценки.Ссылка КАК ВидКарты,
        |    СкидкиНаценки.ЗначениеСкидкиНаценки КАК РазмерСкидки
        |ИЗ
        |    Справочник.СкидкиНаценки КАК СкидкиНаценки
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКартЛояльности КАК ВидыКартЛояльностиСкидкиНаценки
        |        ПО СкидкиНаценки.ВидКартыЛояльности = ВидыКартЛояльностиСкидкиНаценки.Ссылка
        |ГДЕ
        |    НЕ ВидыКартЛояльностиСкидкиНаценки.Ссылка.ПометкаУдаления";
Показать


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


Где &владелец = ВидКарты(из первого запроса)
5. MaCCapAkIII 09.02.17 16:22 Сейчас в теме
(4)
"ВЫБРАТЬ
| ВидыКартЛояльностиСкидкиНаценки.Ссылка КАК ВидКарты,
| СкидкиНаценки.ЗначениеСкидкиНаценки КАК РазмерСкидки
|ИЗ
| Справочник.СкидкиНаценки КАК СкидкиНаценки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКартЛояльности КАК ВидыКартЛояльностиСкидкиНаценки
| ПО СкидкиНаценки.ВидКартыЛояльности = ВидыКартЛояльностиСкидкиНаценки.Ссылка
|ГДЕ
| НЕ ВидыКартЛояльностиСкидкиНаценки.Ссылка.ПометкаУдаления";


У меня по этому запросу на тестовой базе получается вот такое:

Upd. Хотя в самом виде карт лояльности, например, Серебрянная, скидка вроде есть (второй скрин)
Прикрепленные файлы:
12. Ганс 10.02.17 09:52 Сейчас в теме
(5) Смотрите в 11.3 я Вид карт со скидкой вытащил вот так
ВЫБРАТЬ
    ДействиеСкидокНаценокСрезПоследних.Источник КАК ВидКарты,
    ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.ЗначениеСкидкиНаценки КАК РазмерСкидки
ИЗ
    РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(, Источник ССЫЛКА Справочник.ВидыКартЛояльности) КАК ДействиеСкидокНаценокСрезПоследних
ГДЕ
    ДействиеСкидокНаценокСрезПоследних.Источник <> ЗНАЧЕНИЕ(Справочник.ВидыКартЛояльности.ПустаяСсылка)
    И ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.ЗначениеСкидкиНаценки <> 0


Знаю что в 11.1 нет этого регистра, на счёт 11.2 не могу сказать!

Дальше вы сможете прикрутить сюда саму карту лояльности, а вот дальше я ещё не разобрался куда он пишет обороты по этой карте и откуда берёт текущую скидку(думаю он её рассчитывает, но где я пока не разбирался), т.к. при проведении, например РТУ, ни в один регистр не пишется эта карта!(может я дезинформирую, но я смотрел движения регистров документа, там карты нет)
13. MaCCapAkIII 13.02.17 08:07 Сейчас в теме
(12)(10)
Решил так.
1. Запросом к РН ДействиеСкидокНаценок выбираю все действующие скидки по картам лояльности.

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

2. Запросом выбираю выручку для выбранных ранее карт (предварительно сортирую и чищу ТЗ с картами на предмет удаления повторяющихся позиций, так как за каждой картой может быть закреплено несколько скидок, а мне нужен просто список карт для выручки)

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

3. Имея ТЗ с картами и выручкой и ТЗ с картами и скидкой обрабатываю две эти таблицы и создаю итоговую для выгрузки нужного мне состава. Всем спасибо за комментарии.
user1982459; rashnik; Ганс; +3 Ответить
10. kolya_tlt 89 09.02.17 17:33 Сейчас в теме
11. MaCCapAkIII 09.02.17 17:40 Сейчас в теме
(10)Простите, видимо я чего-то не понимаю. Ознакомился. Там написано все то же, что прочитал уже неоднократно. Эта информация не приблизила меня к реализации задуманного - получение данных по картам лояльности и процентам скидок. Допустим, я создал в УТ несколько накопительных скидок с условием по общему объему продаж. Привязал к виду карт лояльности и создал в рамках вида несколько карт. По этим картам еще нет накоплений, так как продаж не было, соответственно скидка по ним должна быть минимальной, 5%. Вот эту информацию и хочу достать из БД запросом. Вот это у меня и не получается.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот