Имя: Пароль:
1C
1С v8
Формирование запроса по клиентам с помощью СКД
,
0 Ksusha112233
 
19.04.17
19:17
Здравствуйте! Пожалуйста подскажите. Не хватает знаний.

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

Есть такой РН.Посещение
В нем зарегистрированы все посещения клуба.

Внутри программы реализованы сегменты клиентов, которые могут автоматически формироваться каждый день по заданным правилам. Правила эти надо написать в скд

Пожалуйста подскажите как осуществить такой запрос на СКД. Хотя бы может какой то пример
1 lodger
 
19.04.17
19:44
а причем тут скд если у вас просто выборка?
делаете пакетный запрос и показываете на форме список.
в пакетном запросе
первый запрос собирает посещения по месяцам где наличие посещений в месяца отражается цифрой 1
второй запрос суммирует последние 6 месяцев и если сумма = 6 выводит клиента.
2 Ksusha112233
 
19.04.17
20:04
Вот мне и не понятно. Со вторым запросом

Т.е. по сути мне нужно результат запроса вывести во временную таблицу.

Как мне суммировать последние 6 месяцев?  как связать два запроса? что то я совсем запуталась... извините
3 Ksusha112233
 
19.04.17
22:14
Как узнать наличие посещений именно в месяц? не задавая параметры НачалоПериода и КонецПериода?
Чтобы отбор в регистре шел именно за месяц?


А потом как мне задать так что если было посещение в месяц, что бы он остальные 5 месяцев просмотрел?

Потому что человек за полгода может сходить шесть раз, но за один или за два месяца.

Не могу понять как это сделать. Может кто нить приведет пример?
4 Мимохожий Однако
 
19.04.17
22:22
100 вопросов вместо того, чтобы взять консоль запросов и сделать запрос, который можно выложить сюда для критики и советов.
5 AlvlSpb
 
19.04.17
23:03
(3) Какие у вас измерения и ресурсы в регистре? Регистр периодический?
6 Ksusha112233
 
19.04.17
23:05
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПосещенияОбороты.Контрагент,
    ПосещенияОбороты.Услуга,
    ПосещенияОбороты.КоличествоОборот
ПОМЕСТИТЬ ТПосещенияМесяц
ИЗ
    РегистрНакопления.Посещения.Обороты({(&НачалоПериода1)}, {(&КонецПериода1)}, Месяц, ) КАК ПосещенияОбороты
ГДЕ
    ПосещенияОбороты.КоличествоОборот >= 1

СГРУППИРОВАТЬ ПО
    ПосещенияОбороты.Период,
    ПосещенияОбороты.Контрагент,
    ПосещенияОбороты.Услуга,



Это первый запрос в таблицу которого я хочу поместить контрагентов которые посещяли хотя бы раз в месяц.
НО параметры началопериода и КонецПериода не работают, даже задавая их на вкладке параметры. Запрос выполняется по всему периоду
7 AlvlSpb
 
19.04.17
23:16
Смысл такой. Если периодический, то на примере РН Заказы покупателей

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

СГРУППИРОВАТЬ ПО
    ЗаказыПокупателейОбороты.Номенклатура

УПОРЯДОЧИТЬ ПО
    Номенклатура


Результат запроса - Номенклатура (в вашем случае Клиент) и кол-во периодов (каждый месяц)
Если кол-во периодов =6, значит клиент был хотя бы раз в месяц
Ну а период (если нельзя установить в отчете явно) установить примерно так. ДатаОкончания = ТекущаяДата
ДатаНачала = ДатаОкончания - 15552000 (180*24*60*60)
8 AlvlSpb
 
19.04.17
23:22
(6) У вас периодический регистр. Делайте по примеру (7) Номенклатура - это ваш Контрагент, остальные ваши поля не нужны Возьмите поле Период и просуммируйте его
9 Ksusha112233
 
19.04.17
23:38
спасибо за ответ.


ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПосещенияОбороты.Контрагент,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПосещенияОбороты.Период) КАК Период
ИЗ
    РегистрНакопления.Посещения.Обороты(&ДатаНачала, &ДатаОкончания, Месяц, ) КАК ПосещенияОбороты
ГДЕ
    ПосещенияОбороты.КоличествоОборот >= 1

СГРУППИРОВАТЬ ПО
    ПосещенияОбороты.Контрагент



Но все равно не работает по датам. выводит за весь период посещений т.е. всех клиентов которые ходили хоть раз.
Что я делаю не так?
Как поставить условие =6?не понимаю уже что то под конец(((
Делаю через СКД
10 AlvlSpb
 
19.04.17
23:58
(9) Запрос у вас и должен выдавать ВСЕХ клиентов А вот вывод в отчет по отбору Период = 6 И в отчет попадут только клиенты хотя бы раз в месяц бывшие в спортзале
11 Ksusha112233
 
20.04.17
00:10
Ставлю простой отбор Период РАВНО 6(просто в настройках отбора)

Все равно выдает всех клиентов

Не могу понять, ставлю параметры выражение ДатаОкончания ТекущаяДата(), так же по примеру ДатаНачала
тоже выдает всех
12 Ksusha112233
 
20.04.17
00:11
Большое спасибо, что мне помагаете
13 Ksusha112233
 
20.04.17
00:11
Помогаете*
14 AlvlSpb
 
20.04.17
00:20
(13) не буду переделывать свой запрос. Если делаете в СКД, то, не вдаваясь в подробности, запрос такой (сделайте по аналогии)

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

СГРУППИРОВАТЬ ПО
    ЗаказыПокупателейОбороты.Номенклатура

В окне скд уберите у поля Период роль - период (должна быть без роли
В настройках Выбранные поля Номенклатура, Период
В отборе Период = 6 (можно не ставить, потом в форме настроить отбор)
Параметры - элементы пользовательских настроек
15 Ksusha112233
 
20.04.17
00:23
Запрос и отбор работает!))))) Большое спасибо!))) Я так рада!)))

Но вот датаНачала и Окончания не работает, как поступить?

Теперь выдает всех правильных клиентов, только за весь период, не учитываю дату начала и датаОкончания

Задаю в параметрах (в скд) выражение ДатаОкончания ТекущаяДата()
ДатаНачала ТекущаяДата() - 15552000 (180*24*60*60)

Ругается на минус
16 AlvlSpb
 
20.04.17
00:27
(15) нет нет нет Я тогда привел пример для модуля а не для скд
просто в настройках параметров поставьте галку включать в доступные поля никаких формул расчета даты (просто вы высказывались что не задействовать Дата начала и дата окончания, вот я и предложил как вариант)
17 AlvlSpb
 
20.04.17
00:30
(15) И в главном окне внешнего отчета не указывайте никакой формы, тогда параметры Дата начала и Дата окончания будут на форме отчета в польз режиме
18 AlvlSpb
 
20.04.17
00:32
(15) Ну и уже не совсем по теме "ТекущаяДата() - 15552000 (180*24*60*60)" все что в скобках - это пояснение откуда цифра. В модуле должно было быть ТекущаяДата() - 15552000
19 Ksusha112233
 
20.04.17
00:38
Теперь поняла.

У меня не внешний отчет.

Это правила для автоматической отборки контрагентов, для добавления в сегмент контрагентов(по расписанию), тогда они будут попадать в определенную бонусную программу.

Поэтому у меня нет возможности добавить поле типа Дата, что бы задать в ручную НачалоПериода и КонецПериода.

Когда я просто добавляю в отборе эти параметры с обычными дата соотвественно ругается.

Если на вкладке параметры (пользовательские) их совершенно не видит.

Что делать?
20 AlvlSpb
 
20.04.17
00:41
(19) Ну это же все-равно отчет? только не внешний?
21 AlvlSpb
 
20.04.17
00:43
Нажимаете знак "?" после поля поиска - СКД. Попадаете в настройки скд и там устанавливаете нужный период
22 Ksusha112233
 
20.04.17
01:05
я не могу найти(((

Если вы имеете в обычных настройках Параметры
То там не работает.

если заходить в констуктор и там в настройках задавать(в ручную) то тогда отбирает по тому периоду. Правильно я делаю?
23 AlvlSpb
 
20.04.17
01:10
(22) нет я говорил не об этом. Сделайте скрин вашего отчета, покажите его. А то меня не оставляет ощущение, что не совсем понимаю что вы делаете. (На всякий, скрин загрузите на любой ресурс, как вариант http://radikal.ru/ и ссылку разместите в ответе здесь)
24 AlvlSpb
 
20.04.17
01:15
(22) "если заходить в констуктор и там в настройках задавать(в ручную) то тогда отбирает по тому периоду. Правильно я делаю?" На сегодняшний день - правильно, а через месяц уже надо будет менять в конфигураторе - не вариант.
25 Ksusha112233
 
20.04.17
01:22
Да согласна. Тогда придется каждый месяц менять.

Я тоже не уверена, что делаю то, что вы мне говорите.

Скрин высылаю.

[url=http://radikal.ru][img]http://s009.radikal.ru/i310/1704/a7/9bbc292e63d1.jpg[/img][/url]


[url=http://radikal.ru][img]http://s019.radikal.ru/i616/1704/9e/132089c52193.jpg[/img][/url]
26 Ksusha112233
 
20.04.17
01:23
а как мне тогда сделать что бы эти даты вот как раз и были текущая дата и текущаядата -30 к примеру
27 AlvlSpb
 
20.04.17
01:34
(25) У вас явно не то в параметрах. не должны они задваиваться
как на втором скрине. Должны быть в единственном экземпляре. Проверьте. В конструкторе ЗАПРОСА В ТаблицыИПоля в таблицах, параметры вирт таблиц должен стоять только Период Месяц.
В Компановка данных параметры вирт таблицы НачалоПериода и КонецПериода Это раз.
Второе. Не совсем понимаю для чего вам Контрагент иерархия. Достаточно просто детальных записей, где в выбранных полях Контрагент и Период. И даже период нужен только на период отладки отчета, дальше его можно убрать (несет информацию только для отбора).
И третье, чтобы объяснить как выбрать период надо скрин отчета в ПОЛЬЗОВАТЕЛЬСКОМ режиме. Или все что говорил в (21) - это относится к пользовательскому режиму. (и ссылку размещайте без кодов просто в виде http/....
28 AlvlSpb
 
20.04.17
01:41
(25) Увидел. Вы запрос все-таки сделали не как в (14) Обратите внимание на фигурные скобки
29 Ksusha112233
 
20.04.17
01:47
http://s020.radikal.ru/i710/1704/04/72146cc552f0.jpg[/img][/url]

вот только такие могут быть еще настройки, но когда в них задаю параметы, они ен сохраня.тся и не берутся во внимание
30 AlvlSpb
 
20.04.17
01:51
(29) да Делать именно здесь как на последнем скрине. А не берутся они, потому что эти параметры у вас задвоены. Сделайте запрос как в (14)по аналогии с учетом фигурных скобок и названия параметров или как объяснил в (27) первое замечание и все заработает
31 Ksusha112233
 
20.04.17
02:01
похоже сделала.Сделала с фигурными скобками. убрала задвоение.
теперь все работает.!)))) я очень рада!)))


Большое Вам спасибо, не знаю как Вы меня вытерпели.
32 AlvlSpb
 
20.04.17
02:07
(31) ))) Все нормально. Теперь попробуйте сделать параметры как элемент пользовательских настроек. У вас на последнем скрине видно, что это можно сделать. Ставите галку перед параметром и нажимаете квадратик с плюсом выше. Там разберетесь. А я спать. рад что получилось ))))
Ошибка? Это не ошибка, это системная функция.