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

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

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

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

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

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

Про сумму накоплений по РН ВыручкаИСебестоимостьПродаж понял, надо будет либо из него, либо считать по документам ОтчетОРозничныХПродажах, а вот про % - неужели нельзя вытянуть из скидки, привязанной к виду карты лояльности? Нелогично как-то...
+
8. kolya_tlt 86 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. Имея ТЗ с картами и выручкой и ТЗ с картами и скидкой обрабатываю две эти таблицы и создаю итоговую для выгрузки нужного мне состава. Всем спасибо за комментарии.
rashnik; Ганс; +2
10. kolya_tlt 86 09.02.17 17:33 Сейчас в теме
вы хоть со справкой ознакомьтесь
https://its.1c.ru/db/utovio#content:220:hdoc
+
11. MaCCapAkIII 09.02.17 17:40 Сейчас в теме
(10)Простите, видимо я чего-то не понимаю. Ознакомился. Там написано все то же, что прочитал уже неоднократно. Эта информация не приблизила меня к реализации задуманного - получение данных по картам лояльности и процентам скидок. Допустим, я создал в УТ несколько накопительных скидок с условием по общему объему продаж. Привязал к виду карт лояльности и создал в рамках вида несколько карт. По этим картам еще нет накоплений, так как продаж не было, соответственно скидка по ним должна быть минимальной, 5%. Вот эту информацию и хочу достать из БД запросом. Вот это у меня и не получается.
+
Внимание! Тема сдана в архив

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