![]() |
![]() |
![]() |
|
Запрос к виртуальной таблице остатков возвращает пустую таблицу | ☑ | ||
---|---|---|---|---|
0
Blast
17.06.14
✎
09:21
|
Добрый день.
Есть 2 подписки на события к документам поступления: обработка проведения и удаление проведения. Для обеих подписок вызывается одна и та же процедура обработки с запросом, который получает данные из виртуальной таблицы остатков на текущую дату. При проведении/перепроведении документа запрос возвращает таблицу с остатками. При отмене проведения возвращает пустую таблицу. Сам запрос простой: ВЫБРАТЬ ТаблЗначенийДляПроверки.Номенклатура КАК Номенклатура, ТаблЗначенийДляПроверки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ТаблЗначенийДляПроверки.СерияНоменклатуры КАК СерияНоменклатуры, ТаблЗначенийДляПроверки.Качество КАК Качество, ТаблЗначенийДляПроверки.Количество КАК Количество, &Склад КАК Склад ПОМЕСТИТЬ ТабДокументаОбъекта ИЗ &ТаблЗначенийДляПроверки КАК ТаблЗначенийДляПроверки ИНДЕКСИРОВАТЬ ПО Номенклатура, ХарактеристикаНоменклатуры, СерияНоменклатуры, Качество ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблЗначенийДляПроверки.Номенклатура, ВЫРАЗИТЬ(ТаблЗначенийДляПроверки.Номенклатура КАК Справочник.Номенклатура).ВестиУчетПоСериям КАК ВестиУчетПоСериям, ВЫРАЗИТЬ(ТаблЗначенийДляПроверки.Номенклатура КАК Справочник.Номенклатура).ВестиУчетПоХарактеристикам КАК ВестиУчетПоХарактеристикам, ВЫРАЗИТЬ(ТаблЗначенийДляПроверки.Номенклатура КАК Справочник.Номенклатура).ЕдиницаХраненияОстатков КАК ЕдиницаИзмерения, ТаблЗначенийДляПроверки.ХарактеристикаНоменклатуры, ТаблЗначенийДляПроверки.СерияНоменклатуры, ТаблЗначенийДляПроверки.Качество, ТаблЗначенийДляПроверки.Склад, ТаблЗначенийДляПроверки.Количество КАК КоличествоДок, ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) КАК Количество, ТаблЗначенийДляПроверки.Количество + ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) КАК Нехватка ИЗ ТабДокументаОбъекта КАК ТаблЗначенийДляПроверки ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки( , (Склад, Номенклатура, ХарактеристикаНоменклатуры, Качество) В (ВЫБРАТЬ ТабДокументаОбъекта.Склад, ТабДокументаОбъекта.Номенклатура, ТабДокументаОбъекта.ХарактеристикаНоменклатуры, ТабДокументаОбъекта.Качество ИЗ ТабДокументаОбъекта КАК ТабДокументаОбъекта)) КАК СвободныеОстаткиОстатки ПО ТаблЗначенийДляПроверки.Склад = СвободныеОстаткиОстатки.Склад И ТаблЗначенийДляПроверки.Номенклатура = СвободныеОстаткиОстатки.Номенклатура И ТаблЗначенийДляПроверки.ХарактеристикаНоменклатуры = СвободныеОстаткиОстатки.ХарактеристикаНоменклатуры И ТаблЗначенийДляПроверки.СерияНоменклатуры = СвободныеОстаткиОстатки.СерияНоменклатуры И ТаблЗначенийДляПроверки.Качество = СвободныеОстаткиОстатки.Качество ГДЕ ТаблЗначенийДляПроверки.Количество + ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) < 0 По идее какая разница провожу я документ или отменяю проведение. Данные пытаюсь получить без привязки к документу. Кто-нибудь сталкивался с подобной ситуацией? |
|||
1
DCKiller
17.06.14
✎
09:24
|
(0) Откуда берутся данные в &ТаблЗначДляПроверки?
|
|||
2
Blast
17.06.14
✎
09:25
|
(1) Это таблица значений. Подставляется напрямую. Она формируется из табличной части Источника.
|
|||
3
shuhard
17.06.14
✎
09:26
|
(0)[Кто-нибудь сталкивался с подобной ситуацией?]
все запросы требуют отладки |
|||
4
Dionis Sergeevich
17.06.14
✎
09:30
|
(0) Продам консоль запросов
|
|||
5
Бешеная Нога
17.06.14
✎
09:31
|
значит нет остатков по условиям, которые передаются в виртуальную таблицу
|
|||
6
Бешеная Нога
17.06.14
✎
09:32
|
рекомендую проверить Качество в ТаблЗначенийДляПроверки и в регистре остатков
|
|||
7
Blast
17.06.14
✎
09:32
|
(3) Запрос работает.
Он проверялся в консоли. (4) Которую можно скачать в И-нете бесплатно?:-)) |
|||
8
Dionis Sergeevich
17.06.14
✎
09:33
|
ВЫБРАТЬ
ТабДокументаОбъекта.Склад, ТабДокументаОбъекта.Номенклатура, ТабДокументаОбъекта.ХарактеристикаНоменклатуры, ТабДокументаОбъекта.Качество ИЗ ТабДокументаОбъекта КАК ТабДокументаОбъекта что-то мне не нравится тут |
|||
9
Blast
17.06.14
✎
09:34
|
(6) Спасибо. Попробую проверить Качество.
Условия те же самые, что и при проведении документа. При проведении документа остатки на текущую дату получаются. |
|||
10
Blast
17.06.14
✎
09:34
|
(8) Что именно? Это отрабатывает в 1-м случае.
Это подзапрос, извлекающий данные из временной таблицы |
|||
11
Dionis Sergeevich
17.06.14
✎
09:37
|
(10) остатки то фактически есть?
|
|||
12
Blast
17.06.14
✎
09:38
|
(6) Попробовал ради интереса просто обратиться запросом к виртуальной таблице остатков при отмене проведения, передав в качестве отбора ограничение по Складу и списку номенклатуры.
Результат тот же. |
|||
13
Blast
17.06.14
✎
09:39
|
(11) Да. При проведении получаются остатки на текущую дату без движений самого документа, из которого подписка на событие отрабатывает.
После отмены проведения, если посмотреть в регистр накопления, данные так же имеются - остатки отрицательные, но есть |
|||
14
Dionis Sergeevich
17.06.14
✎
09:39
|
условие соединения по сериям закоментить пробывал?
|
|||
15
Blast
17.06.14
✎
09:42
|
(14) Более того. Пробовал выполнить не пакетный запрос, в котором обращение только к виртуальной таблице остатков и ограничение по складу и списку номенклатуры.
Почему-то запрос при отмене проведения не видит остатков. |
|||
16
DCKiller
17.06.14
✎
09:46
|
(15) Хм... ну логично вообще-то.
|
|||
17
floody
17.06.14
✎
09:46
|
Что-то мне подсказывает, что если запрос не видит остатков, то остатков нет.
|
|||
18
Blast
17.06.14
✎
09:48
|
(16)(17)
Попробовал посмотреть Источник.Движения при отмене проведения. Регистр Свободные остатки - пустой по этому документу, соответственно отрицательные остатки есть. А вот по регистру Товары на складах, например, движения ещё не удалены. |
|||
19
DCKiller
17.06.14
✎
09:50
|
(18) Я извиняюсь, а почему при отмене проведения документа по регистру у тебя остатки отрицательные, а не нулевые?
|
|||
20
Dionis Sergeevich
17.06.14
✎
09:50
|
(18) Универсальным отчетом или запросиком в консоли запросов посмотри остатки то есть?
|
|||
21
Blast
17.06.14
✎
09:52
|
(19) потому что реализацию никто не распроводил.
У меня идет как правило пара документов поступление - реализация. У нас на конец каждого месяца 41 счет по складу закрывается. По регистрам остатки нулевые. |
|||
22
Blast
17.06.14
✎
09:53
|
(20) По консоли:
При проведенном документе их как и положено нет. При распроведенном документе - они отрицательные. |
|||
23
DCKiller
17.06.14
✎
09:55
|
(22) Попробуй поменять условие. Вместо
ГДЕ ТаблЗначенийДляПроверки.Количество + ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) < 0 Сделай ГДЕ ТаблЗначенийДляПроверки.Количество + ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) = 0 |
|||
24
hhhh
17.06.14
✎
09:57
|
(22) а ТаблЗначенийДляПроверки.Количество отрицательное?
|
|||
25
Blast
17.06.14
✎
10:00
|
(23) Да, данные извлеклись поскольку ТаблЗначенийДляПроверки.Количество = 0, и ЕСТЬNULL(СвободныеОстаткиОстатки.КоличествоОстаток, 0) = 0
Получается, что при отмене проведения данные в БД в таблице свободные остатки ещё есть, пока транзакция не завершилась, а в Источник.Движения.СвободныеОстатки - набор уже пустой. Попробую его записать до запроса. (24) Положительное - при проведении, равно 0 - при отмене проведения. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |