helpf.pro
Регистрация

v8: Объединения в запросе

Ermak
18.11.2015 16:45Прочитано: 2528

Подскажите пожалуйста почему выводит 0. Встала такая задача, вывести в макет данные Лицевой счет, Дата договора, Дата ТО, Долг. Есть три регистра, в которые есть эти реквизиты, между ними общий реквизит Лицевой счет, вот я ОБЪЕДИНИЛ и СГРУППИРОВАТЬ, из изначально получился такой вариант

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

Выводила данные но не группировала, выводила два одинаковых Лицевых счет, а должен был объединить. Попробовал такой вариант, выводит значение 0 , это такого не может быть

Код 1C v 8.х
     "ВЫБРАТЬ
    |   СведенияОДоговорахСрезПоследних.ЛицевойСчет КАК ЛицевойСчет
    |ПОМЕСТИТЬ ВременнаяТаблица
    |ИЗ
    |   РегистрСведений.СведенияОДоговорах.СрезПоследних КАК СведенияОДоговорахСрезПоследних
    |ГДЕ
    |   СведенияОДоговорахСрезПоследних.Услуга =Услуга
    |   И СведенияОДоговорахСрезПоследних.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |   ТехническоеОбслуживаниеСрезПоследних.ЛицевойСчет
    |ИЗ
    |   РегистрСведений.ТехническоеОбслуживание.СрезПоследних КАК ТехническоеОбслуживаниеСрезПоследних
    |ГДЕ
    |   ТехническоеОбслуживаниеСрезПоследних.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |   НачислениеКвартПлатыЛСОстатки.ЛицевойСчет
    |ИЗ
    |   РегистрНакопления.НачислениеКвартПлатыЛС.Остатки КАК НачислениеКвартПлатыЛСОстатки
    |ГДЕ
    |   НачислениеКвартПлатыЛСОстатки.Услуги =Услуга
    |   И НачислениеКвартПлатыЛСОстатки.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |   ВременнаяТаблица.ЛицевойСчет,
    |   НачислениеКвартПлатыЛСОстатки.СуммаОстаток,
    |   СведенияОДоговорахСрезПоследних.ДатаДоговора,
    |   ТехническоеОбслуживаниеСрезПоследних.ДатаТО
    |ИЗ
    |   ВременнаяТаблица КАК ВременнаяТаблица,
    |   РегистрСведений.СведенияОДоговорах.СрезПоследних КАК СведенияОДоговорахСрезПоследних,
    |   РегистрСведений.ТехническоеОбслуживание.СрезПоследних КАК ТехническоеОбслуживаниеСрезПоследних,
    |   РегистрНакопления.НачислениеКвартПлатыЛС.Остатки КАК НачислениеКвартПлатыЛСОстатки
    |ГДЕ
    |   НачислениеКвартПлатыЛСОстатки.Услуги =Услуга
    |   И СведенияОДоговорахСрезПоследних.Услуга =Услуга
    |   И НачислениеКвартПлатыЛСОстатки.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
    |   И СведенияОДоговорахСрезПоследних.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
    |   И ТехническоеОбслуживаниеСрезПоследних.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
    |   И СведенияОДоговорахСрезПоследних.Период МЕЖДУДатаНачала ИДатаКонца
    |
    |СГРУППИРОВАТЬ ПО
    |   ВременнаяТаблица.ЛицевойСчет,
    |   НачислениеКвартПлатыЛСОстатки.СуммаОстаток,
    |   СведенияОДоговорахСрезПоследних.ДатаДоговора,
    |   ТехническоеОбслуживаниеСрезПоследних.ДатаТО";
    Запрос.УстановитьПараметр("АбонентскийУчасток",АбонентскийУчасток);
    Запрос.УстановитьПараметр("Услуга",Справочники.Номенклатура.Техобслуживание);
    Запрос.УстановитьПараметр("ДатаНачала",НачПериода);
    Запрос.УстановитьПараметр("ДатаКонца",КонПериода);
Yandex
Возможно, вас также заинтересует
Реклама на портале
IBReiter
18.11.2015 17:15Ответ № 1

Конструктором открывается?

IBReiter
18.11.2015 17:25Ответ № 2

Вот это вообще ерунда какая-то

Код 1C v 8.3
 

    |ИЗ
    |   ВременнаяТаблица КАК ВременнаяТаблица,
    |   РегистрСведений.СведенияОДоговорах.СрезПоследних КАК СведенияОДоговорахСрезПоследних,
    |   РегистрСведений.ТехническоеОбслуживание.СрезПоследних КАК ТехническоеОбслуживаниеСрезПоследних,
    |   РегистрНакопления.НачислениеКвартПлатыЛС.Остатки КАК НачислениеКвартПлатыЛСОстатки


Присоединить видимо нужно

Код 1C v 8.3
 

    |ИЗ
    |   ВременнаяТаблица КАК ВременнаяТаблица
    |   Левое соединение РегистрСведений.СведенияОДоговорах.СрезПоследних КАК СведенияОДоговорахСрезПоследних ПО (поля, по которым соединяете)
    |   Левое соединение РегистрСведений.ТехническоеОбслуживание.СрезПоследних КАК ТехническоеОбслуживаниеСрезПоследних ПО (поля, по которым соединяете)
    |   Левое соединение РегистрНакопления.НачислениеКвартПлатыЛС.Остатки КАК НачислениеКвартПлатыЛСОстатки ПО (поля, по которым соединяете),


IBReiter
18.11.2015 17:26Ответ № 3

Вот это вообще убирайте

Код 1C v 8.3
 

    |ГДЕ
    |   НачислениеКвартПлатыЛСОстатки.Услуги =Услуга
    |   И СведенияОДоговорахСрезПоследних.Услуга =Услуга
    |   И НачислениеКвартПлатыЛСОстатки.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
    |   И СведенияОДоговорахСрезПоследних.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
    |   И ТехническоеОбслуживаниеСрезПоследних.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
    |   И СведенияОДоговорахСрезПоследних.Период МЕЖДУДатаНачала ИДатаКонца


IBReiter
18.11.2015 17:27Ответ № 4

Зачем группируете? что в итоге хотите получить?

Ermak
18.11.2015 18:47Ответ № 5

В первом варианте я получаю значение но у меня не группирует, т.е выводит два раза в одном строке Лицевой счет и Дата договора а в другой опять же этот лицевой счет и долг, как сделать чтобы выводила одна строка где будет и дата договора и долг

IBReiter
19.11.2015 08:56Ответ № 6

В первом варианте изменить итоговый запрос

Код 1C v 8.3
 

    |ВЫБРАТЬ
    |   ВременнаяТаблица.ЛицевойСчет,
    |   Максимум(ВременнаяТаблица.ДатаТО) как ДатаТО,
    |   Максимум(ВременнаяТаблица.ДатаДоговора) как ДатаДоговора,
    |   Максимум(ВременнаяТаблица.СуммаОстаток) как СуммаОстаток
    |ИЗ
    |   ВременнаяТаблица КАК ВременнаяТаблица
    |
    |СГРУППИРОВАТЬ ПО
    |   ВременнаяТаблица.ЛицевойСчет";    
Ermak
19.11.2015 14:53Ответ № 7

Спасибо получилось! Тут встала другая проблема, ранее в коде выводились только те Лицевые счета у которых заполнены реквизиты ДатаТО, ДатаДоговора или СуммаОстатков, а мне нужно чтобы выводились все лицевые счета пусть у них заполнены эти реквизиты или не заполнены, я добавил еще справочник Лицевые счет где все Лицевые счета, но теперь не выводятся реквизиты ДатаТО, ДатаДоговора или СуммаОстатков, что не так?

Код 1C v 8.х
 ВЫБРАТЬ
| СведенияОДоговорахСрезПоследних.ЛицевойСчет КАК ЛицевойСчет,
| СведенияОДоговорахСрезПоследних.ДатаДоговора,
| NULL КАК ДатаТО,
| NULL КАК СуммаОстаток,
| NULL КАК Ссылка,
| NULL КАК ОтветственныйКвартиросъемщик,
| NULL КАК Наименование
|ПОМЕСТИТЬ ВременнаяТаблица
|ИЗ
| РегистрСведений.СведенияОДоговорах.СрезПоследних КАК СведенияОДоговорахСрезПоследних
|ГДЕ
| СведенияОДоговорахСрезПоследних.Услуга =Услуга
| И СведенияОДоговорахСрезПоследних.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТехническоеОбслуживаниеСрезПоследних.ЛицевойСчет,
| NULL,
| ТехническоеОбслуживаниеСрезПоследних.ДатаТО,
| NULL,
| NULL,
| NULL,
| NULL
|ИЗ
| РегистрСведений.ТехническоеОбслуживание.СрезПоследних КАК ТехническоеОбслуживаниеСрезПоследних
|ГДЕ
| ТехническоеОбслуживаниеСрезПоследних.Период МЕЖДУДатаНачала ИДатаКонца
| И ТехническоеОбслуживаниеСрезПоследних.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЛицевыеСчетаАбонентов.Код,
| NULL,
| NULL,
| NULL,
| ЛицевыеСчетаАбонентов.Ссылка,
| ЛицевыеСчетаАбонентов.ОтветственныйКвартиросъемщик,
| ЛицевыеСчетаАбонентов.Наименование
|ИЗ
| Справочник.ЛицевыеСчетаАбонентов КАК ЛицевыеСчетаАбонентов
|ГДЕ
| ЛицевыеСчетаАбонентов.АбонентскийУчасток =АбонентскийУчасток
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НачислениеКвартПлатыЛСОстатки.ЛицевойСчет,
| NULL,
| NULL,
| НачислениеКвартПлатыЛСОстатки.СуммаОстаток,
| NULL,
| NULL,
| NULL
|ИЗ
| РегистрНакопления.НачислениеКвартПлатыЛС.Остатки КАК НачислениеКвартПлатыЛСОстатки
|ГДЕ
| НачислениеКвартПлатыЛСОстатки.Услуги =Услуга
| И НачислениеКвартПлатыЛСОстатки.ЛицевойСчет.АбонентскийУчасток =АбонентскийУчасток
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВременнаяТаблица.ЛицевойСчет,
| МАКСИМУМ(ВременнаяТаблица.ДатаТО) КАК ДатаТО,
| МАКСИМУМ(ВременнаяТаблица.ДатаДоговора) КАК ДатаДоговора,
| МАКСИМУМ(ВременнаяТаблица.СуммаОстаток) КАК СуммаОстаток,
| МАКСИМУМ(ВременнаяТаблица.Ссылка) КАК Ссылка,
| МАКСИМУМ(ВременнаяТаблица.ОтветственныйКвартиросъемщик) КАК ОтветственныйКвартиросъемщик,
| МАКСИМУМ(ВременнаяТаблица.Наименование) КАК Наименование
|ИЗ
| ВременнаяТаблица КАК ВременнаяТаблица
|
|СГРУППИРОВАТЬ ПО
| ВременнаяТаблица.ЛицевойСчет
IBReiter
19.11.2015 16:55Ответ № 8

Какой тип:

СведенияОДоговорахСрезПоследних.ЛицевойСчет - ???

ЛицевыеСчетаАбонентов.Код - ???

Ermak
19.11.2015 20:45Ответ № 9

СведенияОДоговорахСрезПоследних.ЛицевойСчет - тип СправочникСсылка.ЛицевыеСчетаАбонентов

ЛицевыеСчетаАбонентов.Код - тип число

Типы разные а как быть чтобы вывести все Лицевые счета?

IBReiter
20.11.2015 08:33Ответ № 10

Долэно быть вместо ЛицевыеСчетаАбонентов.Код - ЛицевыеСчетаАбонентов.Ссылка

Ermak
20.11.2015 08:49Ответ № 11

Спасибо большое все получилось

Ermak
20.11.2015 08:49Ответ № 12
Вопрос закрыт!
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.