Есть две ТЧ, как их объединить запросом?

1ТЧ
Наименование НовоеНаименование Кол
     тест 123 1
      нов 2

2ТЧ
Наименование НовоеНаименование Кол
     тест 1
     нов 2

мне нужно чтобы это объединилось в две строки и если заполнено новоеНаименование, подставлялось оно

Итог:
123 1
нов 2
---
Нет.

```1c
    ВЫБРАТЬ
    КоммерческоеПредложениеКлиентуТовары.Номенклатура КАК Номенклатура,
    КоммерческоеПредложениеКлиентуТовары.Количество КАК Количество,
    КоммерческоеПредложениеКлиентуТовары.НовоеНаименование КАК НаимКонтр
    ПОМЕСТИТЬ КП
    ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.КоммерческоеПредложениеКлиенту.Товары КАК КоммерческоеПредложениеКлиентуТовары
    ПО (ЗаказКлиента.ДокументОснование = КоммерческоеПредложениеКлиентуТовары.Ссылка)
    ГДЕ
    ЗаказКлиента.Ссылка = &Ссылка
    ;

    ////////////////////////////////////////////////////////////­­////////////////////
    ВЫБРАТЬ
    Выбор
    Когда КП.НаимКонтр Есть Null Тогда РесурсныеСпецификацииМатериалыИУслуги.Номенклатура
    Когда КП.НаимКонтр <> " Тогда КП.НаимКонтр
    Иначе КП.Номенклатура
    Конец КАК Номенклатура,
    ЕстьNull(КП.Количество,РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок) КАК Количество
    ИЗ
    Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
    ПОЛНОЕ СОЕДИНЕНИЕ КП КАК КП
    ПО РесурсныеСпецификацииМатериалыИУслуги.Номенклатура = КП.Номенклатура
    И РесурсныеСпецификацииМатериалыИУслуги.Номенклатура.Артикул = КП.Артикул
    ГДЕ
    РесурсныеСпецификацииМатериалыИУслуги.Ссылка.Основание = &Ссылка
```
---
Полное соединение таблиц по полю Наименование.
Выбирать так:

```1c
    Выбор
    Когда ТЧ1.НовоеНаименование Есть Null Тогда ТЧ2.Наименование
    Когда ТЧ1.НовоеНаименование <> " Тогда ТЧ1.НовоеНаименование
    Иначе ТЧ1.Наименование
    Конец,
    ЕстьNull(ТЧ1.Количество,ТЧ2.Количество)
```
---
Так?

```1c
    ВЫБРАТЬ
    КоммерческоеПредложениеКлиентуТовары.Номенклатура КАК Номенклатура,
    КоммерческоеПредложениеКлиентуТовары.Количество КАК Количество,
    КоммерческоеПредложениеКлиентуТовары.НовоеНаименование КАК НаимКонтр
    ПОМЕСТИТЬ КП
    ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.КоммерческоеПредложениеКлиенту.Товары КАК КоммерческоеПредложениеКлиентуТовары
    ПО (ЗаказКлиента.ДокументОснование = КоммерческоеПредложениеКлиентуТовары.Ссылка)
    ГДЕ
    ЗаказКлиента.Ссылка = &Ссылка
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВЫБОР
    КОГДА КП.НаимКонтр = "
    ТОГДА КП.Номенклатура
    КОГДА КП.НаимКонтр <> "
    ТОГДА КП.НаимКонтр
    ИНАЧЕ РесурсныеСпецификацииМатериалыИУслуги.Номенклатура
    КОНЕЦ КАК Номенклатура,
    ВЫБОР
    КОГДА КП.НаимКонтр = "
    ТОГДА КП.Количество
    КОГДА КП.НаимКонтр <> "
    ТОГДА КП.Количество
    ИНАЧЕ РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок
    КОНЕЦ КАК Количество
    ИЗ
    Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
    ПОЛНОЕ СОЕДИНЕНИЕ КП КАК КП
    ПО РесурсныеСпецификацииМатериалыИУслуги.Номенклатура = КП.Номенклатура
    И РесурсныеСпецификацииМатериалыИУслуги.Номенклатура.Артикул = КП.Артикул
    ГДЕ
    РесурсныеСпецификацииМатериалыИУслуги.Ссылка.Основание = &Ссылка
```
---
Нет.

```1c
    ВЫБРАТЬ
    КоммерческоеПредложениеКлиентуТовары.Номенклатура КАК Номенклатура,
    КоммерческоеПредложениеКлиентуТовары.Количество КАК Количество,
    КоммерческоеПредложениеКлиентуТовары.НовоеНаименование КАК НаимКонтр
    ПОМЕСТИТЬ КП
    ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.КоммерческоеПредложениеКлиенту.Товары КАК КоммерческоеПредложениеКлиентуТовары
    ПО (ЗаказКлиента.ДокументОснование = КоммерческоеПредложениеКлиентуТовары.Ссылка)
    ГДЕ
    ЗаказКлиента.Ссылка = &Ссылка
    ;

    ////////////////////////////////////////////////////////////­­////////////////////
    ВЫБРАТЬ
    Выбор
    Когда КП.НаимКонтр Есть Null Тогда РесурсныеСпецификацииМатериалыИУслуги.Номенклатура
    Когда КП.НаимКонтр <> " Тогда КП.НаимКонтр
    Иначе КП.Номенклатура
    Конец КАК Номенклатура,
    ЕстьNull(КП.Количество,РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок) КАК Количество
    ИЗ
    Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
    ПОЛНОЕ СОЕДИНЕНИЕ КП КАК КП
    ПО РесурсныеСпецификацииМатериалыИУслуги.Номенклатура = КП.Номенклатура
    И РесурсныеСпецификацииМатериалыИУслуги.Номенклатура.Артикул = КП.Артикул
    ГДЕ
    РесурсныеСпецификацииМатериалыИУслуги.Ссылка.Основание = &Ссылка
```
---
спасибо Вам огромное!
---
(26)
вот тут еще переделала

```1c
    ВЫБОР
    КОГДА КП.Количество ЕСТЬ NULL
    ТОГДА РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок
    ИНАЧЕ КП.Количество
    КОНЕЦ КАК Количество,
```
---
Для объединения двух таблиц в запросе на языке программирования 1С, вы можете использовать функцию объединения JOIN. В вашем случае, чтобы подставить новое наименование вместо старого, вы можете использовать операторы CASE WHEN.

Пример запроса на языке программирования 1С может выглядеть следующим образом:

Копировать

```1c
    Запрос = Новый Запрос;

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

ВЫПОЛНИТЬ Запрос;
Этот запрос объединяет две таблицы 1ТЧ и 2ТЧ с помощью внутреннего соединения JOIN, где значения в столбце "Наименование" совпадают. Затем, с помощью оператора CASE WHEN, выбирается новое наименование, если оно заполнено, иначе выбирается старое наименование. Результатом запроса будут две строки, соответствующие вашим требованиям:

Копировать
Наименование | Кол
--------------
123 | 1
нов | 2

З.Ы. Чат гпт
---
Спасибо большое!
---
но когда внутренне соединение запрос уберет строки если водной из таблиц их будет больше чем в другой
---
Это вопрос для ИИ - пусть галлюцинирует и врет.

Ведь в вопросе все понятно, даже есть скрины табличек и результата для наглядности.
---
и результата для наглядности.
проще для наглядности добавить таблички, чем пытаться долго долго объяснить что нужно и, не всегда, это приводит к ответу.
---
Потому что ИИ пока не знает что объединение, это UNION а не JOIN (соединение). :-)

Из описания в (1) не понятно где заканчивается старое наименование и начинается новое. Хотя бы запятые проставить не мешало бы.
---
В первой таблице

Наименование | НовоеНаименование | Кол
--------------
Стол | Стол123 | 1
Стул | | 2
Табурет | | 1

Во второй таблице

Наименование | НовоеНаименование | Кол
--------------
Стол | | 1
Стул | | 2
---
А результат какой должен быть? И количество совпадает в первой и второй ТЧ - не понятно будет откуда брать надо будет.
---
В результате нужно взять всю первую таблицу, если в ней заполнено НовоеНаименование - взять его вместо наименования и присоединить вторую таблицу, если в ней есть позиции, которых нет в первой таблице
---
А с количеством что делать? Оно же может быть разное.
Для вашего пример результат нарисуете?
---
Для вашего пример результат нарисуете?
количество беру из первой таблицы. А когда строки добавляю из второй, то количество оттуда.
Основная - это первая таблица, из нее берем все. Потом уже смотрим вторую таблицу и сравниваем с певой, если совпадения есть, то их нафиг. а то, чего нет в первой добавляем
---
Это обычный UNION без ALL.
---
я понимаю. и когда я объединяю без нового наименования то все ок. Добавляю через выбор когда новое наименование, то добавляется строчка
---
и таблица получается вот такая:

Наименование | НовоеНаименование | Кол
--------------
Стол123 | | 1
Стол | | 1
Стул | | 2
Табурет | | 1
---
Что-то типа такого.....
```1c
    Выбрать
    Выбор Когда т.НовоеНаименование <> " Тогда т.НовоеНаименование Иначе т.Наименование конец как Наименование
    ,тКол
    ИЗ тч1 как т

    UNION

    Выбрать
    Выбор Когда т.НовоеНаименование <> " Тогда т.НовоеНаименование Иначе т.Наименование конец как Наименование
    ,тКол
    ИЗ тч2 как т
```
---
UNION

Выбрать
      Выбор Когда т.НовоеНаименование <> "" Тогда т.НовоеНаименование Иначе т.Наименование конец как Наименование
     ,тКол
ИЗ тч2 как т

во второй таблице нет поля НовоеНаименование
---
Значит пустышку и добавьте. И Выбор когда можно не брать, так как его нет.
 "" КАК НовоеНаименование

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

    ОБЪЕДИНИТЬ

    ВЫБРАТЬ
    РесурсныеСпецификацииМатериалыИУслуги.Номенклатура,
    РесурсныеСпецификацииМатериалыИУслуги.Номенклатура.Артикул,
    РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок,
    "
    ИЗ
    Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
    ГДЕ
    РесурсныеСпецификацииМатериалыИУслуги.Основание = &Ссылка
```
---
Вот так делаете?
---
да
---
Вы же видите что запрос дает результат совпадающий с Вашими ожиданиями?
---
А почему примерно не так?:
```1c
    ВЫБРАТЬ
    т.Номенклатура КАК Номенклатура,
    т.Номенклатура.Артикул КАК Артикул,
    т.Количество КАК Количество,
    т.Новоенаименование КАК НаимКонтр
    ИЗ
    Документ.КоммерческоеПредложениеКлиенту.Товары КАК т
    ГДЕ
    т.Ссылка В (Выбрать т1.ДокументОснование ИЗ Документ.ЗаказКлиента КАК т1 ГДЕ т1.Ссыдка = &Ссылка)
```
---
потому что часть позиций в ресурсной
---
А при чет тут таблица "РесурсныеСпецификацииМатериалыИУслуги"? Она уже у Вас ниже в другой таблице. И она никак не относится к документу коммерческого предложения.
---
Зачем же левое соединение к документу "ЗаказКлиента", документ "КоммерческоеПредложениеКлиенту"?
Почему не как в [23]?
---
точно! переделаю, спасибо большое))