|
v7: Не совпадают значения сумм через запрос и просмотрщик регистров | ☑ | ||
---|---|---|---|---|
0
zenon46
07.02.20
✎
17:13
|
Доброго вечера! Ситуация следующая, есть запрос к регистру ПартииНаличие, но в результатх выборки не совпадают суммы как в валюте бух учета так и управленческой, просмотрщик содержимого регистра показывает правильную сумму, в данном случае 100р это доп расходы сверху на поступление, а выборка из запроса показывает почему то просто сумму поступления...как такое вообще может быть ?
вот собственно о чем речь : https://prnt.sc/qyzgi8 вот текст запроса : |SELECT | temp.val, | Спр.Code AS Код, | subsel.Номенклатура AS [Номенклатура $Справочник.Номенклатура], | Isnull(Рег.Date_Time_IDDOC,'-') [ДатаПрих], | $Рег.СуммаРуб AS [СуммаРуб $Число], | $Рег.Количество AS [Количество $Число], | ($Рег.СуммаРуб/$Рег.Количество) AS [Себестоимость $Число], | $Рег.Партия AS [Партия $Справочник.Партии], | CAST(LEFT(Рег.Date_Time_IDDoc, 8) as DateTime) as ДатаПослПрих, | $Спр.МинОстаток AS [МинОстаток $Число], | $Спр.КолЗаказа AS [КолЗаказа $Число], | balance.Количество AS [Остаток $Число] |FROM | #TempTable | temp left join |( |SELECT | $Рег.Номенклатура AS [Номенклатура], | MAX(Рег.Date_Time_IDDOC) AS ДатаПослПрихода |FROM | $Регистр.ПартииНаличие as Рег |INNER JOIN | _1Sjourn as ЖурналДок ON ЖурналДок.IDDoc = Рег.IDDoc |INNER JOIN | $Справочник.Партии AS СпрП ON СпрП.ID = $Рег.Партия |INNER JOIN | $Справочник.Контрагенты AS СпрК ON СпрК.ID = $СпрП.Поставщик |WHERE | ЖурналДок.iddocdef = $ВидДокумента.ПоступлениеТМЦ_Склад AND | $Рег.Номенклатура IN (SELECT val FROM #TempTable) AND | $Рег.Фирма = :ВбрФирма AND | $СпрП.Поставщик NOT IN (SELECT val FROM #TableKontr) |GROUP BY | $Рег.Номенклатура |) subsel ON temp.val = subsel.Номенклатура |LEFT JOIN |( |SELECT | Рег.Номенклатура AS [Номенклатура], | Рег.КоличествоОстаток AS Количество |FROM | $РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,Фирма = :ВбрФирма AND Номенклатура IN (SELECT val FROM #TempTable),(Номенклатура),(Количество)) AS Рег |) balance ON temp.val = balance.Номенклатура |INNER JOIN | $Справочник.Номенклатура AS Спр ON Спр.ID = temp.val |LEFT JOIN | $Регистр.ПартииНаличие AS Рег ON $Рег.Номенклатура = subsel.Номенклатура AND Рег.Date_time_iddoc=subsel.ДатаПослПрихода |
|||
1
vicof
07.02.20
✎
17:20
|
Почисть семерочный кэш)))
|
|||
2
GreyK
07.02.20
✎
17:50
|
(0) Называть "запросом" приблуду, которая работает через "дописку", нельзя, пишите "прямой запрос".
|
|||
3
Djelf
07.02.20
✎
18:35
|
Исходя из того что в запросе
отсутствует поле СуммаУпр, ответить на этот вопрос весьма затруднительно. Рискну предположить что из-за фильтров типа
доп.расходы вообще не учтены в запросе. |
|||
4
zenon46
07.02.20
✎
19:34
|
(3) так запись по регистру что я показал сделана именно этим видом документа + к нему на основании зацеплен документ доп.расходов
|
|||
5
zenon46
07.02.20
✎
19:35
|
(3) а как их еще учитывать если в записи регистра 6100 а никак не 6000 как выдает запрос...вот я и понять не могу откуда такие разночтения
|
|||
6
zenon46
07.02.20
✎
19:35
|
(2) а это какой запрос, "черный" ?
|
|||
7
zenon46
07.02.20
✎
19:38
|
(3) да если убираю фильтр по виду документа то получаю https://prnt.sc/qz1y76
|
|||
8
zenon46
07.02.20
✎
19:40
|
(3) кажется понял..а как теперь это реализовать? собственно за партию я должен учитывать только док вида "ПоступлениеТМЦ_Склад" + еще как то надо сделать по этой же партии доп.расходы если они есть.
|
|||
9
Salimbek
07.02.20
✎
20:04
|
(4) Вам указали не на "Вид документа", а на то, что кроме СуммаРуб, в вашем регистре, вероятно, есть СуммаУпр. И, чисто теоретически, эти суммы могут отличаться.
|
|||
10
zenon46
07.02.20
✎
20:07
|
(9) это я уже проверил, там все одинаково
|
|||
11
Salimbek
07.02.20
✎
20:14
|
(10) А, тогда хорошо. Доп. расходы - создаются же каким-то документом. Так что можно просто к имеющемуся запросу добавить UNION ALL и сделать выборку с такими же полями по этому, второму виду документов. Если же документы связаны между собой, то еще и найти их где-то в 1SCRCDOC .
|
|||
12
zenon46
07.02.20
✎
20:27
|
(11) Поступление_ДопРасходы таким документом создаются, я полагал что запись то в регистре одна будет Сумма поступления + сумма поступления доп.расходов, но при выборке запросом оказалось не так
|
|||
13
Salimbek
08.02.20
✎
20:44
|
(12) Ну дак, какие движения в каких документах прописал - так и будет писаться. Можно же было в Обработке проведения документа ПоступлениеТМЦ_Склад смотреть, есть ли связанный ДопРасходы и делать соответствующее движение по регистру. Например...
|
|||
14
Злопчинский
08.02.20
✎
22:37
|
(13) имхо нехорошо так делать.
|
|||
15
Злопчинский
08.02.20
✎
22:38
|
(12) с чего бы это одна запись. документы разные - записи регистра под каждый документ свои (если конечно, не извращаться как в 13)
|
|||
16
zenon46
09.02.20
✎
12:49
|
(15) да, уже понял, теперь надо к запросу "прилепить" выборку по этой партии документа доп_расходов.
|
|||
17
Злопчинский
09.02.20
✎
14:02
|
$ВидДокумента.ПоступлениеТМЦ_Склад имхо лучше заменить манипуляциями с Регистр.ПартииНаличие.КодОперации - он там сделан именно для того, чтобы различать варианты движений.
|
|||
18
zenon46
09.02.20
✎
16:45
|
(17) да только есть еще документ ПоступлениеТМЦ и вид операции у них одинаков.
|
|||
19
Злопчинский
09.02.20
✎
19:15
|
(18) а какая разница принципиальная? если они у тебя с одинаковым кодом операции - значит у них и суть одна.
в разница поступления и поступления_склад - если идейно? |
|||
20
zenon46
10.02.20
✎
12:41
|
(19) да там есть свои особенности в организации бизнес-процессов, схема агента-принципала...именно исходя из этих самых бизнес процессов, отрабатывать нужно именно один вид документа.
Попытался соединить с ДопРасходами...в итоге получаю столько строк сколько по каждому товару было документов доп расходы...ни как нге получается собрать в одну строку... SELECT temp.val, Спр.Code AS Код, subsel.Номенклатура AS [Номенклатура $Справочник.Номенклатура], Isnull(Рег.Date_Time_IDDOC,'-') [ДатаПрих], $Рег.СуммаРуб AS [СуммаРуб $Число], $Рег.Количество AS [Количество $Число], ($Рег.СуммаРуб/$Рег.Количество) AS [Себестоимость $Число], $Рег.Партия AS [Партия $Справочник.Партии], CAST(LEFT(Рег.Date_Time_IDDoc, 8) as DateTime) as ДатаПослПрих, $Спр.МинОстаток AS [МинОстаток $Число], $Спр.КолЗаказа AS [КолЗаказа $Число], balance.Количество AS [Остаток $Число], subsel_P.СуммаДР AS СД FROM #TempTable temp left join ( SELECT $Рег.Номенклатура AS [Номенклатура], MAX(Рег.Date_Time_IDDOC) AS ДатаПослПрихода FROM $Регистр.ПартииНаличие as Рег INNER JOIN _1Sjourn as ЖурналДок ON ЖурналДок.IDDoc = Рег.IDDoc INNER JOIN $Справочник.Партии AS СпрП ON СпрП.ID = $Рег.Партия INNER JOIN $Справочник.Контрагенты AS СпрК ON СпрК.ID = $СпрП.Поставщик WHERE ЖурналДок.iddocdef = $ВидДокумента.ПоступлениеТМЦ_Склад AND $Рег.Номенклатура IN (SELECT val FROM #TempTable) AND $Рег.Фирма = :ВбрФирма AND $СпрП.Поставщик NOT IN (SELECT val FROM #TableKontr) GROUP BY $Рег.Номенклатура ) subsel ON temp.val = subsel.Номенклатура LEFT JOIN ( SELECT MAX(РегП.Date_Time_IDDOC) AS ДатаПослПриходаДопРасх, $РегП.СуммаРуб AS СуммаДР, $РегП.Номенклатура AS [Номенклатура] FROM $Регистр.ПартииНаличие as РегП INNER JOIN $Справочник.Партии AS СпрП ON СпрП.ID = $РегП.Партия WHERE $РегП.Фирма = :ВбрФирма AND $РегП.Количество = 0 GROUP BY $РегП.Номенклатура,$РегП.СуммаРуб ) subsel_P ON temp.val = subsel_P.Номенклатура LEFT JOIN ( SELECT Рег.Номенклатура AS [Номенклатура], Рег.КоличествоОстаток AS Количество FROM $РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,Фирма = :ВбрФирма AND Номенклатура IN (SELECT val FROM #TempTable),(Номенклатура),(Количество)) AS Рег ) balance ON temp.val = balance.Номенклатура INNER JOIN $Справочник.Номенклатура AS Спр ON Спр.ID = temp.val LEFT JOIN $Регистр.ПартииНаличие AS Рег ON $Рег.Номенклатура = subsel.Номенклатура AND Рег.Date_time_iddoc=subsel.ДатаПослПрихода |
|||
21
Salimbek
11.02.20
✎
15:17
|
(20) Ну при Лефт Джойн, так и должно быть.
Тут лучше: Выборка по ПоступлениеТМЦ_Склад UNION ALL Точно такая же Выборка по ДопРасходы |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |