Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Левое соединение Первые 1

Левое соединение Первые 1
Я
   grasshoper
 
20.07.21 - 09:26
День добрый. Кто знает, как сделать чтобы при левом соединении хватало только первое значение совпадающее по условию?
Пример:

Таблица 1:
Товар1 5
Товар2 12

Таблица 2:
Товар1 10%
Товар1 15%
Товар2 20%
Товар2 35%
Товар2 40%

Результат:
Товар1 5 10%
Товар2 12 20
   mikecool
 
1 - 20.07.21 - 09:27
левое соединение ...
по ... и Поле справа в (выбрать первые 1 ... повторить условия)
   Малыш Джон
 
2 - 20.07.21 - 09:45
(1) ну зачем учить такие условия соединения делать?

(0) Вторую таблицу приводишь к виду

Товар1 10%
Товар2 20%

потом соединяешь с первой таблицей
   grasshoper
 
3 - 20.07.21 - 09:50
(2) Как её привести? ВЫБРАТЬ РАЗЛИЧНЫЕ не подойдёт
   grasshoper
 
4 - 20.07.21 - 09:54
Пример таблицы 2:
ВЫБРАТЬ РАЗЛИЧНЫЕ
        ДокументРеализацияТовары.Ссылка КАК Документ,
        ДокументРеализацияТовары.Номенклатура КАК Номенклатура,
        ДокументРеализацияТовары.ПроцентГодности КАК ПроцентГодности 
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК ДокументРеализацияТовары
    ГДЕ
        ДокументРеализацияТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
        И ДокументРеализацияТовары.Ссылка.Проведен
   grasshoper
 
5 - 20.07.21 - 09:55
Первую таблицу соединяю со второй по полям: Документ, Номенклатура.
   mikecool
 
6 - 20.07.21 - 09:55
(2) "ну зачем учить такие условия соединения делать?" для общего развития
   PuhUfa
 
7 - 20.07.21 - 10:10
(0) Если в твоей задаче заменить "хватало только первое значение", на "хватало только МИНИМАЛЬНОЕ значение" (а судя по примеру это так) то становится все проще -)
   grasshoper
 
8 - 20.07.21 - 10:16
(6) Есть большой отчет, в котором можно смотреть движения продукции. Так вот, необходимо сравнить процент годности продукции которая пошла в итоге в отгрузку по документу, с процентом годности из Таблицы 2, который был запрошен изначально.
   Малыш Джон
 
9 - 20.07.21 - 10:17
(3) Не подойдет, все верно. Это стандартная задача на поиск среза данных, гуглится.
   grasshoper
 
10 - 20.07.21 - 10:30
(9) Так временная таблица уже готова и соединение работает, я только не могу понять как исключить дублирование, когда в таблице 2 на один и тот же товар может быть разный процент.
   Малыш Джон
 
11 - 20.07.21 - 10:33
(10) как ты понимаешь, какой процент по каждому товару оставлять?
   grasshoper
 
12 - 20.07.21 - 10:44
(11) Максимальный
   grasshoper
 
13 - 20.07.21 - 10:46
(11) {ЛЕВОЕ СОЕДИНЕНИЕ Документ_Товары КАК Документ_Товары
        ПО (ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                ИЛИ ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров)
            И ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Регистратор = Документ_Товары.Документ
            И ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура = Документ_Товары.Номенклатура
            И (Документ_Товары.ПроцентГодности В
                (ВЫБРАТЬ ПЕРВЫЕ 1
                    МИНИМУМ(Документ_Товары.ПроцентГодности) КАК ПроцентГодности
                ИЗ
                    Документ_Товары КАК Документ_Товары
                ГДЕ
                    Документ_Товары.Документ = ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Регистратор
                    И Документ_Товары.Номенклатура = ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура))}
   patapum
 
14 - 20.07.21 - 10:47
(12) Тогда держи
ВЫБРАТЬ Табл1.Товар, Табл1.Количество, Максимум(Табл2.Процент)
ИЗ Табл1 ЛЕВОЕ СОЕДИНЕНИЕ Табл2 По Табл1.Товар = Табл2.Товар
СГРУППИРОВАТЬ ПО Табл1.Товар, Табл1.Количество
   grasshoper
 
15 - 20.07.21 - 10:54
(14) хороший вариант, но в таблице 1 около 40 полей, из разных временных таблиц. Суммы не поплывут из-за Максимум(Табл2.Процент)?
   grasshoper
 
16 - 20.07.21 - 10:55
(14) может имеет смысл выбирать максимальное прямо во временной таблице?
   hhhh
 
17 - 20.07.21 - 10:55
(15) нет не поплывут
   grasshoper
 
18 - 20.07.21 - 10:56
Наверное лучше тут брать максимум

// Таблица 2

ВЫБРАТЬ
    Документ_Товары.Документ КАК Документ,
    Документ_Товары.Номенклатура КАК Номенклатура,
    Документ_Товары.ПроцентГодности КАК ПроцентГодности
ПОМЕСТИТЬ Документ_Товары
ИЗ
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
        Документ_РеализацияТоваровУслуг_Товары.Ссылка КАК Документ,
        Документ_РеализацияТоваровУслуг_Товары.Номенклатура КАК Номенклатура,
        Документ_РеализацияТоваровУслуг_Товары.ПроцентГодности КАК ПроцентГодности
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК Документ_РеализацияТоваровУслуг_Товары
    ГДЕ
        Документ_РеализацияТоваровУслуг_Товары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
        И Документ_РеализацияТоваровУслуг_Товары.Ссылка.Проведен
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ РАЗЛИЧНЫЕ
        Документ_ПеремещениеТоваров_Товары.Ссылка,
        Документ_ПеремещениеТоваров_Товары.Номенклатура,
        Документ_ПеремещениеТоваров_Товары.ПроцентГодности
    ИЗ
        Документ.ПеремещениеТоваров.Товары КАК Документ_ПеремещениеТоваров_Товары
    ГДЕ
        Документ_ПеремещениеТоваров_Товары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода
        И Документ_ПеремещениеТоваров_Товары.Ссылка.Проведен

ИНДЕКСИРОВАТЬ ПО
    Документ,
    Номенклатура
;
   grasshoper
 
19 - 20.07.21 - 10:59
(17) очень много полей придется группировать
   Anton1307
 
20 - 20.07.21 - 11:01
>>> только первое значение совпадающее по условию

> Вторую таблицу приводишь к виду
>>> Как её привести? ВЫБРАТЬ РАЗЛИЧНЫЕ не подойдёт

Сформулируй для начала, что означает твоё "первое значение".
Строка с минимальным значением во второй колонке?
Ну вот и сформируй временную таблицу, где были бы строки из "Таблица 2" с минимальным значением второй колонки для каждого товара
   grasshoper
 
21 - 20.07.21 - 11:03
(20) Так и сделал при объединении. Всем спасибо за мозговой штурм.
   Serginio1
 
22 - 20.07.21 - 13:09


Список тем форума
 
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.