Приветствую, уважаемые.
Прошу посильной помощи.
Есть УТ11.2, из которой необходимо выгружать во фронт дисконтные карты (насколько я понимаю - в УТ11 это называется картами лояльности). Надо выгружать процент скидки и накопление. Пробовал сегодня вытянуть из демо-базы данные по вопросу - ничего не получилось. Не могу понять каким образом получить таблицу с картами лояльности, процентом скидки по каждой и накоплениям, если карта накопительная. Отдельно скидки и карты лояльности выводятся, но как только собираю их в один запрос и соединяю по ВидуКартыЛояльности (у карты лояльности это владелец, у скидки - реквизит) - результат обнуляется... Толкните пожалуйста в нужном направлении. Заранее весьма признателеню
(12)(10)
Решил так.
1. Запросом к РН ДействиеСкидокНаценок выбираю все действующие скидки по картам лояльности.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка,
| ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.ЗначениеСкидкиНаценки КАК СкидкаЗначение,
| КартыЛояльности.Ссылка КАК КартаЛояльности,
| ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.УсловияПредоставления.(
| УсловиеПредоставления
| ) КАК УсловияПРедоставленияСкидок
|ИЗ
| РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(, ) КАК ДействиеСкидокНаценокСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КартыЛояльности КАК КартыЛояльности
| ПО ДействиеСкидокНаценокСрезПоследних.Источник = КартыЛояльности.Владелец
|ГДЕ
| ДействиеСкидокНаценокСрезПоследних.Статус = &СтатусСкидки
| И ТИПЗНАЧЕНИЯ(ДействиеСкидокНаценокСрезПоследних.Источник) = ТИП(СПравочник.ВидыКартЛояльности)
| И КартыЛояльности.Статус = &СтатусКартыЛояльности
|
|УПОРЯДОЧИТЬ ПО
| КартыЛояльности.Наименование,
| СкидкаЗначение УБЫВ";
Запрос.УстановитьПараметр("СтатусСкидки", Перечисления.СтатусыДействияСкидок.Действует);
Запрос.УстановитьПараметр("СтатусКартыЛояльности", Перечисления.СтатусыКартЛояльности.Действует);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Показать
2. Запросом выбираю выручку для выбранных ранее карт (предварительно сортирую и чищу ТЗ с картами на предмет удаления повторяющихся позиций, так как за каждой картой может быть закреплено несколько скидок, а мне нужен просто список карт для выручки)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КартыЛояльности.Ссылка КАК КартаЛояльности,
| СУММА(ЕСТЬNULL(ВыручкаИСебестоимостьПродаж.СуммаВВалютеВзаиморасчетов, 0)) КАК СуммаНакоплений
|ИЗ
| Справочник.КартыЛояльности КАК КартыЛояльности
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж
| ПО КартыЛояльности.Партнер = ВыручкаИСебестоимостьПродаж.АналитикаУчетаПоПартнерам.Партнер
|ГДЕ
| КартыЛояльности.Ссылка В (&МассивКартДляВыручки)
|
|СГРУППИРОВАТЬ ПО
| КартыЛояльности.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| КартаЛояльности";
Запрос.УстановитьПараметр("МассивКартДляВыручки", МассивКартДляВыручки);
тзКартыСВыручкой = Запрос.Выполнить().Выгрузить();
Показать
3. Имея ТЗ с картами и выручкой и ТЗ с картами и скидкой обрабатываю две эти таблицы и создаю итоговую для выгрузки нужного мне состава. Всем спасибо за комментарии.
(1) давно УТ открывал, но сумма начислений вроде хранятся в РН БонусныеБаллы, а процент надо будет считать по РН ВыручкаИСебестоимостьПродаж (имеется в виду сколько было предоставлено ранее)
давно УТ открывал, но сумма начислений вроде хранятся в РН БонусныеБаллы, а процент надо будет считать по РН ВыручкаИСебестоимостьПродаж
Про сумму накоплений по РН ВыручкаИСебестоимостьПродаж понял, надо будет либо из него, либо считать по документам ОтчетОРозничныХПродажах, а вот про % - неужели нельзя вытянуть из скидки, привязанной к виду карты лояльности? Нелогично как-то...
(7) вам что нужно? сколько по диск карте надо дать клиенту скидку? или вычислить процент скидки, которую дали при продаже? одних ОРП будет не достаточно, документов продаж много в программе и забыть про возвраты нужно
вам что нужно? сколько по диск карте надо дать клиенту скидку? или вычислить процент скидки, которую дали при продаже? одних ОРП будет не достаточно, документов продаж много в программе и забыть про возвраты нужно
Надо получить для выгрузки в кассовую программу данные: Карта лояльности, Процент скидки, сумма накопления. Подразумевается, что система скидок у клиента скорее всего будет простая, типа 5% на накопления 10000, 10% - на 50000. Но базы целевой нет, работаю с демо базой УТ11.2, и даже смоделировать простую карту с простоя накопительной скидкой не получается. Запросом достать из БД имеющиеся карты со скидками тоже не получается...
Смотрю в свой запрос и вижу что вы на правильном пути!
Уверенны ли вы что ВидКартЛояльности заполнен и там и там?
Вопрос для себя, как вы всё это дело планируете синхронизировать, просто тоже сейчас стоит такая задача и всё откладываю её реализацию, так как идей много, но ни одна мне не нравиться!
(2)Задача на данный момент стоит наладить общение УТ и кассовой программы. Впоследствии весь алгоритм выгрузки будет работать автоматически. Я в данный момент занимаюсь выгрузкой карт лояльности.
Уверенны ли вы что ВидКартЛояльности заполнен и там и там?
Что имелось в виду? И могу ли я просить вас показать каким образом Ваш запрос устроен, к каким таблицам обращаетесь и как их соединяете?
Запрос.Текст =
"ВЫБРАТЬ
| ВидыКартЛояльностиСкидкиНаценки.Ссылка КАК ВидКарты,
| СкидкиНаценки.ЗначениеСкидкиНаценки КАК РазмерСкидки
|ИЗ
| Справочник.СкидкиНаценки КАК СкидкиНаценки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКартЛояльности КАК ВидыКартЛояльностиСкидкиНаценки
| ПО СкидкиНаценки.ВидКартыЛояльности = ВидыКартЛояльностиСкидкиНаценки.Ссылка
|ГДЕ
| НЕ ВидыКартЛояльностиСкидкиНаценки.Ссылка.ПометкаУдаления";
Показать
И второй:
"ВЫБРАТЬ
| КартыЛояльности.Партнер.Код КАК Код,
| КартыЛояльности.Партнер.Наименование КАК ВладелецКарты,
| КартыЛояльности.Штрихкод КАК КодКарты
|ИЗ
| Справочник.КартыЛояльности КАК КартыЛояльности
|ГДЕ
| КартыЛояльности.Владелец.Статус = &Статус
| И НЕ КартыЛояльности.ПометкаУдаления
| И КартыЛояльности.Владелец = &Владелец";
"ВЫБРАТЬ
| ВидыКартЛояльностиСкидкиНаценки.Ссылка КАК ВидКарты,
| СкидкиНаценки.ЗначениеСкидкиНаценки КАК РазмерСкидки
|ИЗ
| Справочник.СкидкиНаценки КАК СкидкиНаценки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыКартЛояльности КАК ВидыКартЛояльностиСкидкиНаценки
| ПО СкидкиНаценки.ВидКартыЛояльности = ВидыКартЛояльностиСкидкиНаценки.Ссылка
|ГДЕ
| НЕ ВидыКартЛояльностиСкидкиНаценки.Ссылка.ПометкаУдаления";
У меня по этому запросу на тестовой базе получается вот такое:
Upd. Хотя в самом виде карт лояльности, например, Серебрянная, скидка вроде есть (второй скрин)
(5) Смотрите в 11.3 я Вид карт со скидкой вытащил вот так
ВЫБРАТЬ
ДействиеСкидокНаценокСрезПоследних.Источник КАК ВидКарты,
ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.ЗначениеСкидкиНаценки КАК РазмерСкидки
ИЗ
РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(, Источник ССЫЛКА Справочник.ВидыКартЛояльности) КАК ДействиеСкидокНаценокСрезПоследних
ГДЕ
ДействиеСкидокНаценокСрезПоследних.Источник <> ЗНАЧЕНИЕ(Справочник.ВидыКартЛояльности.ПустаяСсылка)
И ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.ЗначениеСкидкиНаценки <> 0
Знаю что в 11.1 нет этого регистра, на счёт 11.2 не могу сказать!
Дальше вы сможете прикрутить сюда саму карту лояльности, а вот дальше я ещё не разобрался куда он пишет обороты по этой карте и откуда берёт текущую скидку(думаю он её рассчитывает, но где я пока не разбирался), т.к. при проведении, например РТУ, ни в один регистр не пишется эта карта!(может я дезинформирую, но я смотрел движения регистров документа, там карты нет)
(12)(10)
Решил так.
1. Запросом к РН ДействиеСкидокНаценок выбираю все действующие скидки по картам лояльности.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка,
| ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.ЗначениеСкидкиНаценки КАК СкидкаЗначение,
| КартыЛояльности.Ссылка КАК КартаЛояльности,
| ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.УсловияПредоставления.(
| УсловиеПредоставления
| ) КАК УсловияПРедоставленияСкидок
|ИЗ
| РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(, ) КАК ДействиеСкидокНаценокСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КартыЛояльности КАК КартыЛояльности
| ПО ДействиеСкидокНаценокСрезПоследних.Источник = КартыЛояльности.Владелец
|ГДЕ
| ДействиеСкидокНаценокСрезПоследних.Статус = &СтатусСкидки
| И ТИПЗНАЧЕНИЯ(ДействиеСкидокНаценокСрезПоследних.Источник) = ТИП(СПравочник.ВидыКартЛояльности)
| И КартыЛояльности.Статус = &СтатусКартыЛояльности
|
|УПОРЯДОЧИТЬ ПО
| КартыЛояльности.Наименование,
| СкидкаЗначение УБЫВ";
Запрос.УстановитьПараметр("СтатусСкидки", Перечисления.СтатусыДействияСкидок.Действует);
Запрос.УстановитьПараметр("СтатусКартыЛояльности", Перечисления.СтатусыКартЛояльности.Действует);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Показать
2. Запросом выбираю выручку для выбранных ранее карт (предварительно сортирую и чищу ТЗ с картами на предмет удаления повторяющихся позиций, так как за каждой картой может быть закреплено несколько скидок, а мне нужен просто список карт для выручки)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КартыЛояльности.Ссылка КАК КартаЛояльности,
| СУММА(ЕСТЬNULL(ВыручкаИСебестоимостьПродаж.СуммаВВалютеВзаиморасчетов, 0)) КАК СуммаНакоплений
|ИЗ
| Справочник.КартыЛояльности КАК КартыЛояльности
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж
| ПО КартыЛояльности.Партнер = ВыручкаИСебестоимостьПродаж.АналитикаУчетаПоПартнерам.Партнер
|ГДЕ
| КартыЛояльности.Ссылка В (&МассивКартДляВыручки)
|
|СГРУППИРОВАТЬ ПО
| КартыЛояльности.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| КартаЛояльности";
Запрос.УстановитьПараметр("МассивКартДляВыручки", МассивКартДляВыручки);
тзКартыСВыручкой = Запрос.Выполнить().Выгрузить();
Показать
3. Имея ТЗ с картами и выручкой и ТЗ с картами и скидкой обрабатываю две эти таблицы и создаю итоговую для выгрузки нужного мне состава. Всем спасибо за комментарии.
(10)Простите, видимо я чего-то не понимаю. Ознакомился. Там написано все то же, что прочитал уже неоднократно. Эта информация не приблизила меня к реализации задуманного - получение данных по картам лояльности и процентам скидок. Допустим, я создал в УТ несколько накопительных скидок с условием по общему объему продаж. Привязал к виду карт лояльности и создал в рамках вида несколько карт. По этим картам еще нет накоплений, так как продаж не было, соответственно скидка по ним должна быть минимальной, 5%. Вот эту информацию и хочу достать из БД запросом. Вот это у меня и не получается.