Всем доброго дня!
Просьба подсказать, как на СКД реализовать следующие задачи:
1) Есть 2 запроса, они выбирают данные из табличной части документов СборкаЗапасов и РасходнаяНакладная, группировки следующие:

Документ.ЗаказПокупателя
---Номенклатура
-------Документ.СборкаЗапасов
-------------Документ.РасходнаяНакладная

Сами запросы:
1)
```1c
    ВЫБРАТЬ
    СборкаЗапасовПродукция.ЗаказПокупателя КАК ЗаказПокупателя,
    СборкаЗапасовПродукция.Количество КАК КоличествоПроизводство,
    СборкаЗапасовПродукция.Номенклатура КАК Номенклатура,
    СборкаЗапасовПродукция.Ссылка КАК СсылкаПроизводство
    ИЗ
    Документ.СборкаЗапасов.Продукция КАК СборкаЗапасовПродукция
    ГДЕ
    СборкаЗапасовПродукция.ЗаказПокупателя.Проведен
    И СборкаЗапасовПродукция.ЗаказПокупателя.ПометкаУдаления = ЛОЖЬ
    И СборкаЗапасовПродукция.ЗаказПокупателя <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
    И СборкаЗапасовПродукция.Ссылка.Проведен
    И СборкаЗапасовПродукция.Ссылка.ПометкаУдаления = ЛОЖЬ
```

2)
```1c
    ВЫБРАТЬ
    РасходнаяНакладнаяЗапасы.Ссылка КАК СсылкаОтгрузка,
    РасходнаяНакладнаяЗапасы.Номенклатура КАК Номенклатура,
    РасходнаяНакладнаяЗапасы.Количество КАК КоличествоОтгрузка,
    РасходнаяНакладнаяЗапасы.Заказ КАК ЗаказПокупателя
    ИЗ
    Документ.РасходнаяНакладная.Запасы КАК РасходнаяНакладнаяЗапасы
    ГДЕ
    РасходнаяНакладнаяЗапасы.Заказ.Проведен
    И РасходнаяНакладнаяЗапасы.Заказ.ПометкаУдаления = ЛОЖЬ
    И РасходнаяНакладнаяЗапасы.Заказ <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
    И РасходнаяНакладнаяЗапасы.Ссылка.Проведен
    И РасходнаяНакладнаяЗапасы.Ссылка.ПометкаУдаления = ЛОЖЬ
```

Связь сделана по полю ЗаказПокупателя.

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

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

Еще проверял через условие:

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

По итогу выводится только первое значение из условия во все строки. Пробовал делать поле Количество через Вычисляемое поле - тоже самое. Также, убирал группировки - результат тот же.

2) Как выводить документы и их количество по методу ФИФО?
К примеру, в документе Производство №1 количество 5000, в Производство №2 6000.
В документе Расходная накладная №1 количество 3000, Расходная накладная №2 8000

Производство №1 5000
-----Расходная накладная №1 3000
-----Расходная накладная №2 2000
Производство №2 6000
-----Расходная накладная №2 6000

Заранее спасибо за помощь!
---
Второй вопрос решил, опираясь на статью https://infostart.ru/1c/articles/68225/
---
1) В общем случае, таблицы я предпочитаю в запросе соединять, т.к. правила игры более понятны. Связи разных источников стоит использовать, если понимаешь, что это именно тот случай.
2) ФИФО в запросе крайне сложно организовать. Хотя, кажется, были где-то статьи. Если нужно СКД, то можно данные заранее получить поместить в таблицу, и из нее выводить данные.
---
2) ФИФО в запросе крайне сложно организовать. Хотя, кажется, были где-то статьи. Если нужно СКД, то можно данные заранее получить поместить в таблицу, и из нее выводить данные.

1) Переделал на 1 набор данных:

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

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    РасходнаяНакладнаяЗапасы.Ссылка,
    РасходнаяНакладнаяЗапасы.Номенклатура,
    РасходнаяНакладнаяЗапасы.Количество,
    РасходнаяНакладнаяЗапасы.Заказ
    ИЗ
    Документ.РасходнаяНакладная.Запасы КАК РасходнаяНакладнаяЗапасы
    ГДЕ
    РасходнаяНакладнаяЗапасы.Заказ.Проведен
    И РасходнаяНакладнаяЗапасы.Заказ.ПометкаУдаления = ЛОЖЬ
    И РасходнаяНакладнаяЗапасы.Заказ <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
    И РасходнаяНакладнаяЗапасы.Ссылка.Проведен
    И РасходнаяНакладнаяЗапасы.Ссылка.ПометкаУдаления = ЛОЖЬ
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Отгрузка.СсылкаОтгрузка КАК СсылкаОтгрузка,
    ВТ_Отгрузка.Номенклатура КАК Номенклатура,
    ВТ_Отгрузка.КоличествоОтгрузка КАК КоличествоОтгрузка,
    ВТ_Отгрузка.ЗаказПокупателя КАК ЗаказПокупателя,
    СборкаЗапасовПродукция.Ссылка КАК СсылкаПроизводство,
    СборкаЗапасовПродукция.Номенклатура КАК Номенклатура1,
    СборкаЗапасовПродукция.Количество КАК КоличествоПроизводство,
    СборкаЗапасовПродукция.ЗаказПокупателя КАК ЗаказПокупателя1
    ИЗ
    Документ.СборкаЗапасов.Продукция КАК СборкаЗапасовПродукция
    ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Отгрузка КАК ВТ_Отгрузка
    ПО СборкаЗапасовПродукция.ЗаказПокупателя = ВТ_Отгрузка.ЗаказПокупателя
    ГДЕ
    СборкаЗапасовПродукция.ЗаказПокупателя.Проведен
    И СборкаЗапасовПродукция.ЗаказПокупателя.ПометкаУдаления = ЛОЖЬ
    И СборкаЗапасовПродукция.ЗаказПокупателя <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
    И СборкаЗапасовПродукция.Ссылка.Проведен
    И СборкаЗапасовПродукция.Ссылка.ПометкаУдаления = ЛОЖЬ
```

В поле количество для всеъ строк, все равно попадает только значение из условия, которое стоит первым. Поле Количество добавлено в ресурсы.

Добавил для вывода поля КоличествоОтгрузка и КоличествоПроизводство, чтобы было видно, что данные для заполнения в этих полях есть
---
Запрос, как минимум, неправильный, т.к. если соединение полное, то условие наложенное только на одну сторону даст только записи, где есть записи именно этой таблицы. Либо ЕСТЬNull надо использовать. А может и вообще вам ПОЛНОЕ и не нужно...

```1c
    ГДЕ
    СборкаЗапасовПродукция.ЗаказПокупателя.Проведен
    И СборкаЗапасовПродукция.ЗаказПокупателя.ПометкаУдаления = ЛОЖЬ
    И СборкаЗапасовПродукция.ЗаказПокупателя <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
    И СборкаЗапасовПродукция.Ссылка.Проведен
    И СборкаЗапасовПродукция.Ссылка.ПометкаУдаления = ЛОЖЬ
```

Собственно, это все не очень грамотно. Условия явно избыточны, как минимум. Начиная с того, что проведенный документ в норме не может быть помечен на удаление.
---
Вы правы, в условиях пометку удаления убрал, соединение сделал ЛЕВОЕ. Для первых указазал группировку

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

    СГРУППИРОВАТЬ ПО
    ОтчетОПереработкеПродукция.Номенклатура,
    ОтчетОПереработкеПродукция.Ссылка,
    ОтчетОПереработкеПродукция.Количество,
    ОтчетОПереработкеПродукция.Ссылка.ЗаказПокупателя

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    РасходнаяНакладнаяЗапасы.Ссылка,
    РасходнаяНакладнаяЗапасы.Номенклатура,
    РасходнаяНакладнаяЗапасы.Количество,
    РасходнаяНакладнаяЗапасы.Заказ
    ИЗ
    Документ.РасходнаяНакладная.Запасы КАК РасходнаяНакладнаяЗапасы
    ГДЕ
    РасходнаяНакладнаяЗапасы.Заказ.Проведен
    И РасходнаяНакладнаяЗапасы.Заказ <> ЗНАЧЕНИЕ(Документ.ЗаказПокупателя.ПустаяСсылка)
    И РасходнаяНакладнаяЗапасы.Ссылка.Проведен

    СГРУППИРОВАТЬ ПО
    РасходнаяНакладнаяЗапасы.Номенклатура,
    РасходнаяНакладнаяЗапасы.Ссылка,
    РасходнаяНакладнаяЗапасы.Количество,
    РасходнаяНакладнаяЗапасы.Заказ
    ;

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

В поле количество все равно выводится значение, которое указано в первой конструкции КОГДА .... ТОГДА

Условие задачи: вывести количество (в один столбец, в зависимости от типа документа в строке) и посчитать Остаток произведенной продукции по методу ФИФО из ТЧ документов СборкаЗапасов (документ производства) и РасходнаяНакладная+ОтчетОПереработке (документ отгрузки).
Вид отчет должен принимать:
 Документ.ЗаказПокупателя Колтчество (шт) Остаток (шт)
---Номенклатура
-------Документ.Производства
-------------Документ.Отгрузки
---
Нужно брать из сборки, если нет количества?
я бы это тоже в запрос написал, и использовал ЕСТЬNull
---
Насколько понял Ваш вопрос, если в документе отгрузки (РасходнаяНакладная или ОтчетОПереработке) нет позиции номенклатуры с заполненным количеством, то в поле Количество должно быть пустое значение - согласен, в запрос нужно добавить проверку на Null.
На примере, котором я проверяю количество заполнено в ТЧ документов, но значение в это поле попадает то, которое указано в первом КОГДА ... ТОГДА, т.е. к примеру:

Заказ Покупателя № 1
----Сборка Запасов № 1(Сапоги 100шт)
----Расходная Накладная № 1(Сапоги 20шт)
----Сборка Запасов № 2(Сапоги 200шт)

При условии в выражении для поля Количество:

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

Выводит отчет: Количество шт
Заказ Покупателя № 1
--Сапоги
----Сборка Запасов № 1--------------------------- 20
----Расходная Накладная № 1------------------- 20
----Сборка Запасов № 2 ---------------------------20

При условии в выражении для поля Количество:

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

Выводит отчет: Количество шт
Заказ Покупателя № 1
--Сапоги
----Сборка Запасов № 1---------------------------100
----Расходная Накладная № 1 ----------------- 100
----Сборка Запасов № 2 ---------------------------200
---
ну через тип не особо корректно это проверять. В общем, вы не до конца понимаете, как это должно у вас работать.
Подумайте, откуда Null берется, и что происходит, если в отгрузке нету соответствующей записи.
И вычисляйте это поле в запросе. Незачем наружу выносить - хз, что там с ним происходит.
---
На данном конкретном примере Null не откуда не берется. То, что нужна провера - это понятно. Проблема в самом условии для поля Количество, оба условия верны. Вопрос как реализовать вывод количества из ТЧ того документа, который выводится в строке (через вычисляемые поля).
---
Вычислил поле Количество по тому же условию в запросе - результат не изменился. Неправильно составлено условие (оба условия верны, выводится значение которое указано первым в условии)
(10)
---
Скажу прямее, если при соединении "Справа" нету соответствующей записи (т.е. нету отгрузки), то в поле КоличествоОтгрузка будет Null - вот на него и проверяйте.
(11) если выводит то, которое первое, значит у вас оба сравнения возвращают Истина. А почему бы и нет? Если отгрузка есть, то так и должно быть.
Ваше условие вообще лишено смысла - документ отгрузки всегда имеет тип РасходнаяНакладная, а производство - тип "СборкаЗапасов"
---
Ваше условие вообще лишено смысла - документ отгрузки всегда имеет тип РасходнаяНакладная, а производство - тип "СборкаЗапасов"
Я это понимаю и в этом и затык (пункт 1 этой темы поэтому и создал). Как сделать корректное условие, чтобы в поле Количество выводилось количество из ТЧ документа, который в строке.
---
При условии для поля Количество:

```1c
    ВЫБОР
    КОГДА ЗначениеЗаполнено(КоличествоОтгрузка) ТОГДА КоличествоОтгрузка
    КОГДА ЗначениеЗаполнено(КоличествоПроизводство) ТОГДА КоличествоПроизводство
    КОНЕЦ
```

Выполняются оба условия - выводится значение из первого условия.

При условии для поля Количество:

```1c
    ВЫБОР
    КОГДА КоличествоОтгрузка = NULL ТОГДА КоличествоПроизводство
    КОГДА КоличествоПроизводство = NULL ТОГДА КоличествоОтгрузка
    КОНЕЦ
```

Поле Количество пустое (не выполняется ни одно из условий)
---
выводилось количество из ТЧ документа, который в строке.
Извините, но это фраза не доступна моему пониманию :)
Вам нужно сформулировать задачу, и ответ придет сам собой.
(13)
---
Задача уже сформулирована, ответ сам собой не приходит) тема и создана здесь по этой причине
---
Возможно, вам нужно найти человека, который вас понимает...)
---
да вроде русским языком пишу, таблицы к примеру прикладывал, текстовое описание задачи предоставил множество раз....

Совсем простыми словами:

Документ А его количество Б
Документ С его количество Д

Нужно получить:

Документ----------Количество
А ----------------------------Б
С----------------------------Д

По условиям, которые множество раз приводил выше и которые неправильные получается таблица:
Либо:
Документ----------Количество
А ----------------------------Б
С----------------------------Б

Либо:
Документ----------Количество
А ----------------------------Д
С----------------------------Д
---
В вашем запросе документы трех типов. От того, не понятно, что вы называете A, а что C. Пример без типизации очень сложно привязать к вашему коду. Лучше в том виде, в каком запрос, и чтобы было понятно, что какому псевдониму соответствует.
---
Документ Производство его количество 8684
Документ РасходнаяНакладная его количество 19008

Нужно получить:

Документ-------------------------------------Количество
Производство --------------------------------------8684
РасходнаяНакладная----------------------------19008

При условии ниже - поле количество пустое

```1c
    ВЫБОР
    КОГДА КоличествоОтгрузка = NULL ТОГДА КоличествоПроизводство
    КОГДА КоличествоПроизводство = NULL ТОГДА КоличествоОтгрузка
    КОНЕЦ
```

При условии ниже - в поле количество выводится то значение, которое указано в 1м условии (оба условия верны).
CODE]ВЫБОР
КОГДА ЗначениеЗаполнено(КоличествоОтгрузка) ТОГДА КоличествоОтгрузка
КОГДА ЗначениеЗаполнено(КоличествоПроизводство) ТОГДА КоличествоПроизводство
КОНЕЦ[/1C-CODE]

Либо:
Документ-------------------------------------------Количество
Производство --------------------------------------19008
РасходнаяНакладная----------------------------19008

Либо:
Документ-----------------------------------------Количество
Производство --------------------------------------8684
РасходнаяНакладная----------------------------8684
---
Документ Производство - это вы что имеете в виду? Называйте вещи своими именами - либо как правильное имя типа документа, либо синоним поля в запросе. Также, я ваши примеры не понимаю - это у вас в одной вообще строке, или в разных.
Забудьте вы про условия свои, они не имеют отношения к формулировании задачи.
---
Входные данные:
СсылкаПроизводство -------КоличествоПроизводство 8684
СсылкаОтгрузка-------------КоличествоОтгрузка 19008

Нужно получить:

Документ---------------------------------------------------Количество
СсылкаПроизводство --------------------------------------8684
СсылкаОтгрузка----------------------------------------------19008

Вывести нужно по группировке:
СсылкаПроизводство
------------СсылкаОтгрузка

Пробовал выводить без вложенной группировки в виде:
СсылкаПроизводство
СсылкаОтгрузка

Результат тот же (неверный)
---
СсылкаПроизводство Понял.
Вам нужно, чтобы СКД выводило в разных группировках данные из разных полей запроса.
Я бы не стал такое делать вообще, а просто выводил их в разных колонках, и итоги бы, заодно еще можно бы было сделать.
Теоретически что-то такое возможно https://blagin.ru/1s-skd-summirovanie-znachenij-na-razlichnyx-urovnyax-gruppirovok/
Еще есть вариант - не использовать СКД. Т.к. СКД в данном случае вряд ли будет использоваться для вариантивности, быстрее отчет с макетом нарисовать. Это если действительно очень надо это все в одной колонке.
---
Задача решилась гораздо проще. Расчет поля Количество убрал из запроса, добавил его в вычисляемые поля с пустым значением. В ресурсах его добавил дважды с расчетом по соответствующим полям. Значения выводит верные.
Спасибо за участие в моем вопросе!
---
ТИПЗНАЧЕНИЯ(СсылкаПроизводство) = ТИП("Документ.СборкаЗапасов") - это берется из таблицы документа сборка, там не может быть другого значения.
А вот ссылка отгрузка у вас действительно может быть либо реализацией либо ОтчетОПереработке

Как бы то ни было, вы просто не понимаете, что делаете. Рекомендую поверить моему опыту, и разобраться.

Распишите себе в экселе примеры, что получает первый запрос (во временную таблицу), что результирующий, и все станет понятно.
---
я уже другие условия применял, все равно не могу добиться нужного результата
---
я не до конца понимаю вашу задачу, но скорее всего, стоит СГРУППИРОВАТЬ данные в первых запросах. Т.к. бывают ситуации, когда одна номенклатура в заказе внесена двумя строками - в этом случае получите некорректные данные без группировки.
---
Второй вопрос решил, опираясь на статью https://infostart.ru/1c/articles/68225/