Сделал отчет в СКД. Из регистра сведений получаю список шин установленных на автобус (установленные и запасные). По каждой шине получаю пробег за оборот и пробег всего.
У шины, которая установлена в запас, есть запись в регистре с пробегом 0. Но я не могу получить ни оборот за период, ни конечный остаток.
Есть два варианта отчета. В первом группирую по Автобусу и Шине - выводятся все шины (даже запасные). Во втором варианте добавил группировку по регистратору - шины, которые в запасе, не выводятся.

В чем может быть проблема? Почему не могу получить конечный остаток по шинам в запасе?
---
А если изменить запрос так:

```1c
    ВЫБРАТЬ
    ДПАТ_АгрегатыТССрезПоследних.ТС,
    ДПАТ_АгрегатыТССрезПоследних.ТС.ГосударственныйНомер КАК ГосНомер,
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры,
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель КАК Модель,
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.НормаПробега КАК НормаПробега,
    ЕстьNull(ДПАТ_ИзносПробегШинОбороты.ПробегОборот,0) КАК ПробегЗаПериод,
    ЕстьNull(ДПАТ_ИзносПробегШинОбороты.ИзносОборот,0) КАК ИзносЗаПериод,
    ЕстьNull(ДПАТ_ИзносПробегШинОстатки.ПробегОстаток,0) КАК ПробегВсего,
    ЕстьNull(ДПАТ_ИзносПробегШинОстатки.ИзносОстаток,0) КАК ИзносВсего,
    ВЫБОР
    КОГДА ДПАТ_АгрегатыТССрезПоследних.ТС.ДатаВыбытия <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    ТОГДА ИСТИНА
    ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ТСВыбыло,
    ВЫБОР
    КОГДА ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.НормаПробега > 0
    ТОГДА ВЫРАЗИТЬ(ЕстьNull(ДПАТ_ИзносПробегШинОстатки.ПробегОстаток,0) / ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.НормаПробега * 100 КАК ЧИСЛО(15, 2))
    КОНЕЦ КАК ПроцентИспользования,
    ДПАТ_ИзносПробегШинОбороты.Организация,
    ДПАТ_АгрегатыТССрезПоследних.СостояниеАгрегата,
    ЕстьNull(ДПАТ_ИзносПробегШинОбороты.Регистратор,"Без пробега") КАК Регистратор
    ИЗ
    РегистрСведений.ДПАТ_АгрегатыТС.СрезПоследних КАК ДПАТ_АгрегатыТССрезПоследних
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ИзносПробегШин.Обороты(, , Регистратор, ) КАК ДПАТ_ИзносПробегШинОбороты
    ПО ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры = ДПАТ_ИзносПробегШинОбороты.СерияНоменклатуры
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ИзносПробегШин.Остатки КАК ДПАТ_ИзносПробегШинОстатки
    ПО ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры = ДПАТ_ИзносПробегШинОстатки.СерияНоменклатуры
    ГДЕ
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.ТипАгрегата.ТипАгрегата = ЗНАЧЕНИЕ(Перечисление.ДПАТ_ТипыАгрегатов.Шина)
```

Только еще бы организацию не из регистра накопления брать.
---
В чем может быть проблема? Почему не могу получить конечный остаток по шинам в запасе? так посмотрите внимательнее на запрос, видно даже без детального анализа, что он у Вас неправильно составлен.
---
Сложно понять, о чем речь. Давайте начнем с запроса, которым Вы пытаетесь вытянуть информацию. И неплохо бы еще увидеть структуру регистров (и сведений, и накопления).
---
(3) Структуру регистров пока трогать не будем. Вот записи в регистре. В консоле самый простой запрос ничего не возвращает

```1c
    ВЫБРАТЬ
    ДПАТ_ИзносПробегШинОстаткиИОбороты.ТранспортноеСредство,
    ДПАТ_ИзносПробегШинОстаткиИОбороты.СерияНоменклатуры,
    ДПАТ_ИзносПробегШинОстаткиИОбороты.ПробегОборот,
    ДПАТ_ИзносПробегШинОстаткиИОбороты.ПробегКонечныйОстаток
    ИЗ
    РегистрНакопления.ДПАТ_ИзносПробегШин.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, , ) КАК ДПАТ_ИзносПробегШинОстаткиИОбороты
    ГДЕ
    ДПАТ_ИзносПробегШинОстаткиИОбороты.ТранспортноеСредство = &ТранспортноеСредство
    И ДПАТ_ИзносПробегШинОстаткиИОбороты.СерияНоменклатуры = &СерияНоменклатуры
```

Вот так тоже ничего не возвращает

```1c
    РегистрНакопления.ДПАТ_ИзносПробегШин.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , ) КАК ДПАТ_ИзносПробегШинОстаткиИОбороты
```
---
Запись по данному ТС и серии единственная в регистре? Если да, то так как значение пробега = 0, то логично, что запрос Вам ничего не возвращает.
---
Логично, когда у нас нет записей и запрос нам ничего не возвращает. А когда у нас есть запись, хоть и с 0. Почему запрос не возвращает записи с 0?
---
Потому что таблица итогов не хранит записи с пустыми значениями ресурсов.
---
А как логически отрабатывает запрос к регистру? При попытке получения оборотов, смотрится есть ли конечный остаток или в оборотах тоже не хранятся записи нулевыми значениями? Сделал запрос на обороты - ничего не вернуло
---
А как логически отрабатывает запрос к регистру?Если берете остатки и обороты, то часть берется из таблицы остатков, часть из основной таблицы.

В Вашем случае проще сделать запрос типа такой:
```1c
    ВЫБРАТЬ
    ТС.Ссылка ТранспортноеСредство,
    ЕСТЬNULL(Данные.Остаток , 0) Остаток,
    ...
    ИЗ Справочник.ТранспортныеСредства КАК ТС
    ЛЕВОЕ СОЕДИНЕНИЕ Регистр.ОстаткиИОбороты() КАК Данные
    ПО ТС.Ссылка =Данные.ТранспортноеСредство
```
---
Оно и так 0 возвращает
---
Если нужно видеть в том числе и нулевые остатки и обороты, делайте запрос к справочнику с транспортными средствами и к нему левым соединением уже цепляйте свои обороты и остатки.
---
В СКД я так и делаю, но при добавлении группировки по регистратору, в отчет не попадают шины установленные в запас
---
сложно сказать, не видя самой схемы. Вообще при формировании отчетов с использованием СКД, использующих остатки, есть некоторые нюансы, которые нужно учитывать.
---
За ссылку спасибо, почитаю.
---
(12)
Регистратор получаю из регистра накопления таблица обороты. Сделал запрос в консоли на обороты по шине в запасе - запрос ничего не вернул. То есть у нас нет оборота. Может в этом причина?
---
```1c
    ВЫБРАТЬ
    ДПАТ_ИзносПробегШинОстаткиИОбороты.ТранспортноеСредство,
    ДПАТ_ИзносПробегШинОстаткиИОбороты.СерияНоменклатуры,
    ДПАТ_ИзносПробегШинОстаткиИОбороты.ПробегОборот,
    ДПАТ_ИзносПробегШинОстаткиИОбороты.ПробегКонечныйОстаток
    ИЗ
    РегистрНакопления.ДПАТ_ИзносПробегШин.ОстаткиИОбороты(,, Регистратор, , ) КАК ДПАТ_ИзносПробегШинОстаткиИОбороты
```

что выдает?
---
Ничего не возвращает

```1c
    ВЫБРАТЬ
    ИзносПробегШинОстаткиИОбороты.ТранспортноеСредство,
    ИзносПробегШинОстаткиИОбороты.СерияНоменклатуры,
    ИзносПробегШинОстаткиИОбороты.ПробегОборот,
    ИзносПробегШинОстаткиИОбороты.ПробегКонечныйОстаток
    ИЗ
    РегистрНакопления.ИзносПробегШин.ОстаткиИОбороты(, , Регистратор, , ) КАК ИзносПробегШинОстаткиИОбороты
    ГДЕ
    ИзносПробегШинОстаткиИОбороты.ТранспортноеСредство = &ТранспортноеСредство
    И ИзносПробегШинОстаткиИОбороты.СерияНоменклатуры = &СерияНоменклатуры
```
---
значит нет у вас оборотов в этом регистре. В нем вообще значит ничего нет. Откройте сам регистр в режиме 1С: Предприятие там вообще движений нет скорее всего
---
настраивайте "Роли" для полей в СКД
---
Здесь ключевой момент "Сделал отчет в СКД". Что там - одному богу известно.
Если в консоли запросов все гуд, то следующим шагом пробуйте консоль СКД.
Что за нездоровая любовь нестандартным именам начала и конца периода? Все ли у вас хорошо с установкой параметров?
---
(18) В сообщении 4 первый скрин - это мой регистр и там записи есть
http://forum.infostart.ru/upload/forum/upload/d9c/d9cb442300948f96178bffb6423ba755
Консоль запросов возвращает пустоту
---
Очевидно же. Значит по заданным параметрам в консоли - в регистре данных нет.
То что значения параметров в консоли в строковом представлении похожи на значения в регистре, не значит, что в параметрах указаны те же самые ссылки.
---
У меня один Volkswagen Crafter

```1c
    ВЫБРАТЬ
    ИзносПробегШинОстаткиИОбороты.ТранспортноеСредство,
    ИзносПробегШинОстаткиИОбороты.СерияНоменклатуры,
    ИзносПробегШинОстаткиИОбороты.ПробегОборот,
    ИзносПробегШинОстаткиИОбороты.ПробегКонечныйОстаток
    ИЗ
    РегистрНакопления.ИзносПробегШин.ОстаткиИОбороты(, , Регистратор, , ) КАК ИзносПробегШинОстаткиИОбороты
    ГДЕ
    ИзносПробегШинОстаткиИОбороты.ТранспортноеСредство = &ТранспортноеСредство
```
---
Добавьте в выборку регистратор. Если шины в запасе в результате не будет, то скорее всего, у вас в базе все-таки 2 Volkswagen Crafter.
---
У меня один Volkswagen Crafter. Если при поступлении шины я ставлю пробег 1 и регистр вместо 0 записывается 1 - все работает. Не работает если пробег = 0
---
Так что вернет, когда пробег = 0?

```1c
    ВЫБРАТЬ
    ИзносПробегШинОстаткиИОбороты.ТранспортноеСредство,
    ИзносПробегШинОстаткиИОбороты.СерияНоменклатуры,
    ИзносПробегШинОстаткиИОбороты.ПробегОборот,
    ИзносПробегШинОстаткиИОбороты.ПробегКонечныйОстаток
    ИЗ
    РегистрНакопления.ИзносПробегШин КАК ИзносПробегШинОстаткиИОбороты
    ГДЕ
    ИзносПробегШинОстаткиИОбороты.ТранспортноеСредство = &ТранспортноеСредство
    И ИзносПробегШинОстаткиИОбороты.СерияНоменклатуры = &СерияНоменклатуры
```
---
Немного не то, я имел в виду физическую таблицу, а не остатки и обороты

```1c
    ИЗ
    РегистрНакопления.ИзносПробегШин КАК ИзносПробегШинОстаткиИОбороты
```
---
Вот регистр
---
Теперь понятнее. Виртуальная таблица регистра не выведет данные по этой шине, т.к. ни оборотов, ни остатков по ней нет.
Соединяйте данные РС с перечнем шин с таблицей РН левым соединением - получите все нужные данные.
---
Я так и делаю, НО, когда я добавляю группировку по Регистратору, эта шина не попадает в отчет
http://forum.infostart.ru/forum9/topic175286/message1824183/#message1824183
---
Запрос из СКД покажите. Или приложите внешний отчет с скд.
---
```1c
    ВЫБРАТЬ
    ДПАТ_АгрегатыТССрезПоследних.ТС,
    ДПАТ_АгрегатыТССрезПоследних.ТС.ГосударственныйНомер КАК ГосНомер,
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры,
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель КАК Модель,
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.НормаПробега КАК НормаПробега,
    ДПАТ_ИзносПробегШинОбороты.ПробегОборот КАК ПробегЗаПериод,
    ДПАТ_ИзносПробегШинОбороты.ИзносОборот КАК ИзносЗаПериод,
    ДПАТ_ИзносПробегШинОстатки.ПробегОстаток КАК ПробегВсего,
    ДПАТ_ИзносПробегШинОстатки.ИзносОстаток КАК ИзносВсего,
    ВЫБОР
    КОГДА ДПАТ_АгрегатыТССрезПоследних.ТС.ДатаВыбытия <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    ТОГДА ИСТИНА
    ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ТСВыбыло,
    ВЫБОР
    КОГДА ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.НормаПробега > 0
    ТОГДА ВЫРАЗИТЬ(ДПАТ_ИзносПробегШинОстатки.ПробегОстаток / ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.НормаПробега * 100 КАК ЧИСЛО(15, 2))
    КОНЕЦ КАК ПроцентИспользования,
    ДПАТ_ИзносПробегШинОбороты.Организация,
    ДПАТ_АгрегатыТССрезПоследних.СостояниеАгрегата,
    ДПАТ_ИзносПробегШинОбороты.Регистратор
    ИЗ
    РегистрСведений.ДПАТ_АгрегатыТС.СрезПоследних КАК ДПАТ_АгрегатыТССрезПоследних
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ИзносПробегШин.Обороты(, , Регистратор, ) КАК ДПАТ_ИзносПробегШинОбороты
    ПО ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры = ДПАТ_ИзносПробегШинОбороты.СерияНоменклатуры
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ИзносПробегШин.Остатки КАК ДПАТ_ИзносПробегШинОстатки
    ПО ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры = ДПАТ_ИзносПробегШинОстатки.СерияНоменклатуры
    ГДЕ
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.ТипАгрегата.ТипАгрегата = ЗНАЧЕНИЕ(Перечисление.ДПАТ_ТипыАгрегатов.Шина)
```
---
А если изменить запрос так:

```1c
    ВЫБРАТЬ
    ДПАТ_АгрегатыТССрезПоследних.ТС,
    ДПАТ_АгрегатыТССрезПоследних.ТС.ГосударственныйНомер КАК ГосНомер,
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры,
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель КАК Модель,
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.НормаПробега КАК НормаПробега,
    ЕстьNull(ДПАТ_ИзносПробегШинОбороты.ПробегОборот,0) КАК ПробегЗаПериод,
    ЕстьNull(ДПАТ_ИзносПробегШинОбороты.ИзносОборот,0) КАК ИзносЗаПериод,
    ЕстьNull(ДПАТ_ИзносПробегШинОстатки.ПробегОстаток,0) КАК ПробегВсего,
    ЕстьNull(ДПАТ_ИзносПробегШинОстатки.ИзносОстаток,0) КАК ИзносВсего,
    ВЫБОР
    КОГДА ДПАТ_АгрегатыТССрезПоследних.ТС.ДатаВыбытия <> ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    ТОГДА ИСТИНА
    ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ТСВыбыло,
    ВЫБОР
    КОГДА ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.НормаПробега > 0
    ТОГДА ВЫРАЗИТЬ(ЕстьNull(ДПАТ_ИзносПробегШинОстатки.ПробегОстаток,0) / ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.НормаПробега * 100 КАК ЧИСЛО(15, 2))
    КОНЕЦ КАК ПроцентИспользования,
    ДПАТ_ИзносПробегШинОбороты.Организация,
    ДПАТ_АгрегатыТССрезПоследних.СостояниеАгрегата,
    ЕстьNull(ДПАТ_ИзносПробегШинОбороты.Регистратор,"Без пробега") КАК Регистратор
    ИЗ
    РегистрСведений.ДПАТ_АгрегатыТС.СрезПоследних КАК ДПАТ_АгрегатыТССрезПоследних
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ИзносПробегШин.Обороты(, , Регистратор, ) КАК ДПАТ_ИзносПробегШинОбороты
    ПО ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры = ДПАТ_ИзносПробегШинОбороты.СерияНоменклатуры
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ИзносПробегШин.Остатки КАК ДПАТ_ИзносПробегШинОстатки
    ПО ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры = ДПАТ_ИзносПробегШинОстатки.СерияНоменклатуры
    ГДЕ
    ДПАТ_АгрегатыТССрезПоследних.СерияНоменклатуры.Модель.ТипАгрегата.ТипАгрегата = ЗНАЧЕНИЕ(Перечисление.ДПАТ_ТипыАгрегатов.Шина)
```

Только еще бы организацию не из регистра накопления брать.
---
Как ты это сделал?
---
Отсутствующие данные РН, которые без пробега, приводятся к значению, вместо Null.
---
Ну хорошо, а почему записи с пробегом 0 берет как без пробега? 0 это же не Null
---
Потому что виртуальная таблица регистра накопления не возвращает записи, если по ресурсы пустые.
---
спасибо за помощь!
---
Можно еще скрин СКД, закладка "Наборы данных"?

Увидел файл.
---
Вот