Добрый день, на писал запрос только вот понять не могу выдаёт всё в двойне.

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

Поставка:
12345 Ведро 4
12345 Антисептик 46

Спецификация:
12345 Ведро
12345 Антисептик

по НомерКонтракта

Дает набор:
Спецификация(12345), Спецификация(Ведро), Поставка(12345), Поставка(Ведро), Поставка(4)
Спецификация(12345), Спецификация(Ведро), Поставка(12345), Поставка(Антисептик), Поставка(46)
Спецификация(12345), Спецификация(Антисептик), Поставка(12345), Поставка(Ведро), Поставка(4)
Спецификация(12345), Спецификация(Антисептик), Поставка(12345), Поставка(Антисептик) , Поставка(46)

А если соединить по Номеру контракта и номенклатуре, получится набор:
Спецификация(12345), Спецификация(Ведро), Поставка(12345), Поставка(Ведро), Поставка(4)
Спецификация(12345), Спецификация(Антисептик), Поставка(12345), Поставка(Антисептик) , Поставка(46)
---
в соединении условия связи по всем измерениям сделайте, или по более точным измерениям.
---
Это как не совсем понял ?
---
у в СпецификацияКонтракта номер контракта и наименование контракта это по идее должны быть измерения.
 в данном случае вы обращаетесь что на один номер контракта в то время когда на наименования контракта разные остатки, т.е. обычно левое вхождение у вас идет по номеру и конечно будет по две строки из ваших условий
---
У меня измерения другие это как то влияет на запрос ?
---
из РС Поставка вы можете кроме остатка получить еще то что скрывается под эти ->"СпецификацияКонтрактаНаименование" только в поставке?
---
"СпецификацияКонтрактаНаименование" только в поставке э-э-э а при чём тут поставка это из таблицы спецификация контракта.
---
```1c
    ИЗ
    РегистрСведений.ВыбраныйНомерКонтракта КАК ВыбраныйНомерКонтракта
    ЛЕВОЕ СОЕДИНЕНИЕ
    РегистрСведений.СпецификацияКонтракта КАК СпецификацияКонтракта
    ПО
    (ВыбраныйНомерКонтракта.КлючевоеПоле = ВремТабПоставкаОстаток.КлючевоеПоле)
    ЛЕВОЕ СОЕДИНЕНИЕ
    ВремТабПоставкаОстаток КАК ВремТабПоставкаОстаток
    ПО
    (ВыбраныйНомерКонтракта.ВыбраныйНомерКонтрактаДляФорм = ВремТабПоставкаОстаток.ПоставкаНомерКонтракта)

    (11)
```
---
Предлагаете присоединить к ВыбраныйНомерКонтракта а не к спецификации, я так уже делал и более того перебрал все соединения результат тот же. Я хочу присоединить к к одной таблице 2 и если присоединять их по отдельности то всё в прядке, но только все вместе начинает двоиться.
---
не знаю какая у вас конфигурация, но если данных немного, то можно сделать топорным способом, добавьте в результирующий запрос ключевое слово РАЗЛИЧНЫЕ
---
Конфигурация 8.3. Я больше склоняюсь к ОБЪЕДИНИТЬ ВСЁ может поможет.
---
Конфигурация 8.3 - платформа, а конфигурация?
---
1С Предприятие.
---
а точнее, бухгалтерия, зуп, ут или своя разработка?
---
Своя разработка.
---
```1c
    ИЗ
    РегистрСведений.СпецификацияКонтракта КАК СпецификацияКонтракта,
    РегистрСведений.ВыбраныйНомерКонтракта КАК ВыбраныйНомерКонтракта
    ЛЕВОЕ СОЕДИНЕНИЕ
    ВремТабПоставкаОстаток КАК ВремТабПоставкаОстаток
```

У вас в предложении ИЗ использован оператор "," (_запятая_). Это значит, что Вы перемножили две таблицы РегистрСведений.СпецификацияКонтракта и РегистрСведений.ВыбраныйНомерКонтракта между собой. Т.е. на каждую строчку первой приходится каждая строчка второй таблицы.
---
Если убрать запятую появляется ошибка.
---
Совсем убрать ее нельзя. Ее можно заменить на другой оператор. Всего в 1С-ке бинарных операторов с таблицами бывает 5:
1.запятая
2.внутреннее соединение
3.полное соединение
4.левое соединение
5.правое соединение
Вы уж нагуглите сами чем они отличаются.

В теоретических книжках
1.coma
2.inner join
3.full outer join
4.left outer join
5.right outer join
---
Если добавить ещё одно левое соединение так же раздваивает .
---
Попробовал со всеми соединениями всё так же.
---
Тип соединения сам по себе - это не средство от дадвоений. Любого вида соединения могу вызвать задвоения. Все зависит от содержимого соединяемых таблиц.
---
Непонятна логика первого запроса. Плюс не виден смысл группировки без использования агрегатных функций.
Позволю себе предположить, что текст запроса должен быть примерно такой:

```1c
    ВЫБРАТЬ
    ВыбраныйНомерКонтракта.ВыбраныйНомерКонтрактаДляФорм КАК ВыбраныйНомерКонтрактаДляФорм,
    СУММА(ЕСТЬNULL(Поставка.Осталось,0)) КАК Осталось
    ПОМЕСТИТЬ
    ВремТабПоставкаОстаток
    ИЗ
    РегистрСведений.ВыбраныйНомерКонтракта КАК ВыбраныйНомерКонтракта
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Поставка КАК Поставка
    ПО
    Поставка.ПоставкаНомерКонтракта = ВыбраныйНомерКонтракта.ВыбраныйНомерКонтрактаДляФорм
    СГРУППИРОВАТЬ ПО
    ВыбраныйНомерКонтракта.ВыбраныйНомерКонтрактаДляФорм,
    Поставка.ПоставкаНомерКонтракта
    ;
```

Тогда это будет похоже на остаток. Можно добавить условие ИМЕЮЩИЕ СУММА(ЕСТЬNULL(Поставка.Осталось,0)) <> 0, чтобы получить только ненулевые остатки.

Второй запрос можно упростить:

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

Тут можно заменить левое соединение на внутреннее и получить только ненулевые остатки.
Все зависит от назначения запроса, которое не раскрыто.
---
В смысле не раскрыто я хочу получить данные из РС Остатки и добавить их к данным СпецификацияКонтракта причём соединяю их по Номеру контракта. У меня куча запросов с левым соединением и просто, но не один не двоил с это ересью только сейчас столкнулся не как решить не могу. Правда в тех РС измерение только одно, а в РС Поставка 4 это может влиять ?
---
Чтобы получить все остатки из этого регистра по номеру контракта, достаточно вытащить ПоставкаНомерКонтракта и Сумма(Осталось), сгруппировавшись по ПоставкаНомерКонтракта.

```1c
    ВЫБРАТЬ
    Поставка.ПоставкаНомерКонтракта КАК ПоставкаНомерКонтракта ,
    СУММА(Поставка.Осталось) КАК Осталось
    ПОМЕСТИТЬ
    ВремТабПоставкаОстаток
    ИЗ
    РегистрСведений.Поставка КАК Поставка
    СГРУППИРОВАТЬ ПО
    Поставка.ПоставкаНомерКонтракта;
```

Очень специфическая структура регистра Поставка и назначение регистра ВыбраныйНомерКонтракта не очень понятно, потому и вопросы возникают...
---
Вот всё таки не понимаю я вас или вы меня, но почему СУММА(Поставка.Осталось) КАК Осталось мне же не надо суммировать, а просто вставить в колонки те значения, что есть в остатке это я уже так к подаче материала.
---
Да, есть такое дело. Пока стало понятно, какова цель, много времени прошло.

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

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

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

Но, опять же, такие вещи лучше делать не на рс, а на рн, это, во-первых, намного проще, т.к. всю логику возьмет на себя платформа, и, во-вторых, больше шансов получить ответы на вопросы, т.к. эта логика понятна сообществу...
---
И вот еще, кстати. Судя по всему, тут попытка получить остатки не в разрезе номера контракта, а в разрезе номера контракта и номенклатуры.
И тогда при соединении только по номеру контракта и получается такая картина.

Поставка:
12345 Ведро 4
12345 Антисептик 46

Спецификация:
12345 Ведро
12345 Антисептик

по НомерКонтракта

Дает набор:
Спецификация(12345), Спецификация(Ведро), Поставка(12345), Поставка(Ведро), Поставка(4)
Спецификация(12345), Спецификация(Ведро), Поставка(12345), Поставка(Антисептик), Поставка(46)
Спецификация(12345), Спецификация(Антисептик), Поставка(12345), Поставка(Ведро), Поставка(4)
Спецификация(12345), Спецификация(Антисептик), Поставка(12345), Поставка(Антисептик) , Поставка(46)

А если соединить по Номеру контракта и номенклатуре, получится набор:
Спецификация(12345), Спецификация(Ведро), Поставка(12345), Поставка(Ведро), Поставка(4)
Спецификация(12345), Спецификация(Антисептик), Поставка(12345), Поставка(Антисептик) , Поставка(46)
---
Ну вот дело сдвинулось с мёртвой точки только уточню, что так А если соединить по Номеру контракта и номенклатуре, получится набор у меня поля остаток вышли пустыми соединил по номенклатуре спецификации и номенклатуре поставка, всё появилось.
---
если соединять только по номенклатуре, можно зацепить несколько договоров с одинаковой номенклатурой и получить совсем не то, что хотелось. Лучше осознать, почему по полям идентичного назначения связаться не получается. М.б. в запросе косяк какой, или вообще типы полей разные?..
---
Почитал обсуждение. Время автора намного рациональнее потратить на изучения языка запросов SQL. Или поменять сферу деятельности...