Отчет по взаиморасчетам по заказам #547753


#0 by Конфигуратор1с
Нужно сделать в типовой утп форму где выводится заказ, сумма заказа, сумма оплаты и сумма отгрузки. В регистре заказы поставщикам отражаются остатки по заказам, по которым  еще нет отгрузки. Во взаиморасчетах с контрагентами отражаются все движения по заказам. Если я правильно понимаю, мне нужно выбрать все заказы, по которым есть остаток в заказах поставщиков, и регистрах взаиморасчетах и соединить. Я еще  плохо ориентируюсь в 8чных запросах, но как я понимаю, мне нужно объединение а не соединение?
#1 by vicof
соединение
#2 by Конфигуратор1с
но если я соединю таблицы, я получу полные записи только по одной таблице, а по второй только те записи, что есть в первой
#3 by vicof
смотря как соединишь. Есть левое, есть правое, есть внутреннее, есть полное.
#4 by vicof
держи
#5 by Конфигуратор1с
спасибо
#6 by Конфигуратор1с
если я правильно понимаю, то мне нужно сначала сделать запрос по таблицам остатки, что бы отобрать нужные заказы, поместить в таблицу и соединить с таблицами оборотов?
#7 by Конфигуратор1с
Не получается. У меня получается на дату в регистре заказы заказ закрыт, а в регистре взаиморасчеты по заказу есть остаток. При соединении он не видит закрытые заказы(((
#8 by Конфигуратор1с
Какую мне таблицу взять для получения заказов с нулевым остатком?
#9 by vicof
покажи текст запроса
#10 by Конфигуратор1с
#11 by Конфигуратор1с
это уже четвертый вариант(((
#12 by Конфигуратор1с
я так понимаю в виртуальной таблице остатков и оборотов по регистру хранятся записи только с ненулевым остатком?
#13 by Axel2009
+ по которым были обороты в регистре заказы поставщикам.
#14 by Конфигуратор1с
а если мне нужно получить на дату, то указав дату начала и дату конца текущей датой, я не получу обороты
#15 by Конфигуратор1с
Вроде получилось вот так ВЫБРАТЬ                   |    ВложенныйЗапрос.Заказ,                   |    ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход,
#16 by Конфигуратор1с
Только вопрос к быстродействию, когда у меня будет несколько тысяч заказов при неуказанной дате начала в параметрах таблиц не будет он медленно тормозить?
#17 by Конфигуратор1с
#18 by Конфигуратор1с
+Пришлось немного дописать, что бы при объединении не дублировались заказы
#19 by Axel2009
ну если все работает, то можно и так записать
#20 by Конфигуратор1с
А в чем принципиально отличие ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ Все?
#21 by Axel2009
если ВСЕ не писать, то он делает ровно то, что описано во внешних скобках
#22 by Конфигуратор1с
прочитал ЖКК - оказывается там много интересного))) То есть если я не пишу "все", то мне не нужно группировать?
#23 by Axel2009
типа того
#24 by Конфигуратор1с
спасибо огромное
#25 by Конфигуратор1с
а как бы мне теперь отсюда выбрать дату движения по взаиморасчетам?
#26 by Axel2009
взять данные напрямую из регистра взаиморасчеты.. выбрать заказпоставщику, максимум(период) из регистрнакопления.заказыпоставщикам где период < &ДатаОтчета
#27 by Конфигуратор1с
в смысле брать не виртуальную таблицу "обороты", а реальную таблицу регистра?
#28 by Axel2009
да. так будет быстрее.
#29 by Конфигуратор1с
спасибо - сейчас попробую
#30 by Конфигуратор1с
Есть еще вопрос, когда я выбираю через соединение с реальной таблицей значение по условию, то записи не удовлетворяющие условия запроса не попадают в запрос. Как мне правильно наложить на реальную таблицу регистра условие?
#31 by Конфигуратор1с
#32 by Конфигуратор1с
может дату оплаты выбирать таки из регистра оборотов?
#33 by Конфигуратор1с
В виртуальной тоже нет возможности наложить условие (((
#34 by Конфигуратор1с
Ладно, поговорил сам с собой, пойду пакетные запросы открывать для себя.
#35 by Axel2009
подзапросом надо получить максимальную дату оплаты по каждому из документов. и этот подзапрос присоединить к твоему запросу
#36 by Конфигуратор1с
Подзапрос - это вложенный запрос?
#37 by Axel2009
да.
#38 by Конфигуратор1с
так а как его соединить?
#39 by Конфигуратор1с
если честно, не совсем понимаю(((
#40 by Axel2009
для начала покажи запрос, который получает последнюю дату оплаты по каждому заказу
#41 by Конфигуратор1с
#42 by Конфигуратор1с
точнее я переделал с вт
#43 by Конфигуратор1с
Я кажется понял, мне нужно сделать внутренний запрос, по регистру взаиморасчеты и соединить его в вложенном запросе с временной таблицей, а потом уже результат соединять?
#44 by Axel2009
нужно сначала получить отдельный запрос по регистру взаиморасчеты (не виртуальной), где получить максимальные даты по каждому заказу
#45 by Axel2009
потом его пытаться присоединить к конечному запросу
#46 by Конфигуратор1с
а что временную таблицу нельзя использовать во вложенном запросе?
#47 by Axel2009
все можно.
#48 by Конфигуратор1с
вообщем я сделал так
#49 by Конфигуратор1с
вроде все вытягивает, но сомнения гложут по быстродействию
#50 by Axel2009
и скока выполняется? ЗЫ совершенно не обязательно каждую временную таблицу создавать отдельным вызовом Выполнить.
#51 by Axel2009
+ выбор макс даты можно провернуть через ВЫБОР КОГДА, и ограничиться одним соединением..
#52 by Конфигуратор1с
У меня задача просто отобрать последнюю дату  оплаты и дату отгрузки.
#53 by Конфигуратор1с
Спасибо. Буду знать. Это мой первый пакетный запрос. Я его с книжкой в руках делал, как в школе)))
#54 by Конфигуратор1с
+53 Спасибо Вам большое
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С