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

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

    Запрос.УстановитьПараметр("СтатусСкидки", Перечисления.СтатусыДействияСкидок.Действует);
    Запрос.УстановитьПараметр("СтатусКартыЛояльности", Перечисления.СтатусыКартЛояльности.Действует);

    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
```

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

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

    Запрос.УстановитьПараметр("МассивКартДляВыручки", МассивКартДляВыручки);

    тзКартыСВыручкой = Запрос.Выполнить().Выгрузить();
```

3. Имея ТЗ с картами и выручкой и ТЗ с картами и скидкой обрабатываю две эти таблицы и создаю итоговую для выгрузки нужного мне состава. Всем спасибо за комментарии.
---
давно УТ открывал, но сумма начислений вроде хранятся в РН БонусныеБаллы, а процент надо будет считать по РН ВыручкаИСебестоимостьПродаж (имеется в виду сколько было предоставлено ранее)
---
давно УТ открывал, но сумма начислений вроде хранятся в РН БонусныеБаллы, а процент надо будет считать по РН ВыручкаИСебестоимостьПродаж
Про сумму накоплений по РН ВыручкаИСебестоимостьПродаж понял, надо будет либо из него, либо считать по документам ОтчетОРозничныХПродажах, а вот про % - неужели нельзя вытянуть из скидки, привязанной к виду карты лояльности? Нелогично как-то...
---
вам что нужно? сколько по диск карте надо дать клиенту скидку? или вычислить процент скидки, которую дали при продаже? одних ОРП будет не достаточно, документов продаж много в программе и забыть про возвраты нужно
---
вам что нужно? сколько по диск карте надо дать клиенту скидку? или вычислить процент скидки, которую дали при продаже? одних ОРП будет не достаточно, документов продаж много в программе и забыть про возвраты нужно

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

Вопрос для себя, как вы всё это дело планируете синхронизировать, просто тоже сейчас стоит такая задача и всё откладываю её реализацию, так как идей много, но ни одна мне не нравиться!
---
Задача на данный момент стоит наладить общение УТ и кассовой программы. Впоследствии весь алгоритм выгрузки будет работать автоматически. Я в данный момент занимаюсь выгрузкой карт лояльности.
Уверенны ли вы что ВидКартЛояльности заполнен и там и там? Что имелось в виду? И могу ли я просить вас показать каким образом Ваш запрос устроен, к каким таблицам обращаетесь и как их соединяете?
---
На самом деле за основу я взял обработку от сюда: http://infostart.ru/public/298635/

Там 2 запроса, соответственно:

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

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

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

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

Upd. Хотя в самом виде карт лояльности, например, Серебрянная, скидка вроде есть (второй скрин)
---
Смотрите в 11.3 я Вид карт со скидкой вытащил вот так

```1c
    ВЫБРАТЬ
    ДействиеСкидокНаценокСрезПоследних.Источник КАК ВидКарты,
    ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.ЗначениеСкидкиНаценки КАК РазмерСкидки
    ИЗ
    РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(, Источник ССЫЛКА Справочник.ВидыКартЛояльности) КАК ДействиеСкидокНаценокСрезПоследних
    ГДЕ
    ДействиеСкидокНаценокСрезПоследних.Источник <> ЗНАЧЕНИЕ(Справочник.ВидыКартЛояльности.ПустаяСсылка)
    И ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.ЗначениеСкидкиНаценки <> 0
```

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

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

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

    Запрос.УстановитьПараметр("СтатусСкидки", Перечисления.СтатусыДействияСкидок.Действует);
    Запрос.УстановитьПараметр("СтатусКартыЛояльности", Перечисления.СтатусыКартЛояльности.Действует);

    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
```

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

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

    Запрос.УстановитьПараметр("МассивКартДляВыручки", МассивКартДляВыручки);

    тзКартыСВыручкой = Запрос.Выполнить().Выгрузить();
```

3. Имея ТЗ с картами и выручкой и ТЗ с картами и скидкой обрабатываю две эти таблицы и создаю итоговую для выгрузки нужного мне состава. Всем спасибо за комментарии.
---
вы хоть со справкой ознакомьтесь
https://its.1c.ru/db/utovio#content:220:hdoc
---
Простите, видимо я чего-то не понимаю. Ознакомился. Там написано все то же, что прочитал уже неоднократно. Эта информация не приблизила меня к реализации задуманного - получение данных по картам лояльности и процентам скидок. Допустим, я создал в УТ несколько накопительных скидок с условием по общему объему продаж. Привязал к виду карт лояльности и создал в рамках вида несколько карт. По этим картам еще нет накоплений, так как продаж не было, соответственно скидка по ним должна быть минимальной, 5%. Вот эту информацию и хочу достать из БД запросом. Вот это у меня и не получается.