![]() |
1С 8.1 Помогите привести запрос в человеческий вид ВЫБРАТЬ Различные ИнформационныеКарты.Ссылка, ИнформационныеКарты.Представление, ИнформационныеКарты.ВладелецКарты.Ссылка, ИнформационныеКарты.ВладелецКарты.Представление, ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта, ПРЕДСТАВЛЕНИЕ(ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта), СУММА(ПродажиПоДисконтнымКартамОбороты.СуммаОборот) КАК СуммаОборот ИЗ РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты КАК ПродажиПоДисконтнымКартамОбороты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ИнформационныеКарты КАК ИнформационныеКарты ПО ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта = ИнформационныеКарты.Ссылка СГРУППИРОВАТЬ ПО ИнформационныеКарты.Ссылка, ИнформационныеКарты.Представление, ИнформационныеКарты.ВладелецКарты.Ссылка, ИнформационныеКарты.ВладелецКарты.Представление, ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта Вот такой запрос сделал я в консоли отчетов. Но мне кажется что до фига лишнего. Мне надо было по регистру найти обороты всех дисконтных карт, но так чтобы Владелец карты был не пустой (Владелец карты это и реквизит карты и измерения регистра) а потом найти количество документов продажи по каждой карте и последний документ продажи по каждой карте |
Ну разве что, выкинуть левое соединение и прописать все через точку в селект листе, что монопенисуально будет, только текст запроса короче будет. |
+ выкинуть Различные из текста запроса. |
+ выкинуть группировку |
Да просто выкинуть весь запрос и переписать на 7-ку :( Спасибо, вот только мне казалось что надо к Информационные Карты Левое Соединение регистр. Вот Левое соединение в 7-ке аналог имеет? |
ВЫБРАТЬ ИнформационныеКарты.Ссылка, ИнформационныеКарты.Ссылка.Представление, ИнформационныеКарты.Ссылка.ВладелецКарты, ИнформационныеКарты.Ссылка.ВладелецКарты.Представление, ПродажиПоДисконтнымКартамОбороты.Ссылка.ДисконтнаяКарта, ПРЕДСТАВЛЕНИЕ(ПродажиПоДисконтнымКартамОбороты.Ссылка.ДисконтнаяКарта), СУММА(ПродажиПоДисконтнымКартамОбороты.СуммаОборот ) КАК СуммаОборот ИЗ РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(,, ИнформационныеКарты.Ссылка.ВладелецКарты = Значение(Справочник.ХХХ.ПустаяСсылка)) КАК ПродажиПоДисконтнымКартамОбороты как-то так |
Спасибо всем откликнувшимся. я понимаю так, что как и в 7-ном запросе, в 8-ном запросе есть поля которые в группировках не участвуют и есть которые участвуют. и есть какие-то варианты выгрузки в ТЗ, в которых негруппировочные поял могут использоваться а могут и не использоваться |
6-Путевый лист > Нет. Забудь хоккейные запросы, у них нет ничего общего с SQL-подобным языком 8ки. |
Перестроил запрос с помощью Добрых людей, самолично вставил конструкцию |КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор) Когда (ПродажиПоДисконтнымКартамОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) а она работать не хочет. Понятно что ошибка, но то ли в синтаксисе запроса то ли в логике. Подскажите пожалуйста |
Не работает когда добавил Когда (ПродажиПоДисконтнымКартамОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) |
в обороты(,,регистратор) - добавь |
(10) Есть такое. Просто Конструкция "Когда" не верная видимо, там же надо вроде как "Выбор Когда" как-то так |
ВЫБРАТЬ ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор) КАК КоличествоДокументов, СУММА( ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) тогда ПродажиПоДисконтнымКартамОбороты.СуммаОборот иначе 0 конец ) КАК СуммаОборот ИЗ РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(, , Регистратор, ВладелецДисконтнойКарты <> NULL ) КАК ПродажиПоДисконтнымКартамОбороты СГРУППИРОВАТЬ ПО ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта |
последний документ вторым запросом нуна искать |
(12,13) Мне надо посчитать именно количество документов-регистраторов одного типа. А вот сумма мне нужна по всем регистраторам. То есть Выбор Когда Тогда Иначе Конец мне как раз нужен для расчета именно количества документов |
так и подыми Количество ( ВЫБОР ... ) |
(15) Так а что писать вместо ПродажиПоДисконтнымКартамОбороты.СуммаОборот??? Ведь это ж количество документов а не суммы. Вот здесь я и затупил |
(15) По логике должно быть так: |
(15) Количество(Различные ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) тогда 1 иначе 0 конец ) КАК КоличествоДокументов Хотел так - но дало везде 1 значит после Тогда что должно быть для Количества??? |
(15) Jimbo - Если убрать Различные тогда дает все количество по всем типам регистратора а не по одному как мне нужно |
КОЛИЧЕСТВО( ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) тогда РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор иначе 0 конец ) КАК КоличествоДокументов, СУММА( ПродажиПоДисконтнымКартамОбороты.СуммаОборот ) КАК СуммаОборот |
посмотри видео от Чистова Павла по запросам |
(21) ДА боюсь еще рано мне смотреть видео, я еще из младенческого возраста никак не выйду |
(21) Jimbo. Ругается гад {Форма.Форма(42)**: Ошибка при вызове метода контекста (Выполнить): **(15, 7)**: Синтаксическая ошибка "РАЗЛИЧНЫЕ" тогда <<?>>РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор иначе 0 конец ) КАК КоличествоДокументов, РезультатЗапроса = Запрос.Выполнить(); по причине: **(15, 7)**: Синтаксическая ошибка "РАЗЛИЧНЫЕ" тогда <<?>>РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор иначе 0 конец ) КАК КоличествоДокументов, |
ВОТ ТАК ВЫГЛЯДИТ ТЕПЕРЬ ЗАПРОС Запрос=Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | Подзапрос.ДисконтнаяКарта, | Подзапрос.ВладелецДисконтнойКарты, | Подзапрос.КоличествоДокументов, | Подзапрос.ДатаПоследнейПродажи, | Подзапрос.Сумма, | Подзапрос.ДисконтнаяКарта.Представление, | Подзапрос.ВладелецДисконтнойКарты.Представление, | Подзапрос.ДисконтнаяКарта.ВладелецКарты.ДатаРождения КАК ДатаРождения |ИЗ | (ВЫБРАТЬ | ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта КАК ДисконтнаяКарта, | ПродажиПоДисконтнымКартамОбороты.ВладелецДисконтнойКарты КАК ВладелецДисконтнойКарты, //| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиПоДисконтнымКартамОбороты.Регистратор) КАК КоличествоДокументов, |Количество (РАЗЛИЧНЫЕ ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) |тогда |ПродажиПоДисконтнымКартамОбороты.Регистратор иначе 0 конец ) КАК КоличествоДокументов, | СУММА(ПродажиПоДисконтнымКартамОбороты.СуммаОборот) КАК Сумма, | МАКСИМУМ(ПродажиПоДисконтнымКартамОбороты.Период) КАК ДатаПоследнейПродажи | ИЗ | РегистрНакопления.ПродажиПоДисконтнымКартам.Обороты(,,Регистратор,ВладелецДисконтнойКарты<>Значение(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ПродажиПоДисконтнымКартамОбороты | ГДЕ //| ПродажиПоДисконтнымКартамОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах | ДисконтнаяКарта.ВидДисконтнойКарты В ИЕРАРХИИ(&ВидДК) | СГРУППИРОВАТЬ ПО | ПродажиПоДисконтнымКартамОбороты.ВладелецДисконтнойКарты, | ПродажиПоДисконтнымКартамОбороты.ДисконтнаяКарта) КАК Подзапрос | ГДЕ Месяц(ВладелецДисконтнойКарты.ДатаРождения)>=1 |УПОРЯДОЧИТЬ ПО | Месяц(ВладелецДисконтнойКарты.ДатаРождения), | ВладелецДисконтнойКарты.Наименование |АВТОУПОРЯДОЧИВАНИЕ" ; Запрос.УстановитьПараметр("ВидДК",ВидДК); РезультатЗапроса = Запрос.Выполнить(); |
(21) Jimbo - вот так работает |Сумма(ВЫБОР КОГДА (Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах) |тогда |1 иначе 0 конец ) КАК КоличествоДокументов |
7-Reaper [b]Путевый лист > Нет. Забудь хоккейные запросы, у них нет ничего общего с SQL-подобным языком 8ки.[/b] Вообще-то я только сейчас понял что левое и правое соединение, внутреннее соединение, полное соединение я много раз делал в 1С 7.7 Например - есть регистр партий и остатков. В обоих есть несоответствие для номенклатуры (застарелые ошибки). Я их и вылавливаю полным соединением. Беру один регистр и сравниваю с другим а потом наоборот. Так что понимание 7-ком 8-[filolog][filolog]ных[/filolog][/filolog] запросов начинается тогда когда он может провести ассоциации 8-[filolog][filolog]ных[/filolog][/filolog] запросов с программированием на 7-ке. Можете меня поздравить. Сегодня я из яслей перешел в детский сад, в младшую группа :((( |
26-Путевый лист >когда семерочник начинает строить ассоциации между клюшками и снеговиком- начинается говнокод. |
27 -Reaper Да дело не в ассоциациях а в понимании того как это все формируется и почему. Я пока не могу сделать все так как мне нужно, но по крайней мере я начал понимать почему те варианты что я пробую - ошибочны |
28-Путевый лист > Ты лучше освежи в памяти бинарные операции над множествами - это полезнее. |
29-Reaper Подскажи пожалуйста | Левое Соединение | (ВЫБРАТЬ | ПродажиПоДисконтнымКартам.ДисконтнаяКарта, //| ПродажиПоДисконтнымКартам.Номенклатура Как ПродНоменклатура, | МАКСИМУМ(ПродажиПоДисконтнымКартам.Период) КАК ДатаПоследнейПродажи | ИЗ | РегистрНакопления.ПродажиПоДисконтнымКартам КАК ПродажиПоДисконтнымКартам //| ГДЕ //| ПродажиПоДисконтнымКартам.ВладелецДисконтнойКарты <> Неопределено | СГРУППИРОВАТЬ ПО ПродажиПоДисконтнымКартам.ДисконтнаяКарта) //| ,ПродажиПоДисконтнымКартам.ВладелецДисконтнойКарты) | КАК Подзапрос1 | ПО ИнформационныеКарты.Ссылка = Подзапрос1.ДисконтнаяКарта ----------------------------------------------------- Мне нужно вставить в этот кусок запроса такую вещь: если проданная номенклатура (измерение регистра накопления ПродажиПоДисконтнымКартам) по дисконтной карте подобно параметру запроса, то 1 иначе 0. Я потом хочу в ГДЕ основной части запрос сделать проверку на 1 чтобы сократить число записей в результате запроса |
+29-Reaper Точнее так: Номенклатура.Наименование ПОДОБНО &СтрокаПоиска |
| Текущее время: 16:44. Часовой пояс GMT +3. |