Имя: Пароль:
1C
 
связи таблиц в запросе по первому нахождению условии
,
0 Александра1с
 
21.11.23
09:02
Здравствуйте, есть запрос(ниже) он выдает причины отмены,кол-во отмены(из заказа на перем) и кол-во принятое из перемещения в статусе принято, когда отменили двумя строками по 1шт  одну номенлктатуру( с двумя разными причинами),  а переместили только 1шт получается что колво отменено корректно по группировкам суммирует, а кол-во принято из-за связи проставляется каждой отмененной строке и того в сумме 2 а не 1  https://dropmefiles.com/8zWPq
                                 ВЫБРАТЬ
    ПеремещениеТоваровТовары.Количество КАК Количество,
    ПеремещениеТоваровТовары.Номенклатура КАК Номенклатура,
    ПеремещениеТоваровТовары.Ссылка.ЗаказНаПеремещение КАК ЗаказНаПеремещение
ПОМЕСТИТЬ ВТПринято
ИЗ
    Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
ГДЕ
    ПеремещениеТоваровТовары.Ссылка.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПеремещенийТоваров.Принято)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаказыНаПеремещение.Номенклатура КАК Номенклатура,
    ЗаказыНаПеремещение.h_ПричинаОтмены КАК h_ПричинаОтмены,
    ЗаказыНаПеремещение.Заказано КАК Заказано,
    ЗаказыНаПеремещение.ЗаказНаПеремещение.Дата КАК ДатаДокумента,
    ЗаказыНаПеремещение.ЗаказНаПеремещение КАК Заказ,
    ЗаказыНаПеремещение.ЗаказНаПеремещение.СкладОтправитель КАК ЗаказНаПеремещениеСкладОтправитель,
    ЗаказыНаПеремещение.ЗаказНаПеремещение.СкладПолучатель КАК ЗаказНаПеремещениеСкладПолучатель,
    ВТПринято.Количество КАК Принято
ИЗ
    РегистрНакопления.ЗаказыНаПеремещение КАК ЗаказыНаПеремещение
        левое СОЕДИНЕНИЕ ВТПринято КАК ВТПринято
        ПО ЗаказыНаПеремещение.Номенклатура = ВТПринято.Номенклатура
            И ЗаказыНаПеремещение.Регистратор = ВТПринято.ЗаказНаПеремещение
ГДЕ
    ЗаказыНаПеремещение.ЗаказНаПеремещение.Проведен = ИСТИНА
    И ЗаказыНаПеремещение.h_ПричинаОтмены <> ЗНАЧЕНИЕ(Справочник.h_ПричиныОтменыЗаказовНаПеремещение.ПустаяСсылка)
    И ЗаказыНаПеремещение.ЗаказНаПеремещение.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    И ЗаказыНаПеремещение.Заказано < 0

СГРУППИРОВАТЬ ПО
    ЗаказыНаПеремещение.Номенклатура,
    ЗаказыНаПеремещение.h_ПричинаОтмены,
    ЗаказыНаПеремещение.Заказано,
    ЗаказыНаПеремещение.ЗаказНаПеремещение.Дата,
    ЗаказыНаПеремещение.ЗаказНаПеремещение,
    ЗаказыНаПеремещение.ЗаказНаПеремещение.СкладОтправитель,
    ЗаказыНаПеремещение.ЗаказНаПеремещение.СкладПолучатель,
    ВТПринято.Количество
1 Александра1с
 
21.11.23
09:03
хочу наверное чтобы принятое кол-во связывалось только с первой строкой, с первым нахождение по условию связи
2 Fedor-1971
 
21.11.23
09:07
(0) сделай гарантированно одну строку
левое СОЕДИНЕНИЕ (
Выбрать
    Сумма(таб.Количество) КАК Количество,
    таб.Номенклатура КАК Номенклатура,
    таб.ЗаказНаПеремещение КАК ЗаказНаПеремещение
из ВТПринято как таб
сгруппировать по
    таб.Номенклатура,
    таб.ЗаказНаПеремещение
) КАК ВТПринято
ПО ЗаказыНаПеремещение.Номенклатура = Принято.Номенклатура
   И ЗаказыНаПеремещение.Регистратор = ВТПринято.ЗаказНаПеремещение
3 Fedor-1971
 
21.11.23
09:14
2+ Это идея, возможно, придётся выбрать в отдельную временную таблицу возвраты и свернуть из по количеству

Если очень хочется именно к первой строке - то надо включать Период и регистратор в выборку, находить Номенклатура, Максимум(Период) и присоединять к этому регистратор

Короче, гемор в полный рост, профиль, фас и анфас - просто сверни выборки по Номенклатуре и Заказу, бонусом будет счастье
4 Александра1с
 
21.11.23
09:16
у меня из вт приходит одна всё норм, просто  в выборке данных  под одно условия подходят эти две строки,   через связь отличия не сделать, может можно проставить чтобы связь ставилась для одной строки а для второй не проставлялось
5 Александра1с
 
21.11.23
09:17
вроде поняла, но бред полный  с начала сделаю связь для только одной строки , потом присобачу причины и добавлю ещё одну строку...
6 Fedor-1971
 
21.11.23
09:25
(4) Тогда делай через Объединить ВСЕ
ВЫБРАТЬ
    ЗаказыНаПеремещение.Номенклатура КАК Номенклатура,
    ЗаказыНаПеремещение.h_ПричинаОтмены КАК h_ПричинаОтмены,
    ЗаказыНаПеремещение.Заказано КАК Заказано,
    ЗаказыНаПеремещение.ЗаказНаПеремещение.Дата КАК ДатаДокумента,
    ЗаказыНаПеремещение.ЗаказНаПеремещение КАК Заказ,
    ЗаказыНаПеремещение.ЗаказНаПеремещение.СкладОтправитель КАК ЗаказНаПеремещениеСкладОтправитель,
    ЗаказыНаПеремещение.ЗаказНаПеремещение.СкладПолучатель КАК ЗаказНаПеремещениеСкладПолучатель,
            левое СОЕДИНЕНИЕ ВТПринято КАК ВТПринято
        ПО ЗаказыНаПеремещение.Номенклатура = ВТПринято.Номенклатура
            И ЗаказыНаПеремещение.Регистратор = ВТПринято.ЗаказНаПеремещение
КАК Принято
ИЗ
    РегистрНакопления.ЗаказыНаПеремещение КАК ЗаказыНаПеремещение
ГДЕ
    ЗаказыНаПеремещение.ЗаказНаПеремещение.Проведен = ИСТИНА
    И ЗаказыНаПеремещение.h_ПричинаОтмены <> ЗНАЧЕНИЕ(Справочник.h_ПричиныОтменыЗаказовНаПеремещение.ПустаяСсылка)
    И ЗаказыНаПеремещение.ЗаказНаПеремещение.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    И ЗаказыНаПеремещение.Заказано < 0

Объединить ВСЕ

Выбрать
    таб.Номенклатура КАК Номенклатура,
    Неопределено как h_ПричинаОтмены   // или пустую ссылку забацай
.... соотнеси правильно количество полей    
    таб.ЗаказНаПеремещение КАК Заказ
....
Сумма(таб.Количество) КАК Принято,
из ВТПринято как таб
сгруппировать по
    таб.Номенклатура,
    таб.ЗаказНаПеремещение
) КАК ВТПринято
7 Fedor-1971
 
21.11.23
09:26
(5) ничего не выйдет, причины отказа могут быть разные
8 Fedor-1971
 
21.11.23
09:27
(6) облажался
           левое СОЕДИНЕНИЕ ВТПринято КАК ВТПринято
        ПО ЗаказыНаПеремещение.Номенклатура = ВТПринято.Номенклатура
            И ЗаказыНаПеремещение.Регистратор = ВТПринято.ЗаказНаПеремещение
КАК Принято

надо:
0 как Принято
9 Fedor-1971
 
21.11.23
09:28
6+ Вот это
Неопределено как h_ПричинаОтмены
можно сделать
"Получено" как h_ПричинаОтмены
10 Александра1с
 
21.11.23
09:36
(9) спасибо буду вникать
11 Fedor-1971
 
21.11.23
09:41
абы на здоровье