Добрый день.

Как правильно задать параметры для таблицы "Остатки" регистра накопления из внутренней таблицы в данном случае?

Когда накладываю только одну условие по номенклатуре, все отрабатывает правильно. Когда добавляю еще поля (например, характеристики), финальный результат запроса пустой всегда (хотя фактически результаты должны быть).

Выделил проблемное место в коде:

```1c
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос.Текст =

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

    Запрос.УстановитьПараметр("Ссылка", Ссылка);

    Запрос.Выполнить().Выбрать()

    //...что-то делаем

    Запрос.Текст =

    "ВЫБРАТЬ
    | МойРегистр.Номенклатура КАК Номенклатура,
    | -МойРегистр.КоличествоОстаток КАК Дефицит
    |ИЗ
    | РегистрНакопления.МойРегистр.Остатки(
    | &МоментВремени,
    | (Номенклатура, Характеристика) В
    | (ВЫБРАТЬ
    | Товары.Номенклатура КАК Номенклатура,
    | Товары.Характеристика КАК Характеристика
    | ИЗ
    | Товары КАК Товары)) КАК МойРегистр
    |ГДЕ
    | МойРегистр < 0";

    ГраницаКонтроля = Новый Граница(Источник.МоментВремени(), ВидГраницы.Включая);
    Запрос.УстановитьПараметр("МоментВремени", ГраницаКонтроля);
    РезультатЗапроса = Запрос.Выполнить();
```
---
значит пары (Номенклатура, Характеристика) у вас кривые, например

(Null, "красненькая")
(Булка, Null)

Вт Товары в отладке стмотрим

(6) Самое главное быстро сделать запрос к оборотным регистрам, а уже результат можно причесать
и в ВТ с (Номенклатура, Характеристика) В
В моей практике писать сложные отборы с ломом индексов к оборотным регистрам - это "земля прощай, в добрый путь"
---
Типы совпадают? ЗаказКлиентаТовары.Характеристика И РегистрНакопления.МойРегистр.Характеристика

В консоле без Менеджера пробовали соединять?
---
И еще из предположений. Если Вы действительно уверены, что для пар (Номенклатура, Характеристика) должны быть остатки, не скомпенсированы ли движения по одной номенклатуре, но разным характеристикам? Вы выбираете только номенклатуру, стало быть по номенклатуре остатки и будут свернуты.
---
У меня новый регистр. Полностью пустой.
Данный код вставляю в обработку проведения документа, который делает расход.

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

Поэтому отрицательные остатки в любом случае должны быть.

И вот если условие наложено только по номенклатуре - все срабатывает как нужно. А когда добавляю еще измерения регистра, то всегда запрос пустой.

Вот и вопрос, как правильно наложить все отборы в одном запросе?
---
Заполняются ли характеристики в документе? Они попали в движения?
---
значит пары (Номенклатура, Характеристика) у вас кривые, например

(Null, "красненькая")
(Булка, Null)

Вт Товары в отладке стмотрим

(6) Самое главное быстро сделать запрос к оборотным регистрам, а уже результат можно причесать
и в ВТ с (Номенклатура, Характеристика) В
В моей практике писать сложные отборы с ломом индексов к оборотным регистрам - это "земля прощай, в добрый путь"
---
Да, действительно, один из отбираемых мной реквизитов при записи движений не заполнялся, а в отбор я его добавлял.

Спасибо всем за помощь.
---
(Номенклатура, Характеристика) В - ломает индексы

если так

```1c
    | Номенклатура В
    | (ВЫБРАТЬ
    | Товары.Номенклатура КАК Номенклатура
    | ИЗ
    | Товары)
    | И
    | Характеристика В
    | (ВЫБРАТЬ
    | Товары.Характеристика КАК Характеристика
    | ИЗ
    | Товары)
```

то будет шустрее
---
Правда в общем случае результат может получиться другой.
---
Откуда это у вас такая информация?
в вашем варианте будет 2 физических прохода таблицы остатков
сначала отберутся записи совпавшие по номенклатуре
затем еще одним перебором из получившейся выборки отберутся записи по характеристикам

в то время как "(Номенклатура, Характеристика) В" выполнится за один обход таблицы остатков

Попробуйте оба варианта на регистре 100000+ записей
ваш будет медленнее в разы
---
|ГДЕ
    | МойРегистр < 0"

Это что у вас такое за условие в конце запроса?
---
Делаю по примеру из https://xn----1-bedvffifm4g.xn--p1ai/articles/2017-02-12-two-methods-for-inventory-check/

Сначала записываю движения, а потом смотрю появились отрицательные остатки или нет.