К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

1С 8.1 Помогите привести запрос в человеческий вид

Гость
0 - 16.12.2013 - 17:38
ВЫБРАТЬ Различные
ИнформационныеКарты.Ссылка,
ИнформационныеКарты.Представление,
ИнформационныеКарты.ВладелецКарты.Ссылка,
ИнформационныеКарты.ВладелецКарты.Представление,
ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта,
ПРЕДСТАВЛЕНИЕ(ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта),
СУММА(ПродажиПоДисконтнымКартамОбороты.СуммаОборот) КАК СуммаОборот
ИЗ
РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты КАК ПродажиПоДисконтнымКартамОбороты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ИнформационныеКарты КАК ИнформационныеКарты
ПО ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта = ИнформационныеКарты.Ссылка

СГРУППИРОВАТЬ ПО
ИнформационныеКарты.Ссылка,
ИнформационныеКарты.Представление,
ИнформационныеКарты.ВладелецКарты.Ссылка,
ИнформационныеКарты.ВладелецКарты.Представление,
ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта

Вот такой запрос сделал я в консоли отчетов. Но мне кажется что до фига лишнего.
Мне надо было по регистру найти обороты всех дисконтных карт, но так чтобы Владелец карты был не пустой (Владелец карты это и реквизит карты и измерения регистра) а потом найти количество документов продажи по каждой карте и последний документ продажи по каждой карте



Гость
1 - 16.12.2013 - 18:20
Ну разве что, выкинуть левое соединение и прописать все через точку в селект листе, что монопенисуально будет, только текст запроса короче будет.
Гость
2 - 16.12.2013 - 18:20
+ выкинуть Различные из текста запроса.
Гость
3 - 16.12.2013 - 19:00
+ выкинуть группировку
Гость
4 - 16.12.2013 - 19:08
Да просто выкинуть весь запрос и переписать на 7-ку :(
Спасибо, вот только мне казалось что надо к Информационные Карты Левое Соединение регистр. Вот Левое соединение в 7-ке аналог имеет?
Гость
5 - 16.12.2013 - 19:40
ВЫБРАТЬ
ИнформационныеКарты.Ссылка,
ИнформационныеКарты.Ссылка.Представление,
ИнформационныеКарты.Ссылка.ВладелецКарты,
ИнформационныеКарты.Ссылка.ВладелецКарты.Представление,
ПродажиПоДисконтнымКартамОбороты.Ссылка.ДисконтнаяКарта,
ПРЕДСТАВЛЕНИЕ(ПродажиПоДисконтнымКартамОбороты.Ссылка.ДисконтнаяКарта),
СУММА(ПродажиПоДисконтнымКартамОбороты.СуммаОборот ) КАК СуммаОборот
ИЗ
РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(,, ИнформационныеКарты.Ссылка.ВладелецКарты = Значение(Справочник.ХХХ.ПустаяСсылка)) КАК ПродажиПоДисконтнымКартамОбороты

как-то так
Гость
6 - 16.12.2013 - 21:29
Спасибо всем откликнувшимся. я понимаю так, что как и в 7-ном запросе, в 8-ном запросе есть поля которые в группировках не участвуют и есть которые участвуют. и есть какие-то варианты выгрузки в ТЗ, в которых негруппировочные поял могут использоваться а могут и не использоваться
Гость
7 - 16.12.2013 - 21:59
6-Путевый лист > Нет. Забудь хоккейные запросы, у них нет ничего общего с SQL-подобным языком 8ки.
Гость
8 - 17.12.2013 - 09:47
Перестроил запрос с помощью Добрых людей, самолично вставил конструкцию
|КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор) Когда (ПродажиПоДисконтнымКартамОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
а она работать не хочет. Понятно что ошибка, но то ли в синтаксисе запроса то ли в логике. Подскажите пожалуйста
Гость
9 - 17.12.2013 - 09:48
Не работает когда добавил
Когда (ПродажиПоДисконтнымКартамОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
Гость
10 - 17.12.2013 - 09:56
в обороты(,,регистратор) - добавь
Гость
11 - 17.12.2013 - 10:05
(10) Есть такое. Просто Конструкция "Когда" не верная видимо, там же надо вроде как "Выбор Когда" как-то так
Гость
12 - 17.12.2013 - 10:44
ВЫБРАТЬ
ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор) КАК КоличествоДокументов,
СУММА( ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
тогда
ПродажиПоДисконтнымКартамОбороты.СуммаОборот
иначе 0 конец ) КАК СуммаОборот
ИЗ
РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(, , Регистратор,
ВладелецДисконтнойКарты <> NULL ) КАК ПродажиПоДисконтнымКартамОбороты

СГРУППИРОВАТЬ ПО
ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта
Гость
13 - 17.12.2013 - 10:45
последний документ вторым запросом нуна искать
Гость
14 - 17.12.2013 - 11:04
(12,13) Мне надо посчитать именно количество документов-регистраторов одного типа. А вот сумма мне нужна по всем регистраторам.
То есть Выбор Когда Тогда Иначе Конец мне как раз нужен для расчета именно количества документов
Гость
15 - 17.12.2013 - 12:40
так и подыми Количество ( ВЫБОР ... )
Гость
16 - 17.12.2013 - 12:50
(15) Так а что писать вместо ПродажиПоДисконтнымКартамОбороты.СуммаОборот??? Ведь это ж количество документов а не суммы. Вот здесь я и затупил
Гость
17 - 17.12.2013 - 13:07
(15) По логике должно быть так:
Гость
18 - 17.12.2013 - 13:14
(15) Количество(Различные ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
тогда 1 иначе 0 конец ) КАК КоличествоДокументов

Хотел так - но дало везде 1 значит после Тогда что должно быть для Количества???
Гость
19 - 17.12.2013 - 13:28
(15) Jimbo - Если убрать Различные тогда дает все количество по всем типам регистратора а не по одному как мне нужно
Гость
20 - 17.12.2013 - 13:44
КОЛИЧЕСТВО( ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
тогда
РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор
иначе 0 конец ) КАК КоличествоДокументов,

СУММА( ПродажиПоДисконтнымКартамОбороты.СуммаОборот ) КАК СуммаОборот
Гость
21 - 17.12.2013 - 13:45
посмотри видео от Чистова Павла по запросам
Гость
22 - 17.12.2013 - 14:02
(21) ДА боюсь еще рано мне смотреть видео, я еще из младенческого возраста никак не выйду
Гость
23 - 17.12.2013 - 14:07
(21) Jimbo. Ругается гад
{Форма.Форма(42)**: Ошибка при вызове метода контекста (Выполнить): **(15, 7)**: Синтаксическая ошибка "РАЗЛИЧНЫЕ"
тогда <<?>>РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор иначе 0 конец ) КАК КоличествоДокументов,
РезультатЗапроса = Запрос.Выполнить();
по причине:
**(15, 7)**: Синтаксическая ошибка "РАЗЛИЧНЫЕ"
тогда <<?>>РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор иначе 0 конец ) КАК КоличествоДокументов,
Гость
24 - 17.12.2013 - 14:29
ВОТ ТАК ВЫГЛЯДИТ ТЕПЕРЬ ЗАПРОС
Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| Подзапрос.ДисконтнаяКарта,
| Подзапрос.ВладелецДисконтнойКарты,
| Подзапрос.КоличествоДокументов,
| Подзапрос.ДатаПоследнейПродажи,
| Подзапрос.Сумма,
| Подзапрос.ДисконтнаяКарта.Представление,
| Подзапрос.ВладелецДисконтнойКарты.Представление,
| Подзапрос.ДисконтнаяКарта.ВладелецКарты.ДатаРождения КАК ДатаРождения
|ИЗ
| (ВЫБРАТЬ
| ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта КАК ДисконтнаяКарта,
| ПродажиПоДисконтнымКартамОбороты.ВладелецДисконтнойКарты КАК ВладелецДисконтнойКарты,
//| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор) КАК КоличествоДокументов,
|Количество (РАЗЛИЧНЫЕ ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
|тогда
|ПродажиПоДисконтнымКартамОбороты.Регистратор иначе 0 конец ) КАК КоличествоДокументов,
| СУММА(ПродажиПоДисконтнымКартамОбороты.СуммаОборот) КАК Сумма,
| МАКСИМУМ(ПродажиПоДисконтнымКартамОбороты.Период) КАК ДатаПоследнейПродажи
| ИЗ
| РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(,,Регистратор,ВладелецДисконтнойКарты<>Значение(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ПродажиПоДисконтнымКартамОбороты
| ГДЕ
//| ПродажиПоДисконтнымКартамОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах
| ДисконтнаяКарта.ВидДисконтнойКарты В ИЕРАРХИИ(&ВидДК)
| СГРУППИРОВАТЬ ПО
| ПродажиПоДисконтнымКартамОбороты.ВладелецДисконтнойКарты,
| ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта) КАК Подзапрос
| ГДЕ Месяц(ВладелецДисконтнойКарты.ДатаРождения)>=1
|УПОРЯДОЧИТЬ ПО
| Месяц(ВладелецДисконтнойКарты.ДатаРождения),
| ВладелецДисконтнойКарты.Наименование
|АВТОУПОРЯДОЧИВАНИЕ"

;

Запрос.УстановитьПараметр("ВидДК",ВидДК);

РезультатЗапроса = Запрос.Выполнить();
Гость
25 - 17.12.2013 - 14:59
(21) Jimbo - вот так работает
|Сумма(ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
|тогда
|1 иначе 0 конец ) КАК КоличествоДокументов
Гость
26 - 19.12.2013 - 18:03
7-Reaper
[b]Путевый лист > Нет. Забудь хоккейные запросы, у них нет ничего общего с SQL-подобным языком 8ки.[/b]
Вообще-то я только сейчас понял что левое и правое соединение, внутреннее соединение, полное соединение я много раз делал в 1С 7.7 Например - есть регистр партий и остатков. В обоих есть несоответствие для номенклатуры (застарелые ошибки). Я их и вылавливаю полным соединением. Беру один регистр и сравниваю с другим а потом наоборот. Так что понимание 7-ком 8-[filolog][filolog]ных[/filolog][/filolog] запросов начинается тогда когда он может провести ассоциации 8-[filolog][filolog]ных[/filolog][/filolog] запросов с программированием на 7-ке. Можете меня поздравить. Сегодня я из яслей перешел в детский сад, в младшую группа :(((
Гость
27 - 19.12.2013 - 18:48
26-Путевый лист >когда семерочник начинает строить ассоциации между клюшками и снеговиком- начинается говнокод.
Гость
28 - 19.12.2013 - 19:07
27 -Reaper Да дело не в ассоциациях а в понимании того как это все формируется и почему. Я пока не могу сделать все так как мне нужно, но по крайней мере я начал понимать почему те варианты что я пробую - ошибочны
Гость
29 - 19.12.2013 - 22:07
28-Путевый лист > Ты лучше освежи в памяти бинарные операции над множествами - это полезнее.
Гость
30 - 19.12.2013 - 22:18
29-Reaper Подскажи пожалуйста
| Левое Соединение
| (ВЫБРАТЬ
| ПродажиПоДисконтнымКартам.ДисконтнаяКарта,
//| ПродажиПоДисконтнымКартам.Номенклатура Как ПродНоменклатура,
| МАКСИМУМ(ПродажиПоДисконтнымКартам.Период) КАК ДатаПоследнейПродажи
| ИЗ
| РегистрНакопления.ПродажиПоДисконтнымКартам КАК ПродажиПоДисконтнымКартам
//| ГДЕ
//| ПродажиПоДисконтнымКартам.ВладелецДисконтнойКарты <> Неопределено
| СГРУППИРОВАТЬ ПО ПродажиПоДисконтнымКартам.ДисконтнаяКарта)
//| ,ПродажиПоДисконтнымКартам.ВладелецДисконтнойКарты)
| КАК Подзапрос1
| ПО ИнформационныеКарты.Ссылка = Подзапрос1.ДисконтнаяКарта
-----------------------------------------------------
Мне нужно вставить в этот кусок запроса такую вещь:
если проданная номенклатура (измерение регистра накопления ПродажиПоДисконтнымКартам) по дисконтной карте подобно параметру запроса, то 1 иначе 0. Я потом хочу в ГДЕ основной части запрос сделать проверку на 1 чтобы сократить число записей в результате запроса
Гость
31 - 19.12.2013 - 22:22
+29-Reaper
Точнее так: Номенклатура.Наименование ПОДОБНО &СтрокаПоиска


К списку вопросов






Copyright ©, Все права защищены