|
СКД. Запрос. Выбор из регистра за период | ☑ | ||
---|---|---|---|---|
0
Альбатрос
04.10.12
✎
07:14
|
Привет всем! Есть запрос:
|
|||
1
ZanderZ
04.10.12
✎
07:15
|
хороший запрос
|
|||
2
Альбатрос
04.10.12
✎
07:15
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ТаблКонтрагенты.Контрагент, ТаблПродажи.Номенклатура, ТаблПродажи.Период ПОМЕСТИТЬ ВТПродажи ИЗ (ВЫБРАТЬ Контрагенты.Ссылка КАК Контрагент ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Ссылка В(&СписокКонтрагентов)) КАК ТаблКонтрагенты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, Продажи.Период КАК Период, Продажи.Контрагент КАК Контрагент ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Контрагент В(&СписокКонтрагентов) СГРУППИРОВАТЬ ПО Продажи.Период, Продажи.Номенклатура, Продажи.Контрагент) КАК ТаблПродажи ПО ТаблКонтрагенты.Контрагент = ТаблПродажи.Контрагент СГРУППИРОВАТЬ ПО ТаблКонтрагенты.Контрагент, ТаблПродажи.Период, ТаблПродажи.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажи.Контрагент, ВЫБОР КОГДА МАКСИМУМ(ВТПродажи.Период) ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК БылиСделки ПОМЕСТИТЬ ВТБылиСделки ИЗ ВТПродажи КАК ВТПродажи СГРУППИРОВАТЬ ПО ВТПродажи.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТПродажи.Контрагент, ВТПродажи.Номенклатура, ВТПродажи.Период, ВТБылиСделки.БылиСделки КАК БылиСделки ИЗ ВТПродажи КАК ВТПродажи ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТБылиСделки КАК ВТБылиСделки ПО ВТПродажи.Контрагент = ВТБылиСделки.Контрагент Как в Регистре продажи задать период выборки? |
|||
3
Альбатрос
04.10.12
✎
07:15
|
(1) Действия опережают мысль )
|
|||
4
rphosts
04.10.12
✎
07:19
|
зачем у регистра запросов в 1 запросе пакета стоит Продажи.Контрагент В(&СписокКонтрагентов) если ты регистр соединяешь левым соединением с контрагентами причём слева контрагенты!
ты это из условия убери и добавь условие на период |
|||
5
rphosts
04.10.12
✎
07:20
|
регистра запросов = регистра продажи
|
|||
6
Альбатрос
04.10.12
✎
07:23
|
(4) Запрос не мой. Разве это не означает, что мы выбрали контрагентов из списка, а потом по этому списку соединяем с регистром продаж? Чтоб не попали ненужные нам контрагенты.
|
|||
7
Альбатрос
04.10.12
✎
07:24
|
(4) А все, понял, про что вы
|
|||
8
Альбатрос
04.10.12
✎
07:25
|
(5) Не понял, как это условие впихать
|
|||
9
rphosts
04.10.12
✎
07:28
|
(8) ГДЕ Продажи.Период> &Дата1 и Продажи.Период< &Дата2
|
|||
10
Живой Ископаемый
04.10.12
✎
07:46
|
Простите, я пропустил наверное что-то, Когда мы отмечаем день, с которого уже лучше условие писать не в параметрах виртуальной таблицы?
|
|||
11
Живой Ископаемый
04.10.12
✎
07:49
|
или задача действительно состоит в том, чтобы получить каждую запись регистра?
ИЗ РегистрНакопления.Продажи КАК Продажи ГДЕ Продажи.Контрагент В(&СписокКонтрагентов) Но нет, дальше идет группировка, значит все-таки не нужны отдельные записи... Или все-таки нужны? |
|||
12
rphosts
04.10.12
✎
07:51
|
(11) ну мы-же не знаем каике там измерения в регистре... такие выверты иногда встречал... а что делать - хрень уже давно в эксплуатации
|
|||
13
Живой Ископаемый
04.10.12
✎
07:53
|
(0) Автор, Контрагенты и номенклатура - это реквизиты или измерения?
то что Период - измерение мы все-таки знаем. |
|||
14
rphosts
04.10.12
✎
07:58
|
(13) кста, встречал такое что контрагенты были в реквизитах....
|
|||
15
Альбатрос
04.10.12
✎
08:13
|
(13) Щас гляну. Тут как бэ вообще сложный для меня отчет на СКД, я его расколупать пытаюсь...
|
|||
16
Живой Ископаемый
04.10.12
✎
08:15
|
2(15) просто вполне возможно его упростить, если сделать по-человечески
|
|||
17
Альбатрос
04.10.12
✎
08:19
|
По ходу дела, запрос не тот ))))
Вот основной запрос по основной СКД: ВЫБРАТЬ РАЗРЕШЕННЫЕ ТаблКонтрагенты.Контрагент, ТаблКонтрагенты.ОтделПродаж, ТаблКонтрагенты.Регион, ТаблКонтрагенты.ОсновнойМенеджерПокупателя, ЕСТЬNULL(СтадииВзаимоотношенийСПокупателямиСрезПоследних.Стадия, ЗНАЧЕНИЕ(Перечисление.СтадииВзаимоотношенийСПокупателями.ПустаяСсылка)) КАК СтадияВзаимоотношений, ЕСТЬNULL(ПланыПродаж.План, ЗНАЧЕНИЕ(Перечисление.Планы.ПустаяСсылка)) КАК План, НЕОПРЕДЕЛЕНО КАК БылиСделки, ТаблКонтрагенты.Контрагент.ОсновнойВидДеятельности КАК ОсновнойВидДеятельности, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК ПокупаемаяНоменклатура, ЕСТЬNULL(ВнешниеДанныеОКонтрагентахОборудованиеИТехника.Ссылка, "") КАК СсылкаОборудованиеИТехника, ЕСТЬNULL(ВнешниеДанныеОКонтрагентахОборудованиеИТехника.ДатаАктуальности, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаАктуальностиОборудованиеИТехника, ЕСТЬNULL(ВнешниеДанныеОКонтрагентахПотребляемыеСмазочныеМатериалы.Ссылка, "") КАК СсылкаПотребляемыеСмазочныеМатериалы, ЕСТЬNULL(ВнешниеДанныеОКонтрагентахПотребляемыеСмазочныеМатериалы.ДатаАктуальности, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаАктуальностиПотребляемыеСмазочныеМатериалы, ЕСТЬNULL(ВнешниеДанныеОКонтрагентахСтруктураПредприятия.Ссылка, "") КАК СсылкаСтруктураПредприятия, ЕСТЬNULL(ВнешниеДанныеОКонтрагентахСтруктураПредприятия.ДатаАктуальности, ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаАктуальностиСтруктураПредприятия, ДАТАВРЕМЯ(1, 1, 1) КАК ПериодСделок ИЗ (ВЫБРАТЬ Контрагенты.Ссылка КАК Контрагент, Контрагенты.ОтделПродаж КАК ОтделПродаж, Контрагенты.Регион КАК Регион, Контрагенты.ОсновнойМенеджерПокупателя КАК ОсновнойМенеджерПокупателя ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ НЕ Контрагенты.ЭтоГруппа И Контрагенты.Покупатель И НЕ Контрагенты.ПометкаУдаления {ГДЕ Контрагенты.ОтделПродаж.*, Контрагенты.Регион.*, Контрагенты.ОсновнойМенеджерПокупателя.*}) КАК ТаблКонтрагенты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтадииВзаимоотношенийСПокупателями.СрезПоследних(, {(Контрагент)}) КАК СтадииВзаимоотношенийСПокупателямиСрезПоследних ПО ТаблКонтрагенты.Контрагент = СтадииВзаимоотношенийСПокупателямиСрезПоследних.Контрагент ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПланыПродажОбороты.Контрагент КАК Контрагент, ПланыПродажОбороты.Сценарий.План КАК План ИЗ РегистрНакопления.ПланыПродаж.Обороты( , , Запись, Сценарий.План <> ЗНАЧЕНИЕ(Перечисление.Планы.ПустаяСсылка) И Сценарий.Назначение = ЗНАЧЕНИЕ(Перечисление.НазначенияПлановПродаж.Рабочий) {(Контрагент)}) КАК ПланыПродажОбороты ГДЕ ВЫБОР КОГДА ПланыПродажОбороты.Сценарий.Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Квартал) ТОГДА НАЧАЛОПЕРИОДА(&РабочаяДата, КВАРТАЛ) <= ПланыПродажОбороты.Период ИНАЧЕ ВЫБОР КОГДА ПланыПродажОбороты.Сценарий.Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Месяц) ТОГДА НАЧАЛОПЕРИОДА(&РабочаяДата, МЕСЯЦ) <= ПланыПродажОбороты.Период ИНАЧЕ ВЫБОР КОГДА ПланыПродажОбороты.Сценарий.Периодичность = ЗНАЧЕНИЕ(Перечисление.Периодичность.Неделя) ТОГДА НАЧАЛОПЕРИОДА(&РабочаяДата, НЕДЕЛЯ) <= ПланыПродажОбороты.Период ИНАЧЕ ЛОЖЬ КОНЕЦ КОНЕЦ КОНЕЦ СГРУППИРОВАТЬ ПО ПланыПродажОбороты.Контрагент, ПланыПродажОбороты.Сценарий.План) КАК ПланыПродаж ПО ТаблКонтрагенты.Контрагент = ПланыПродаж.Контрагент ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВнешниеДанныеОКонтрагентах КАК ВнешниеДанныеОКонтрагентахОборудованиеИТехника ПО ТаблКонтрагенты.Контрагент = ВнешниеДанныеОКонтрагентахОборудованиеИТехника.Контрагент И (ВнешниеДанныеОКонтрагентахОборудованиеИТехника.ТипДанных = ЗНАЧЕНИЕ(Перечисление.ТипыВнешнихДанныхОКонтрагентах.ОборудованиеИТехника)) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВнешниеДанныеОКонтрагентах КАК ВнешниеДанныеОКонтрагентахПотребляемыеСмазочныеМатериалы ПО ТаблКонтрагенты.Контрагент = ВнешниеДанныеОКонтрагентахПотребляемыеСмазочныеМатериалы.Контрагент И (ВнешниеДанныеОКонтрагентахОборудованиеИТехника.ТипДанных = ЗНАЧЕНИЕ(Перечисление.ТипыВнешнихДанныхОКонтрагентах.ПотребляемыеСмазочныеМатериалы)) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВнешниеДанныеОКонтрагентах КАК ВнешниеДанныеОКонтрагентахСтруктураПредприятия ПО ТаблКонтрагенты.Контрагент = ВнешниеДанныеОКонтрагентахСтруктураПредприятия.Контрагент И (ВнешниеДанныеОКонтрагентахОборудованиеИТехника.ТипДанных = ЗНАЧЕНИЕ(Перечисление.ТипыВнешнихДанныхОКонтрагентах.СтруктураПредприятия)) |
|||
18
Альбатрос
04.10.12
✎
08:20
|
+(17) Зачем нужна была схема из (2) я так и не понял
|
|||
19
Альбатрос
04.10.12
✎
08:21
|
Моя задача: Выбрать контрагентов, у которых были/не были продажи за какой-то период + по конкретной номенклатуре
|
|||
20
Альбатрос
04.10.12
✎
08:22
|
что означает сия строчка: ДАТАВРЕМЯ(1, 1, 1) КАК ПериодСделок?
|
|||
21
Живой Ископаемый
04.10.12
✎
08:26
|
2(19) А что такое "были продажи"? То есть оборот по РН (внимание на название регистра) ПЛАНЫПРОДАЖ?
|
|||
22
Живой Ископаемый
04.10.12
✎
08:28
|
Короче, гна твой вопрос ответит запрос типа:
ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, Продажи.Период КАК Период, Продажи.Контрагент КАК Контрагент ИЗ РегистрНакопления.Продажи.Обороты(Задать Условие по периоду и конкретной номенклатуре здесь, в параметрах виртуальной таблицы) КАК Продажи Он вернет контрагентов у которых были продажи. По все остальные которые есть в справочнике Контрагенты, продаж не было |
|||
23
Альбатрос
04.10.12
✎
09:19
|
(22) Это да, но как это прекрутить к СКЛ с запросом из (17)? Причем период, как я понял должен определяться через "ДАТАВРЕМЯ(1, 1, 1) КАК ПериодСделок"
|
|||
24
Живой Ископаемый
04.10.12
✎
09:43
|
2(23) Тогда сформулируй задачу полностью, а не как в (19)
|
|||
25
Альбатрос
04.10.12
✎
10:23
|
(24) Охх... В принципе, в (19) сформулировано правильно, остается добавить что продажи нужно дернуть из регистра продажи, а не планы продаж...Просто тут нужно видеть всю картину целиком, и настройки СКД, и отборы, и модуль отчета, а не только запрос. Вообщем, спасибо за отклики и помощь. Попытаюсь сам раскопать как-нибудь.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |