|
Не работает запрос | ☑ | ||
---|---|---|---|---|
0
Альбатрос
05.07.13
✎
07:35
|
Запрос:
ЗапросПоДатеРЦ.Текст = "ВЫБРАТЬ | Табном.Номенклатура, | Табном.ЦенаВРознице |ПОМЕСТИТЬ ТабЦен |ИЗ | &ТабНом КАК Табном |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МАКСИМУМ(ТоварыВНТТОбороты.Регистратор.Дата) КАК ДатаРегистратора, | ТабЦен.Номенклатура, | ТабЦен.ЦенаВРознице |ИЗ | РегистрНакопления.ТоварыВНТТ.Обороты(, &Дата, Регистратор, ) КАК ТоварыВНТТОбороты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабЦен КАК ТабЦен | ПО ТоварыВНТТОбороты.Номенклатура = ТабЦен.Номенклатура | И ТоварыВНТТОбороты.ЦенаВРознице = ТабЦен.ЦенаВРознице |ГДЕ | ТоварыВНТТОбороты.Склад = &Склад | И ТоварыВНТТОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслугВНТТ | |СГРУППИРОВАТЬ ПО | ТабЦен.Номенклатура, | ТабЦен.ЦенаВРознице"; ЗапросПоДатеРЦ.УстановитьПараметр("Склад", Склад); ЗапросПоДатеРЦ.УстановитьПараметр("ТабНом", Таб); ЗапросПоДатеРЦ.УстановитьПараметр("Дата", Дата); ТабСДатами = ЗапросПоДатеРЦ.Выполнить().Выгрузить(); ТабСДатами.ВыбратьСтроку(); Результат пустой. Косячная строка вот эта: | И ТоварыВНТТОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслугВНТТ Фишка в том, что абсолютно идентичный запрос в другой обработке на этой же базе работает правильно. Где моя ошибка? (кроме ДНК) |
|||
1
chelentano
05.07.13
✎
07:37
|
(0) если "абсолютно идентичный запрос в другой обработке на этой же базе работает правильно", значит дело в параметрах
|
|||
2
shuhard
05.07.13
✎
07:42
|
(0)[ Где моя ошибка]
строка № 15 |
|||
3
Альбатрос
05.07.13
✎
07:49
|
(1) Вобщем, разобрался. Для начала поясню, что я хочу от этого запроса: мне нужно выбрать последние даты поступлений в НТТ по складу и некоторой таблице, содержащей в себе номенклатуру и значение розн. цены, исключая все остальные док-ты. Если перед использованием этого запроса сделать переоценку склада - результат пустой. Это значит, что запрос сначала отобрал регистратор с макс. датой (в моем случае это оказалась переоценка), проверил по условию и отбросил найденный результат. Как сделать, чтобы запрос проигнорировал все регистраторы с видом НЕ поступлениеВНТТ?
|
|||
4
Альбатрос
05.07.13
✎
07:50
|
(2) Юмор такой?
|
|||
5
Альбатрос
05.07.13
✎
07:58
|
надо было указать периодичность "запись"? =)
|
|||
6
Альбатрос
05.07.13
✎
08:00
|
(5) не, неправильно
|
|||
7
chelentano
05.07.13
✎
08:04
|
(3) во вложенном запросе отбираешь все записи с нужным регистратором, потом из него выбираешь максимум
|
|||
8
Альбатрос
05.07.13
✎
08:05
|
ааа, мужики, ну как сразу отобрать из вирт. таблицы только определенный вид регистратора? Неужто 2 таблицы корячить надо?
|
|||
9
Альбатрос
05.07.13
✎
08:05
|
(7) ок, щас попробую
|
|||
10
chelentano
05.07.13
✎
08:12
|
ну и вообще, по тексту запроса, непонятно, зачем тебе тут нужна виртуальная таблица оборотов
|
|||
11
viktor_vv
05.07.13
✎
08:15
|
(10)+1. Делай по физической таблице движений. В конечном итоге виртуальная в данном случае все равно разворачивается в запрос к физической движений.
|
|||
12
PiterPrg
05.07.13
✎
08:23
|
Ну попробуй, что-ли условия добавить в параметры виртуальной таблцы Обороты (тот-самый пропущеный последний параметр)
|
|||
13
chelentano
05.07.13
✎
08:25
|
(12) условия по регистратору в параметрах ВТ?!
|
|||
14
Альбатрос
05.07.13
✎
08:53
|
(11) А есть существенная разница? Время выполнения?
|
|||
15
chelentano
05.07.13
✎
08:54
|
(14) имхо, в данном случае обращение к физической таблице должно ускорить выполнение запроса
|
|||
16
Альбатрос
05.07.13
✎
09:01
|
(15) ок, учту, спасибо!
|
|||
17
Альбатрос
05.07.13
✎
09:16
|
переделал вот так, не взлетело:
ЗапросПоДатеРЦ.Текст = "ВЫБРАТЬ | Табном.Номенклатура, | Табном.ЦенаВРознице |ПОМЕСТИТЬ ТабЦен |ИЗ | &ТабНом КАК Табном |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТабЦен.Номенклатура, | ТабЦен.ЦенаВРознице, | МАКСИМУМ(ВложенныйЗапрос.РегистраторДата) КАК ДатаРегистратора |ИЗ | (ВЫБРАТЬ | ТоварыВНТТ.Регистратор.Дата КАК РегистраторДата, | ТоварыВНТТ.Номенклатура КАК Номенклатура, | ТоварыВНТТ.ЦенаВРознице КАК ЦенаВРознице, | ТоварыВНТТ.Склад КАК Склад | ИЗ | РегистрНакопления.ТоварыВНТТ КАК ТоварыВНТТ | ГДЕ | ТоварыВНТТ.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслугВНТТ | И ТоварыВНТТ.Регистратор.Дата <= &Дата | И ТоварыВНТТ.Склад = &Склад) КАК ВложенныйЗапрос | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабЦен КАК ТабЦен | ПО ВложенныйЗапрос.Номенклатура = ТабЦен.Номенклатура | И ВложенныйЗапрос.ЦенаВРознице = ТабЦен.ЦенаВРознице | |СГРУППИРОВАТЬ ПО | ТабЦен.Номенклатура, | ТабЦен.ЦенаВРознице"; ЗапросПоДатеРЦ.УстановитьПараметр("Склад", Склад); ЗапросПоДатеРЦ.УстановитьПараметр("ТабНом", Таб); ЗапросПоДатеРЦ.УстановитьПараметр("Дата", Дата); |
|||
18
Альбатрос
05.07.13
✎
09:19
|
Опять же, если отменяю проведение переоценки - результат есть...
|
|||
19
viktor_vv
05.07.13
✎
09:20
|
Это не относится к решению поблемы, но вот это лучше замени
ТоварыВНТТ.Регистратор.Дата <= &Дата на ТоварыВНТТ.Период <= &Дата Правда дату передавай конец дня или границу периода. |
|||
20
zak555
05.07.13
✎
09:21
|
что такое ТабНом ?
|
|||
21
Альбатрос
05.07.13
✎
09:21
|
(20) ТЗ с колонками номенклатура и РозничнаяЦена
|
|||
22
Альбатрос
05.07.13
✎
09:21
|
(19) Спасибо, учту
|
|||
23
viktor_vv
05.07.13
✎
09:23
|
Посмотри еще, что тебе возвращает без внутреннего соединения с таблицей в том и другом случае.
|
|||
24
Альбатрос
05.07.13
✎
09:24
|
Мля, десятый раз перечитываю (17). Вроде же все правильно? Ну окромя Периода...
|
|||
25
Альбатрос
05.07.13
✎
09:29
|
(23) Хм... без соединения выводит все правильно, только поступленияВНТТ
|
|||
26
viktor_vv
05.07.13
✎
09:35
|
Ну значит не выполняется вот это
ПО ВложенныйЗапрос.Номенклатура = ТабЦен.Номенклатура | И ВложенныйЗапрос.ЦенаВРознице = ТабЦен.ЦенаВРознице смотри, что там с данными. |
|||
27
viktor_vv
05.07.13
✎
09:36
|
Убери для начала
| И ВложенныйЗапрос.ЦенаВРознице = ТабЦен.ЦенаВРознице и посмотри. Скорее всего тут что-то. |
|||
28
viktor_vv
05.07.13
✎
09:38
|
Скорее всего в табНом ты берешь актуальные цены, а поступления были по другим. Поэтому только переоценка и попадает.
|
|||
29
viktor_vv
05.07.13
✎
09:40
|
(28)+ Хотя вроде бы движения по переоценке и не должны попадать. Ну хз че там у тебя.
|
|||
30
viktor_vv
05.07.13
✎
09:42
|
Сделай для проверки так
|ВЫБРАТЬ | ТабЦен.Номенклатура, | ТабЦен.ЦенаВРознице, | ВложенныйЗапрос.ЦенаВРознице КАК ЦенаВРознице вложенный |ИЗ | (ВЫБРАТЬ | ТоварыВНТТ.Регистратор.Дата КАК РегистраторДата, | ТоварыВНТТ.Номенклатура КАК Номенклатура, | ТоварыВНТТ.ЦенаВРознице КАК ЦенаВРознице, | ТоварыВНТТ.Склад КАК Склад | ИЗ | РегистрНакопления.ТоварыВНТТ КАК ТоварыВНТТ | ГДЕ | ТоварыВНТТ.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслугВНТТ | И ТоварыВНТТ.Регистратор.Дата <= &Дата | И ТоварыВНТТ.Склад = &Склад) КАК ВложенныйЗапрос | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТабЦен КАК ТабЦен | ПО ВложенныйЗапрос.Номенклатура = ТабЦен.Номенклатура и смотри ч е там получилось. |
|||
31
Альбатрос
05.07.13
✎
09:44
|
(27) (28) Абсолютно верно! Спасибо. табном.ЦенаВРозниице я получал из другого запроса, а там как раз бралась цена с переоценки. Еще раз спасибо, все работает.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |