Всем доброго дня!
Помогите с такой задачей:
- нужно проверять по всем ли документам поступлений есть документы установки цен (нужно для отчётов)
---
```1c
    ВЫБРАТЬ
    ПриобретениеТоваровУслуг.Ссылка КАК ДокументПриобретенияТоваров,
    УстановкаЦенНоменклатуры.Ссылка КАК ДокументыУстановкиЦен
    ИЗ
    Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
    ПО (УстановкаЦенНоменклатуры.ДокументОснование = ПриобретениеТоваровУслуг.Ссылка)
```

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

```1c
    /// Как найти подчиненные документы в 1с 8.3, 8.2

    &НаСервере
    Процедура КакНайтиПодчиненныеДокументыНаСервере()

    // Рассмотрим работу с подчиненными (связанными) документами
    // на примере документов: ПоступлениеТоваровУслуг и СчетФактураПолученный.

    // Документ СчетФактураПолученный вводится на основании документа
    // ПоступлениеТоваровУслуг, то есть счет фактура является подчиненной
    // по отношению к поступлению.

    // Факт подчиненности обычно (в типовых) фиксируется в самом подчиненном
    // документе через табличную часть ДокументыОснования.
    // Почему через табличную часть? Потому что один документ может зависеть
    // (быть подчиненным) сразу от нескольких родителей (оснований).

    // Пример №1.
    // У нас есть ссылка на поступление товаров и услуг. Требуется найти
    // счёт-фактуры, которые были введены на основании этого поступления.
    // В дереве подчиненности эти фактуры будут подчинены (зависимы) от
    // документа поступления.

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Ссылка
    |ИЗ
    | Документ.СчетФактураПолученный.ДокументыОснования КАК
    | СчетФактураПолученныйДокументыОснования
    |ГДЕ
    | СчетФактураПолученныйДокументыОснования.ДокументОснование =
    | &ВыбПоступление";

    Запрос.УстановитьПараметр("ВыбПоступление",
    Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("0000-000004", '20160101')
    );

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ПодчиненнаяФактура = ВыборкаДетальныеЗаписи.Ссылка;
    Сообщить(ПодчиненнаяФактура);
    КонецЦикла;

    // Пример №2.
    // У нас есть ссылка на счет-фактуру полученную. Требуется найти,
    // документы, на основании которых она была введена (родителей).

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ДокументОснование
    |ИЗ
    | Документ.СчетФактураПолученный.ДокументыОснования КАК
    | СчетФактураПолученныйДокументыОснования
    |ГДЕ
    | СчетФактураПолученныйДокументыОснования.Ссылка =
    | &ВыбСчетФактура";

    Запрос.УстановитьПараметр("ВыбСчетФактура",
    Документы.СчетФактураПолученный.НайтиПоНомеру("0000-000007", '20160101')
    );

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    РодительФактуры = ВыборкаДетальныеЗаписи.ДокументОснование;
    Сообщить(РодительФактуры);
    КонецЦикла;

    КонецПроцедуры
```

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

Попробуй в консоле запросов (файл во вложении) этот запрос выполнить.
---
Да, пока вариант отчёта по подчинённым документам самый простой.
---
Правильнее будет наверно так

```1c
    "ВЫБРАТЬ
    | ПриобретениеТоваровУслуг.Ссылка КАК ДокументПриобретенияТоваров,
    | ЕСТЬNULL(УстановкаЦенНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Документ.УстановкаЦенНоменклатуры.ПустаяСсылка)) КАК ДокументыУстановкиЦен
    |ИЗ
    | Документ.ПоступлениеТоваровУслуг КАК ПриобретениеТоваровУслуг
    | ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
    | ПО УстановкаЦенНоменклатуры.ДокументОснование = ПриобретениеТоваровУслуг.Ссылка
    |";
```
---
ошибка в запросе - в одному случае поступление, в другом приобретение, все равно выводит весь список
сделал так

```1c
    ВЫБРАТЬ
    ПриобретениеТоваровУслуг.Ссылка КАК ДокументПриобретенияТоваров,
    УстановкаЦенНоменклатуры.Ссылка КАК ДокументыУстановкиЦен
    ИЗ
    Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры КАК УстановкаЦенНоменклатуры
    ПО (УстановкаЦенНоменклатуры.ДокументОснование = ПриобретениеТоваровУслуг.Ссылка)
    ГДЕ
    УстановкаЦенНоменклатуры.Номер ЕСТЬ NULL
```
---
ЕСТЬNULL(УстановкаЦенНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Документ.УстановкаЦенНоменклатуры.ПустаяСсылка))
А зачем это , ведь если и так пусто, то ничего не отразится ?
---
Если проверяемое значение будет NULL, то эта функция вернет значение выражения замены. Если же значение будет отлично от NULL, то вернется само проверяемое выражение.