Объединить в запросе

1. Qwert_23 30.11.23 09:55 Сейчас в теме
Есть две ТЧ, как их объединить запросом?

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

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

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

Итог:
123 1
нов 2
По теме из базы знаний
Найденные решения
32. Sashares 33 30.11.23 14:11 Сейчас в теме
(27)Нет.
ВЫБРАТЬ
    КоммерческоеПредложениеКлиентуТовары.Номенклатура КАК Номенклатура,
    КоммерческоеПредложениеКлиентуТовары.Количество КАК Количество,
    КоммерческоеПредложениеКлиентуТовары.НовоеНаименование КАК НаимКонтр
ПОМЕСТИТЬ КП
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.КоммерческоеПредложениеКлиенту.Товары КАК КоммерческоеПредложениеКлиентуТовары
        ПО (ЗаказКлиента.ДокументОснование = КоммерческоеПредложениеКлиентуТовары.Ссылка)
ГДЕ
    ЗаказКлиента.Ссылка = &Ссылка
;

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

Выбор 
Когда ТЧ1.НовоеНаименование Есть Null Тогда ТЧ2.Наименование
Когда ТЧ1.НовоеНаименование  <> "" Тогда ТЧ1.НовоеНаименование
Иначе ТЧ1.Наименование
Конец,
ЕстьNull(ТЧ1.Количество,ТЧ2.Количество)
27. Qwert_23 30.11.23 13:55 Сейчас в теме
(26) Так?

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЫБОР
		КОГДА КП.НаимКонтр = ""
			ТОГДА КП.Номенклатура
		КОГДА КП.НаимКонтр <> ""
			ТОГДА КП.НаимКонтр
		ИНАЧЕ РесурсныеСпецификацииМатериалыИУслуги.Номенклатура
	КОНЕЦ КАК Номенклатура,
	ВЫБОР
		КОГДА КП.НаимКонтр = ""
			ТОГДА КП.Количество
		КОГДА КП.НаимКонтр <> ""
			ТОГДА КП.Количество
		ИНАЧЕ РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок
	КОНЕЦ КАК Количество
ИЗ
	Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
		ПОЛНОЕ СОЕДИНЕНИЕ КП КАК КП
		ПО РесурсныеСпецификацииМатериалыИУслуги.Номенклатура = КП.Номенклатура
			И РесурсныеСпецификацииМатериалыИУслуги.Номенклатура.Артикул = КП.Артикул
ГДЕ
	РесурсныеСпецификацииМатериалыИУслуги.Ссылка.Основание = &Ссылка
Показать
32. Sashares 33 30.11.23 14:11 Сейчас в теме
(27)Нет.
ВЫБРАТЬ
    КоммерческоеПредложениеКлиентуТовары.Номенклатура КАК Номенклатура,
    КоммерческоеПредложениеКлиентуТовары.Количество КАК Количество,
    КоммерческоеПредложениеКлиентуТовары.НовоеНаименование КАК НаимКонтр
ПОМЕСТИТЬ КП
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.КоммерческоеПредложениеКлиенту.Товары КАК КоммерческоеПредложениеКлиентуТовары
        ПО (ЗаказКлиента.ДокументОснование = КоммерческоеПредложениеКлиентуТовары.Ссылка)
ГДЕ
    ЗаказКлиента.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
Выбор
Когда КП.НаимКонтр Есть Null Тогда РесурсныеСпецификацииМатериалыИУслуги.Номенклатура
Когда КП.НаимКонтр <> "" Тогда КП.НаимКонтр
Иначе КП.Номенклатура
Конец  КАК Номенклатура,  
ЕстьNull(КП.Количество,РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок)  КАК Количество
ИЗ
    Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
        ПОЛНОЕ СОЕДИНЕНИЕ КП КАК КП
        ПО РесурсныеСпецификацииМатериалыИУслуги.Номенклатура = КП.Номенклатура
            И РесурсныеСпецификацииМатериалыИУслуги.Номенклатура.Артикул = КП.Артикул
ГДЕ
    РесурсныеСпецификацииМатериалыИУслуги.Ссылка.Основание = &Ссылка
Показать
33. Qwert_23 30.11.23 14:14 Сейчас в теме
(32) спасибо Вам огромное!
28. Qwert_23 30.11.23 14:02 Сейчас в теме
(26)
(26)
вот тут еще переделала
ВЫБОР
		КОГДА КП.Количество ЕСТЬ NULL
			ТОГДА РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок
		ИНАЧЕ КП.Количество
	КОНЕЦ КАК Количество,
2. Oldsad 30.11.23 10:43 Сейчас в теме
Для объединения двух таблиц в запросе на языке программирования 1С, вы можете использовать функцию объединения JOIN. В вашем случае, чтобы подставить новое наименование вместо старого, вы можете использовать операторы CASE WHEN.

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

Копировать
Запрос = Новый Запрос;

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

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

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

З.Ы. Чат гпт
5. Qwert_23 30.11.23 10:47 Сейчас в теме
6. Qwert_23 30.11.23 11:15 Сейчас в теме
(2)но когда внутренне соединение запрос уберет строки если водной из таблиц их будет больше чем в другой
3. VmvLer 30.11.23 10:45 Сейчас в теме
Это вопрос для ИИ - пусть галлюцинирует и врет.

Ведь в вопросе все понятно, даже есть скрины табличек и результата для наглядности.
4. Qwert_23 30.11.23 10:47 Сейчас в теме
(3)
и результата для наглядности.

проще для наглядности добавить таблички, чем пытаться долго долго объяснить что нужно и, не всегда, это приводит к ответу.
7. Said-We 30.11.23 11:56 Сейчас в теме
(6) Потому что ИИ пока не знает что объединение, это UNION а не JOIN (соединение). :-)

Из описания в (1) не понятно где заканчивается старое наименование и начинается новое. Хотя бы запятые проставить не мешало бы.
8. Qwert_23 30.11.23 12:07 Сейчас в теме
(7)
В первой таблице

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

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

Наименование | НовоеНаименование | Кол
--------------
Стол | | 1
Стул | | 2
9. Said-We 30.11.23 12:48 Сейчас в теме
(8) А результат какой должен быть? И количество совпадает в первой и второй ТЧ - не понятно будет откуда брать надо будет.
10. Qwert_23 30.11.23 12:52 Сейчас в теме
(9)
В результате нужно взять всю первую таблицу, если в ней заполнено НовоеНаименование - взять его вместо наименования и присоединить вторую таблицу, если в ней есть позиции, которых нет в первой таблице
11. Said-We 30.11.23 12:54 Сейчас в теме
(10) А с количеством что делать? Оно же может быть разное.
Для вашего пример результат нарисуете?
12. Qwert_23 30.11.23 13:02 Сейчас в теме
(11)
Для вашего пример результат нарисуете?

количество беру из первой таблицы. А когда строки добавляю из второй, то количество оттуда.
Основная - это первая таблица, из нее берем все. Потом уже смотрим вторую таблицу и сравниваем с певой, если совпадения есть, то их нафиг. а то, чего нет в первой добавляем
13. Said-We 30.11.23 13:04 Сейчас в теме
(12) Это обычный UNION без ALL.
14. Qwert_23 30.11.23 13:05 Сейчас в теме
я понимаю. и когда я объединяю без нового наименования то все ок. Добавляю через выбор когда новое наименование, то добавляется строчка
15. Qwert_23 30.11.23 13:07 Сейчас в теме
и таблица получается вот такая:

Наименование | НовоеНаименование | Кол
--------------
Стол123 | | 1
Стол | | 1
Стул | | 2
Табурет | | 1
16. Said-We 30.11.23 13:07 Сейчас в теме
Что-то типа такого.....
Выбрать
      Выбор Когда т.НовоеНаименование <> "" Тогда т.НовоеНаименование Иначе т.Наименование конец как Наименование
     ,тКол
ИЗ тч1 как т

UNION

Выбрать
      Выбор Когда т.НовоеНаименование <> "" Тогда т.НовоеНаименование Иначе т.Наименование конец как Наименование
     ,тКол
ИЗ тч2 как т
Показать
17. Qwert_23 30.11.23 13:09 Сейчас в теме
(16)

UNION

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


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

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

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	РесурсныеСпецификацииМатериалыИУслуги.Номенклатура,
	РесурсныеСпецификацииМатериалыИУслуги.Номенклатура.Артикул,
	РесурсныеСпецификацииМатериалыИУслуги.КоличествоУпаковок,
	""
ИЗ
	Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК РесурсныеСпецификацииМатериалыИУслуги
ГДЕ
	РесурсныеСпецификацииМатериалыИУслуги.Основание = &Ссылка
Показать
21. Said-We 30.11.23 13:22 Сейчас в теме
Вот так делаете?
Прикрепленные файлы:
22. Qwert_23 30.11.23 13:27 Сейчас в теме
24. Said-We 30.11.23 13:29 Сейчас в теме
(22) Вы же видите что запрос дает результат совпадающий с Вашими ожиданиями?
23. Said-We 30.11.23 13:28 Сейчас в теме
(20) А почему примерно не так?:
ВЫБРАТЬ
	т.Номенклатура КАК Номенклатура,
	т.Номенклатура.Артикул КАК Артикул,
	т.Количество КАК Количество,           
	т.Новоенаименование КАК НаимКонтр
ИЗ
	Документ.КоммерческоеПредложениеКлиенту.Товары КАК т
ГДЕ
	т.Ссылка В (Выбрать т1.ДокументОснование ИЗ  Документ.ЗаказКлиента КАК т1 ГДЕ т1.Ссыдка = &Ссылка)
Показать
25. Qwert_23 30.11.23 13:40 Сейчас в теме
(23) потому что часть позиций в ресурсной
31. Said-We 30.11.23 14:06 Сейчас в теме
(25) А при чет тут таблица "РесурсныеСпецификацииМатериалыИУслуги"? Она уже у Вас ниже в другой таблице. И она никак не относится к документу коммерческого предложения.
29. Said-We 30.11.23 14:03 Сейчас в теме
(27) Зачем же левое соединение к документу "ЗаказКлиента", документ "КоммерческоеПредложениеКлиенту"?
Почему не как в [23]?
30. Qwert_23 30.11.23 14:06 Сейчас в теме
(29) точно! переделаю, спасибо большое))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот