Имя: Пароль:
1C
1С v8
v8: Объединить запрос
0 zfobo
 
29.01.12
19:08
Как можно объеденить данные 2 запроса, что бы по Л/С он находил начисления услуг по Л/С и по приборам учета.
Вот Запросы:

       Запрос=Новый Запрос;
       Запрос.Текст="ВЫБРАТЬ
       |    КВП_НачислениеУслуг.Ссылка,
       |    КВП_НачислениеУслуг.Услуги.(
       |        Ссылка,
       |        НомерСтроки,
       |        Услуга,
       |        ЛицевыеСчета,
       |        Количество,
       |        Тариф,
       |        Начислено,
       |        СоставнаяУслуга,
       |        ДнейНачислено,
       |        СуммаНачислений,
       |        Договор
       |    ),
       |    КВП_НачислениеУслуг.ПометкаУдаления
       |ИЗ
       |    Документ.КВП_НачислениеУслуг КАК КВП_НачислениеУслуг
       |ГДЕ
       |    КВП_НачислениеУслуг.Услуги.ЛицевыеСчета.Ссылка = &Ссыл";
       Запрос.УстановитьПараметр("Ссыл", Лицевой);
       ЗапросСч=Новый Запрос;
       ЗапросСЧ.Текст="ВЫБРАТЬ
                    |    КВП_НачислениеУслуг.Ссылка,
                    |    КВП_НачислениеУслуг.ПометкаУдаления,
                    |    КВП_НачислениеУслуг.УслугиПоПоказаниямПУ.(
                    |        Ссылка,
                    |        НомерСтроки,
                    |        ЛицевойСчет,
                    |        ПоказаниеСчЛС,
                    |        ВидТарифа,
                    |        Тариф,
                    |        Сумма,
                    |        ПоказаниеСчПомещение,
                    |        ПоказаниеСчПодъезд,
                    |        ПоказаниеСчЗдание,
                    |        Начислено,
                    |        КоличествоДопРаспределения,
                    |        ДопРаспределение,
                    |        Услуга
                    |    )
                    |ИЗ
                    |    Документ.КВП_НачислениеУслуг КАК КВП_НачислениеУслуг
                    |ГДЕ
                    |    КВП_НачислениеУслуг.УслугиПоПоказаниямПУ.ЛицевойСчет.Ссылка = &СсылкаЛС";
       ЗапросСч.УстановитьПараметр("СсылкаЛС", Лицевой);
       Резу=Запрос.Выполнить().Выгрузить();
       РезуСЧ=ЗапросСч.Выполнить().Выгрузить();
1 zbv
 
29.01.12
19:17
ничего не понял...
Но что-то подсказывает, что тебе надо строить запросы к табличной части
2 Bww_
 
29.01.12
19:18
ОбъедЕнить не возможно. Можно объединить.
3 zfobo
 
29.01.12
19:20
А как можно объеденить?
В первом я обращяюсь к табличной части услуги
А во втором к услугам по показанием пу
4 zfobo
 
29.01.12
19:22
*объединить
5 Кокос
 
29.01.12
19:36
обращяться невозможно. можно обращаться.
6 Кокос
 
29.01.12
19:37
по показаниЯм.
7 zfobo
 
29.01.12
19:38
А есть че по делу?
8 Кокос
 
29.01.12
19:40
цель не понятна. по вопросу имхо вообще не возможно определить что хочет получить ТС.
9 zfobo
 
29.01.12
19:45
Документ начисление услуг.
В нем есть начисления на лицевые счета, и есть документы начисления по показаниям приборов учета.
Нужно найти все начисления на определенный Лицевой счет, по всем документам.
В первом запросе он ищет по начислениям на Лицевые счета
а во втором по начислениям по показаниям Приборов учета.
Вот и интересно как можно эти запросы объеденить что бы в одном результате запроса были ссылки на все найденные документы.
10 Кокос
 
29.01.12
19:47
(9) смотри (1). делай запросы сразу к табличной части. сделай так чтобы у обоих запросов были абсолютно одинаковые поля в одинаковых местах по порядку. если не совпадают имена сделай чтобы они совпадали при помощи "КАК" а потом через "ОБЪЕДНИТЬ ВСЕ" объедини их
11 Кокос
 
29.01.12
19:49
+ если надо поле которое есть в первой таблице но нет во второй то во второй на том месте где должно быть поле как в первой пиши " 0 КАК НужноеПоле"
НужноеПоле это для примера. подставь нужное имя
12 zfobo
 
29.01.12
19:50
Хм, интересно, понял, спасибо
13 Кокос
 
29.01.12
19:55
например:

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

примерно так. только не отлаживал
14 Кокос
 
29.01.12
19:56
есть там пара ошибок. сам найдешь
15 zfobo
 
29.01.12
20:23
Хорошо спасибо
16 Кокос
 
29.01.12
20:38
3 ошибки. вверху есть поле Услуга которого нет во втором. Во втором недобавлено в конце ПУ где лицевой счет ну и условия в "ГДЕ" в обоих случаях неправильно указаны :) просто не переделывал. плюс не понятно у тебя в первом случае лицевые счета список а во втором элемент. в принципе можно это поле вообще не указывать ты по нему отбор делаешь поэтому все равно
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший