Всем привет. Ломаю голову, как на форму списка документов Поступления товаров и услуг вывести поле НДС, содержащее в себе сумму НДС по всей табличной части документа.

Затык возникает тогда, когда в документе есть две ТЧ - Товары и Услуги.

Создаю вложенный запрос (в запросе динамического списка), добавляю в него обе ТЧ с суммой НДСа, группирую оба запроса по ссылке, объединяю в один, делаю левое соединение с основной таблицей динамического списка и вроде бы все работает, но если в документе появляются сразу две табличные части - Товары и Услуги, то форма вылетает с ошибкой

"обнаружено дублирование ключевых значений в колонках ссылка"

В консоли запросов документ, соответственно, задваивается - один идет с суммой НДС по Товарам, другой - по Услугам.

Буду рад помощи.
---
вот аккуратненько свой ВложенныйЗапрос, замените на этот

```1c
    (ВЫБРАТЬ
    ТабСуммы.Ссылка,
    Сумма(ТабСуммы.СуммаНДС) как СуммаНДС
    Из
    (ВЫБРАТЬ
    Док.Ссылка,
    Док.СуммаНДС
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК Док

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    Док.Ссылка,
    Док.СуммаНДС
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Услуги КАК Док) ТабСуммы
    Сгруппировать по
    ТабСуммы.ссылка) ВложенныйЗапрос
```
---
Ну... у тебя два подзапроса в пакете. И че ты с ними делаешь?
---
Запрос??? Что мешает просто сложить итог по колонкам двух таблиц?
а как в запросе динамического списка сделать сложение итогов таблицы?
Поместить сумму итогов в отдельный реквизит и вывести на форму - не вариант, потому что придется делать перезапись всего массива документов.
---
текст своего дин.запроса выложите
---
ВЫБРАТЬ
 ВЫБОР
  КОГДА ДокументПоступлениеТоваровУслуг.РучнаяКорректировка = ИСТИНА
   ТОГДА ВЫБОР
     КОГДА ДокументПоступлениеТоваровУслуг.ПометкаУдаления = ИСТИНА
      ТОГДА 10
     КОГДА ДокументПоступлениеТоваровУслуг.Проведен = ЛОЖЬ
      ТОГДА 9
     ИНАЧЕ 8
    КОНЕЦ
  ИНАЧЕ ВЫБОР
    КОГДА ДокументПоступлениеТоваровУслуг.ПометкаУдаления = ИСТИНА
     ТОГДА 2
    КОГДА ДокументПоступлениеТоваровУслуг.Проведен = ИСТИНА
     ТОГДА 1
    ИНАЧЕ 0
   КОНЕЦ
 КОНЕЦ КАК СостояниеДокумента,
 ДокументПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
 ДокументПоступлениеТоваровУслуг.ПометкаУдаления КАК ПометкаУдаления,
 ДокументПоступлениеТоваровУслуг.Дата КАК Дата,
 ДокументПоступлениеТоваровУслуг.Номер КАК Номер,
 ДокументПоступлениеТоваровУслуг.Проведен КАК Проведен,
 ДокументПоступлениеТоваровУслуг.ВидОперации КАК ВидОперации,
 ДокументПоступлениеТоваровУслуг.Организация КАК Организация,
 ДокументПоступлениеТоваровУслуг.Склад КАК Склад,
 ДокументПоступлениеТоваровУслуг.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
 ДокументПоступлениеТоваровУслуг.Контрагент КАК Контрагент,
 ДокументПоступлениеТоваровУслуг.ДоговорКонтрагента КАК ДоговорКонтрагента,
 ДокументПоступлениеТоваровУслуг.СпособЗачетаАвансов КАК СпособЗачетаАвансов,
 ДокументПоступлениеТоваровУслуг.ВалютаДокумента КАК ВалютаДокумента,
 ДокументПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерВходящегоДокумента,
 ДокументПоступлениеТоваровУслуг.ДатаВходящегоДокумента КАК ДатаВходящегоДокумента,
 ДокументПоступлениеТоваровУслуг.Грузоотправитель КАК Грузоотправитель,
 ДокументПоступлениеТоваровУслуг.Грузополучатель КАК Грузополучатель,
 ДокументПоступлениеТоваровУслуг.Ответственный КАК Ответственный,
 ДокументПоступлениеТоваровУслуг.Комментарий КАК Комментарий,
 ДокументПоступлениеТоваровУслуг.СуммаДокумента КАК СуммаДокумента,
 ДокументПоступлениеТоваровУслуг.ТипЦен КАК ТипЦен,
 ДокументПоступлениеТоваровУслуг.РучнаяКорректировка КАК РучнаяКорректировка,
 СостоянияЭД.СостояниеЭДО КАК СостояниеЭДО,
 ВЫБОР
  КОГДА СтатусыДокументов.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДокументовПоступления.ОригиналПолучен)
   ТОГДА ИСТИНА
  ИНАЧЕ ЛОЖЬ
 КОНЕЦ КАК Оригинал,
 ВЫБОР
  КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL
   ТОГДА ЛОЖЬ
  ИНАЧЕ ИСТИНА
 КОНЕЦ КАК СодержитНекорректныхКонтрагентов,
 ВЫБОР
  КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
   ТОГДА 1
  КОГДА НаличиеФайлов.ЕстьФайлы
   ТОГДА 0
  ИНАЧЕ 1
 КОНЕЦ КАК ЕстьФайлы,
 ЕСТЬNULL(СтатусыДокументов.СтатусСчетаФактуры, ЗНАЧЕНИЕ(Перечисление.СтатусыСчетаФактуры.ПустаяСсылка)) КАК СчетФактура,
 ВЫБОР
  КОГДА СтатусыДокументов.СтатусОригиналаСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.СтатусыДокументовПоступления.ОригиналПолучен)
   ТОГДА ИСТИНА
  ИНАЧЕ ЛОЖЬ
 КОНЕЦ КАК ОригиналСчетаФактуры,
 ВложенныйЗапрос.СуммаНДС КАК СуммаНДС
ИЗ
 Документ.ПоступлениеТоваровУслуг КАК ДокументПоступлениеТоваровУслуг
  {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыДокументов КАК СтатусыДокументов
  ПО ДокументПоступлениеТоваровУслуг.Организация = СтатусыДокументов.Организация
   И ДокументПоступлениеТоваровУслуг.Ссылка = СтатусыДокументов.Документ}
  {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
  ПО ДокументПоступлениеТоваровУслуг.Ссылка = СостоянияЭД.СсылкаНаОбъект}
  {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов
  ПО ДокументПоступлениеТоваровУслуг.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ
   И (&ИспользованиеПроверкиВозможно)}
  {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
  ПО ДокументПоступлениеТоваровУслуг.Ссылка = НаличиеФайлов.ОбъектСФайлами}
  ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ
   ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
   СУММА(ПоступлениеТоваровУслугТовары.СуммаНДС) КАК СуммаНДС
  ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары

  СГРУППИРОВАТЬ ПО
   ПоступлениеТоваровУслугТовары.Ссылка

  ОБЪЕДИНИТЬ ВСЕ

  ВЫБРАТЬ РАЗЛИЧНЫЕ
   ПоступлениеТоваровУслугУслуги.Ссылка,
   СУММА(ПоступлениеТоваровУслугУслуги.СуммаНДС)
  ИЗ
   Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги

  СГРУППИРОВАТЬ ПО
   ПоступлениеТоваровУслугУслуги.Ссылка) КАК ВложенныйЗапрос
  ПО ДокументПоступлениеТоваровУслуг.Ссылка = ВложенныйЗапрос.Ссылка
---
При объединении будут дубли. Есть вот такой вариант. Не скажу насколько он производителен, но дублей быть не должно.

```1c
    "ВЫБРАТЬ
    | ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка,
    | СУММА(ПоступлениеТоваровУслугТовары.СуммаНДС) КАК СуммаНДС
    |ПОМЕСТИТЬ НДСПоТоварам
    |ИЗ
    | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    |
    |СГРУППИРОВАТЬ ПО
    | ПоступлениеТоваровУслугТовары.Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ПоступлениеТоваровУслугУслуги.Ссылка КАК Ссылка,
    | СУММА(ПоступлениеТоваровУслугУслуги.СуммаНДС) КАК СуммаНДС
    |ПОМЕСТИТЬ НДСПоУслугам
    |ИЗ
    | Документ.ПоступлениеТоваровУслуг.Услуги КАК ПоступлениеТоваровУслугУслуги
    |
    |СГРУППИРОВАТЬ ПО
    | ПоступлениеТоваровУслугУслуги.Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | ЕСТЬNULL(НДСПоТоварам.Ссылка, НДСПоУслугам.Ссылка) КАК Ссылка,
    | ЕСТЬNULL(НДСПоТоварам.СуммаНДС, 0) + ЕСТЬNULL(НДСПоУслугам.СуммаНДС, 0) КАК СуммаНДС
    |ИЗ
    | НДСПоТоварам КАК НДСПоТоварам
    | ПОЛНОЕ СОЕДИНЕНИЕ НДСПоУслугам КАК НДСПоУслугам
    | ПО (НДСПоТоварам.Ссылка = НДСПоУслугам.Ссылка)"
```

Это текст вложенного запроса. Потом цепляешь его к динамическому.
---
вот аккуратненько свой ВложенныйЗапрос, замените на этот

```1c
    (ВЫБРАТЬ
    ТабСуммы.Ссылка,
    Сумма(ТабСуммы.СуммаНДС) как СуммаНДС
    Из
    (ВЫБРАТЬ
    Док.Ссылка,
    Док.СуммаНДС
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК Док

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    Док.Ссылка,
    Док.СуммаНДС
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Услуги КАК Док) ТабСуммы
    Сгруппировать по
    ТабСуммы.ссылка) ВложенныйЗапрос
```
---
Спасибо!!!