Имя: Пароль:
1C
1С v8
Как в одном запросе найти подчиненные документы
0 micha
 
19.08.11
11:50
Задача: Необходимо вывести оборот по реализации с детализацией, и если есть возврат по реализации сминусовать его из реализации.
Простой вариант это оброщаться к функции ПолучитьПодчиненныйДок, но это вариант кривой.

Функция ПолучитьПодчиненныйДок
   //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    СвязанныеДокументы.Ссылка.Ссылка,
       |    СвязанныеДокументы.Ссылка.СуммаДокумента
       |ИЗ
       |    КритерийОтбора.СвязанныеДокументы(&Возврат) КАК СвязанныеДокументы
       |ГДЕ
       |    СвязанныеДокументы.Ссылка.Ссылка ССЫЛКА Документ.ВозвратТоваровОтПокупателя";

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

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       // Вставить обработку выборки ВыборкаДетальныеЗаписи
   КонецЦикла;

   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   
КонецФункции    


Процедура КнопкаВыполнитьНажатие(Кнопка)
   //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

   Запрос.УстановитьПараметр("Дата1", ДатаНач);
   Запрос.УстановитьПараметр("Дата2", ДатаКон);
   Запрос.УстановитьПараметр("Контрагент", Контрагент);

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       // Вставить обработку выборки ВыборкаДетальныеЗаписи
   КонецЦикла;

   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   
КонецПроцедуры

Вопрос: Как совместить эти 2 запроса, что бы в одном можно было вывести реализацию за минус возврата.
1 zak555
 
19.08.11
11:52
зачем делать привязку к подчиненным документам ?
2 micha
 
19.08.11
11:53
затем что поле документоснование отсутствует или не заполнено
3 PVV65
 
19.08.11
11:54
(0) Что за конфа?
4 micha
 
19.08.11
11:54
основная проблема с которой я не сталкивался мне во вложеный запрос &Возврат как то надо передать ссылку на документ реализацию и получить сумму возврата если таковой имееться
5 micha
 
19.08.11
11:54
конфа 8.2 УТ 10.3, вся переписанная
6 PVV65
 
19.08.11
11:56
А на регистре ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов не учитываются возвраты?
7 micha
 
19.08.11
11:58
Они учитываються, новозвраты могут через месяц через пол года и так далее. С аналитикой не надо париться, просто есть задача связать 2 таблицы, во вторую передать ссылку на реализацию и вернуть сумму возврата.
8 micha
 
19.08.11
11:59
я хочу это сделать красиво 1 запросом, полюбому это возможно.
9 micha
 
19.08.11
12:07
ВЫБРАТЬ
   Обороты.НомерСтроки,
   Обороты.Регистратор,
   ПРЕДСТАВЛЕНИЕ(Обороты.Регистратор),
   Обороты.РегистраторПредставление КАК РегистраторПредставление1,
   Обороты.ПериодСекунда,
   Обороты.ПериодМинута,
   Обороты.ПериодЧас,
   Обороты.ПериодДень,
   Обороты.ПериодНеделя,
   Обороты.ПериодДекада,
   Обороты.ПериодМесяц,
   Обороты.ПериодКвартал,
   Обороты.ПериодПолугодие,
   Обороты.ПериодГод,
   Обороты.ДоговорКонтрагента,
   ПРЕДСТАВЛЕНИЕ(Обороты.ДоговорКонтрагента),
   Обороты.ДоговорКонтрагентаПредставление КАК ДоговорКонтрагентаПредставление1,
   Обороты.Сделка,
   ПРЕДСТАВЛЕНИЕ(Обороты.Сделка),
   Обороты.СделкаПредставление КАК СделкаПредставление1,
   Обороты.ДокументРасчетовСКонтрагентом,
   ПРЕДСТАВЛЕНИЕ(Обороты.ДокументРасчетовСКонтрагентом),
   Обороты.ДокументРасчетовСКонтрагентомПредставление КАК ДокументРасчетовСКонтрагентомПредставление1,
   Обороты.ВидРасчетовСКонтрагентом,
   Обороты.УпрУчет,
   Обороты.Организация,
   ПРЕДСТАВЛЕНИЕ(Обороты.Организация),
   Обороты.ОрганизацияПредставление КАК ОрганизацияПредставление1,
   Обороты.Контрагент,
   ПРЕДСТАВЛЕНИЕ(Обороты.Контрагент),
   Обороты.КонтрагентПредставление КАК КонтрагентПредставление1,
   Обороты.ТорговаяТочка,
   ПРЕДСТАВЛЕНИЕ(Обороты.ТорговаяТочка),
   Обороты.ТорговаяТочкаПредставление КАК ТорговаяТочкаПредставление1,
   Обороты.ТП,
   ПРЕДСТАВЛЕНИЕ(Обороты.ТП),
   Обороты.ТППредставление КАК ТППредставление1,
   Обороты.СуммаВзаиморасчетовОборот,
   Обороты.СуммаВзаиморасчетовПриход,
   Обороты.СуммаВзаиморасчетовРасход,
   Обороты.СуммаРеглОборот,
   Обороты.СуммаРеглПриход,
   Обороты.СуммаРеглРасход,
   Возврат.Ссылка,
   ПРЕДСТАВЛЕНИЕ(Возврат.Ссылка),
   Возврат.СсылкаСуммаДокумента
ИЗ
   (ВЫБРАТЬ
       СвязанныеДокументы.Ссылка КАК Ссылка,
       СвязанныеДокументы.Ссылка.СуммаДокумента КАК СсылкаСуммаДокумента
   ИЗ
       КритерийОтбора.СвязанныеДокументы(&Реализация) КАК СвязанныеДокументы
   ГДЕ
       СвязанныеДокументы.Ссылка.Ссылка ССЫЛКА Документ.ВозвратТоваровОтПокупателя) КАК Возврат,
   (ВЫБРАТЬ
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.НомерСтроки КАК НомерСтроки,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор КАК Регистратор,
       ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор) КАК РегистраторПредставление,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодСекунда КАК ПериодСекунда,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодМинута КАК ПериодМинута,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодЧас КАК ПериодЧас,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодДень КАК ПериодДень,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодНеделя КАК ПериодНеделя,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодДекада КАК ПериодДекада,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодМесяц КАК ПериодМесяц,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодКвартал КАК ПериодКвартал,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодПолугодие КАК ПериодПолугодие,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ПериодГод КАК ПериодГод,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
       ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДоговорКонтрагента) КАК ДоговорКонтрагентаПредставление,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Сделка КАК Сделка,
       ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Сделка) КАК СделкаПредставление,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
       ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом) КАК ДокументРасчетовСКонтрагентомПредставление,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ВидРасчетовСКонтрагентом КАК ВидРасчетовСКонтрагентом,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.УпрУчет КАК УпрУчет,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Организация КАК Организация,
       ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Организация) КАК ОрганизацияПредставление,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Контрагент КАК Контрагент,
       ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Контрагент) КАК КонтрагентПредставление,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ТорговаяТочка КАК ТорговаяТочка,
       ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ТорговаяТочка) КАК ТорговаяТочкаПредставление,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ТП КАК ТП,
       ПРЕДСТАВЛЕНИЕ(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ТП) КАК ТППредставление,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаВзаиморасчетовОборот КАК СуммаВзаиморасчетовОборот,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаВзаиморасчетовРасход КАК СуммаВзаиморасчетовРасход,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаРеглОборот КАК СуммаРеглОборот,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаРеглПриход КАК СуммаРеглПриход,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаРеглРасход КАК СуммаРеглРасход
   ИЗ
       РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(&Дата1, &Дата2, Авто, ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты) КАК Обороты

Мне нужно в таблицу Возвраты передать параметр Реализация и вернуть сумму возврата
10 zak555
 
19.08.11
12:10
(7) так в любом случае у тебя должны быть датаНачала и ДатаКонца
11 micha
 
19.08.11
12:11
(ВЫБРАТЬ
       СвязанныеДокументы.Ссылка КАК Ссылка,
       СвязанныеДокументы.Ссылка.СуммаДокумента КАК СсылкаСуммаДокумента
   ИЗ
       КритерийОтбора.СвязанныеДокументы(&Реализация) КАК СвязанныеДокументы
   ГДЕ
       СвязанныеДокументы.Ссылка.Ссылка ССЫЛКА Документ.ВозвратТоваровОтПокупателя) КАК Возврат,
В этой чаасти даты не нужны, во второй части да нужны и они будут простовляться.
12 micha
 
19.08.11
12:25
ВЫБРАТЬ
   Обороты.Регистратор,
   Обороты.ДоговорКонтрагента,
   Обороты.Сделка,
   Обороты.ДокументРасчетовСКонтрагентом,
   Обороты.ВидРасчетовСКонтрагентом,
   Обороты.Организация,
   Обороты.Контрагент,
   Обороты.ТорговаяТочка,
   Обороты.ТП,
   Обороты.СуммаВзаиморасчетовОборот,
   Обороты.СуммаВзаиморасчетовПриход,
   Обороты.СуммаВзаиморасчетовРасход,
   Обороты.СуммаРеглОборот,
   Обороты.СуммаРеглПриход,
   Обороты.СуммаРеглРасход,
   Обороты.РегистраторСсылка,
   Возврат.Ссылка КАК ВозвратСсылка,
   Возврат.СсылкаСуммаДокумента КАК СуммаВозврата
ИЗ
   (ВЫБРАТЬ
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор КАК Регистратор,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Сделка КАК Сделка,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ВидРасчетовСКонтрагентом КАК ВидРасчетовСКонтрагентом,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Организация КАК Организация,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Контрагент КАК Контрагент,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ТорговаяТочка КАК ТорговаяТочка,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.ТП КАК ТП,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаВзаиморасчетовОборот КАК СуммаВзаиморасчетовОборот,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаВзаиморасчетовРасход КАК СуммаВзаиморасчетовРасход,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаРеглОборот КАК СуммаРеглОборот,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаРеглПриход КАК СуммаРеглПриход,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.СуммаРеглРасход КАК СуммаРеглРасход,
       ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты.Регистратор.Ссылка КАК РегистраторСсылка
   ИЗ
       РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.Обороты(&Дата1, &Дата2, Авто, ) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОбороты) КАК Обороты
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           СвязанныеДокументы.Ссылка КАК Ссылка,
           СвязанныеДокументы.Ссылка.СуммаДокумента КАК СсылкаСуммаДокумента
       ИЗ
           КритерийОтбора.СвязанныеДокументы(&Реализация) КАК СвязанныеДокументы
       ГДЕ
           СвязанныеДокументы.Ссылка.Ссылка ССЫЛКА Документ.ВозвратТоваровОтПокупателя) КАК Возврат
       ПО (Обороты.РегистраторСсылка = &Реализация)

Может быть в таком виде будет понятнее