Собственно при отключении отбора по ВидуЦен появляется ошибка. Помогите правильно исправить. Запрос из динамического списка:

```1c
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
    СправочникНоменклатура.Родитель КАК Родитель,
    СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
    СправочникНоменклатура.Код КАК Артикул,
    СправочникНоменклатура.Наименование КАК Наименование,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остаток,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
    ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&НаДату, ) КАК ТоварыНаСкладахОстатки
    ПО СправочникНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, ) КАК ЦеныНоменклатурыСрезПоследних
    ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
```
---
Решение нашлось не там где искали. Запрос дин. списка остабил без левого соединения с ценами. Добавил реквизит на форму "ВидЦен" (вместо отбора дин.списка) с типом СправочникСсылка.ВидыЦен. При его изменении в КомпоновщикНастроек.Настройки.ДополнительныеСвойства добавляем вид цен. Потом в Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) Выбираем Срез последних цен и при переборе выборки добавляем в список цены (соответствующей строке из параметра "Строки"). Все. Всем спасибо, кто откликнуля.
---
в таком запросе - никак. У тебя в регистре "ТоварыНаСкладах" более одной номенклатуры (развернутой по складам или организациям или еще по чему нибудь) . В твоем случае запрос надо переписать (на вложенный) где из остатков будешь брать только запись по номенклатуре.
---
Господа, зачем вы советуете использовать временные таблицы в динамическом списке, вы белены объелись?
Будьте так любезны и ознакомьтесь: https://its.1c.ru/db/v8std#content:732:hdoc

(1) А для Вас, уберите "РАЗЛИЧНЫЕ", это тут лишнее и нагружает запрос. И смотрите в конфигураторе измерения у регистров.
Так регистр "ЦеныНоменклатуры" явно имеет ещё измерение "ТипЦен", помимо номенклатуры, поэтому запрос к срезу последних, без отбора, вернёт вам пару "Номенклатура" и "ТипЦен", отсюда и дубли. Так же проверьте регистр "ТоварыНаСкладах", там та же песня по идее.
Поставьте фильтр типа цен, допустим по умолчанию базовая цена, и если вам требуется его передёргивать при определённых условиях, то делайте это при открытии формы или создании на сервере, переназначая параметр, или по кнопке, как удобнее.
Уберёте неодназначность и СУБД вам будет благодарна скоростью и точностью работы вашего списка. Удачи.
---
Так же проверьте регистр "ТоварыНаСкладах", там та же песня по идее.Тут как раз таки все в порядке. Результат сворачивается в разрезе тех полей, которые участвуют в запросе (исключая указанные в параметрах самой виртуальной таблицы). Т.к. здесь только поле "Номенклатура" в соединении, то и виртуальная таблица остатков будет детализирована лишь с точностью до номенклатуры.
---
УТ11.4.10.62. Врегистре "Цены номенклатуры" нет измерения "ТипЦен"
---
Обычно меняется текст запроса динамического списка программно (в типовых часто такое встречается), при изменении отбора на форме. Т.е. вид цен пустой, то и соединение вообще не нужно, а в тексте запроса поставить поле будет "0 КАК Цена".

А насчет временной таблицы - это, как верно подсказали в (10) в динамическом списке лучше не использовать.
---
Да, скорее всего так и нужно сделать, но в каком событии менять текст запроса при снятии пользователем галочки с отбора?
---
В самом простом случае это поле явно добавляется на форму и добавляется событие "при изменении". В типовых периодически встречаются примеры.
тут вот есть в первой попавшейся форме под рукой:

поле ОтборВидДокументаФНС на форме, при изменении идет
 Если ЗначениеЗаполнено(ОтборВидДокументаФНС) Тогда
  бла-бла
 Иначе

  ОтключитьОтборСписка(СписокОтбор, "ВидДокументаФНС");

 КонецЕсли;

ну вот в иначе можно и тест запроса поменять.
---
Это в УТ? В какой форме глянуть?
---
УТ нету под рукой. Есть БП МСФО и ЕРП.
там есть ДокументыПоТребованиюФНС, в ней форма списка. Можно, наверное, и в УТ что-то подобное поискать. Это очень распространенная практика, просто сходу не подскажу.
---
Либо ставь фильтр по всем измерениям в регистре "ТоварыНаСкладах", что бы всегда возвращалась одна ссылка
---
У тебя несколько записей возникает из-за регистра ЦеныНоменклатуры - при отключении отбора по виду цен появляются записи с разными типами цен, так что отбор по виду цен у тебя должен быть.
Как вариант - каждый тип цен вывести в отдельную колонку, тогда никакого отбора не надо
---
Как сделать, чтобы при отключении отбора выводился "0" в колонке "Цена", а не ошибка?
---
Устанавливайте при отключении отбора отбор по пустому виду цен, как вариант
---
Как?)
---
а как у вас устанавливается отбор по непустому виду цен?
---
Как раз вид цен и надо выбирать пользователю в форме, чтобы цены только по нему и отображались. А когда отбор по видам цен отключен, то в колонке "цена" должен быть 0

Переделал:

```1c
    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    СУММА(ТоварыНаСкладахОстатки.ВНаличииОстаток) КАК Остаток
    ПОМЕСТИТЬ ВТОСТАТКИ
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&НаДату, ) КАК ТоварыНаСкладахОстатки
    СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстатки.Номенклатура
    ;
    ////////////////////////////////////////////////////////////­///////////////////////
    ВЫБРАТЬ ПЕРВЫЕ 10
    СправочникНоменклатура.Ссылка КАК Ссылка,
    СправочникНоменклатура.ПометкаУдаления КАК ПометкаУдаления,
    СправочникНоменклатура.Родитель КАК Родитель,
    СправочникНоменклатура.ЭтоГруппа КАК ЭтоГруппа,
    СправочникНоменклатура.Код КАК Артикул,
    СправочникНоменклатура.Наименование КАК Наименование,
    ЕСТЬNULL(ВТОСТАТКИ.Остаток, 0) КАК Остаток,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
    ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ ВТОСТАТКИ КАК ВТОСТАТКИ
    ПО (СправочникНоменклатура.Ссылка = ВТОСТАТКИ.Номенклатура)
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, {ВидЦены = &ВидЦены}) КАК ЦеныНоменклатурыСрезПоследних
    ПО (СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура)
```

Так?
---
Быть может избавиться от возможности отключения параметра "ВидЦены" на форме списка и сделать его обязательным? Тогда всегда будет отбор либо с конкретным видом цены, либо с пустой ссылкой.
---
Решение нашлось не там где искали. Запрос дин. списка остабил без левого соединения с ценами. Добавил реквизит на форму "ВидЦен" (вместо отбора дин.списка) с типом СправочникСсылка.ВидыЦен. При его изменении в КомпоновщикНастроек.Настройки.ДополнительныеСвойства добавляем вид цен. Потом в Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки) Выбираем Срез последних цен и при переборе выборки добавляем в список цены (соответствующей строке из параметра "Строки"). Все. Всем спасибо, кто откликнуля.
---
Коллеги, столкнулся с такой же проблемой и победил по своему. Пользователи не могли в заказе нормально выбрать номенклатуру, выходила эта ошибка и приходилось через подбор все делать. Долго выискивал что не так и много советов перепробовал, но помогло лишь одно. И так. Я все лишь изменил форму выбора справочника. У меня стояла "Форма выбора" я сменил на "Форма выбора групп и элементов" и все заработало.