Имя: Пароль:
1C
1С v8
Соединения в запросе
,
0 ColonelAp4u
 
21.11.17
16:19
Добрый день, подскажите пожалуйста как правильно сделать запрос, сижу туплю, есть документ "сборка" в нем 3 ТЧ
ТЧ1 - 1 строка  = Сборщик (Некий контр)
ТЧ2 - строки с заказами покупателей и с суммами
ТЧ3 - строки по услугам из заказов ТЧ2.
Если делаю запрос  ТЧ1 левое ТЧ2 ПО ссылке документа сборки выводит итог, каким соединением добавить ТЧ3? а то все перепробовал и он в итоге выводит слишком большие суммы.
1 1c-bs
 
21.11.17
16:26
Группировки в запросе имеются?
2 ColonelAp4u
 
21.11.17
16:28
(1) нет, надо?
3 Сти
 
21.11.17
16:30
А что нужно-то получить в результате запроса? Итог по суммам ТЧ2 и ТЧ3? Тогда объединять их надо, а не соединять.
4 lodger
 
21.11.17
16:31
(1) толку если у него СуммаВсего из ТЧ2 размножается на количество строк ТЧ3?
(0) ТЧ3 содержит суммы? или только 2?
5 ColonelAp4u
 
21.11.17
16:31
Если я делаю запрос ТЧ1 левое ТЧ2 грубо сумма товаров за месяц по документам сборки 4кк, если делаю ТЧ1 левое ТЧ3 за этот же период то сумма по услугам монтажа 400к, и в первом и во втором случае суммы верные, но как только пытаюсь сделать ТЧ1 левое ТЧ2 и ТЧ1 Левое ТЧ3 выходит полный капец.
6 ColonelAp4u
 
21.11.17
16:31
(4) содержит
7 ColonelAp4u
 
21.11.17
16:32
(3) щас попробую объеденить
8 lodger
 
21.11.17
16:35
простите за тупой вопрос, но зачем вам тч1 если там 1 строка?
9 Сти
 
21.11.17
16:36
(5) капец потому-что при таком соединении каждая строка ТЧ2 соединяется с каждой строкой ТЧ3. Если бы в ТЧ не 1 строка была, то еще и на нее бы перемножилось. Кстати, непонятно зачем ТЧ там, если всегда одна строка.
10 ColonelAp4u
 
21.11.17
16:38
(9) хз, док самописный, не моя разработка.
11 ColonelAp4u
 
21.11.17
16:38
Вот получился код запроса
ВЫБРАТЬ
    _СборкаСборщики.Ссылка КАК Док,
    _СборкаСборщики.Сборщик КАК Сборщик,
    1 КАК Сумма,
    2 КАК Сумма1
ИЗ
    Документ._Сборка.Сборщики КАК _СборкаСборщики
ГДЕ
    _СборкаСборщики.Ссылка.Проведен = ИСТИНА
    И _СборкаСборщики.Ссылка.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСобытий.Завершено)
    И _СборкаСборщики.Ссылка.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода
    И _СборкаСборщики.Сборщик = &Сборщик
    И _СборкаСборщики.Ссылка.Организация = &Организация

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

ВЫБРАТЬ
    _СборкаТовары.Ссылка,
    2,
    _СборкаТовары.Сумма,
    1
ИЗ
    Документ._Сборка.Товары КАК _СборкаТовары

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

ВЫБРАТЬ
    _СборкаУслуги.Ссылка,
    2,
    1,
    _СборкаУслуги.Сумма
ИЗ
    Документ._Сборка.Услуги КАК _СборкаУслуги
ИТОГИ
    СУММА(Сумма),
    СУММА(Сумма1)
ПО
    Сборщик
12 ColonelAp4u
 
21.11.17
16:41
Что то подсказывает что не правильно я объединил.
13 ColonelAp4u
 
21.11.17
17:06
Щас сделал объединение без сумм, ТЧ 1 ссылка сборщик ТЧ2 Ссылка нулл ТЧ3 ссылка нулл. Весь геморой упирается в то что этот сборщик находится в отдельной ТЧ, которая ни как кроме как ссылкой на док не связана с остальными ТЧ.
14 dezss
 
21.11.17
17:16
(11) Сжечь еретика!!!!)))
И в первом и во втором объединении, делай левое к сборщику и сразу суммы выводи.
3-е объединение убей.
15 dezss
 
21.11.17
17:26
(14) + и в поля, где нечего суммировать пиши 0, а не 1 или 2....а то эти 1 или 2 просуммируют с твоими значениями.
16 perester
 
21.11.17
17:28
(0) можете написать примерный результат запроса? Не особо понятно зачем вообще тч сборщики в запросе
17 dezss
 
21.11.17
17:30
(16) по нему итоги строятся же...
18 ColonelAp4u
 
21.11.17
18:02
(14) Спасибо за совет, я честно говоря до этой идеи сам допетрил) но все же спс.
19 perester
 
21.11.17
18:12
тч сборщики на то и тч, что в нем может быть несколько сборщиков, тут по вопросу подходит перекрестное соединение, но в таком случае суммы неверно будут, скорее надо объединить тч2 и тч3, получить сборщиков и количество сборщиков, а потом соединить эти две таблицы в третью, которая покажет сборщика и суммы, поделенные на количество сборщиков, но и тут с определенной точки зрения неправильно потому что один сборщик может быть круче другого (18) помоему этот запрос не покажет что сборку делали несколько сборщиков
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.