|
Дополнительные реквизиты в типовой кон-ции. Покритикуйте запрос. | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
Oleg_Kag
22.10.12
✎
13:05
|
БП 2.0.
Добавлен дополнительный реквизит "МестоВыгрузки" тип Справочник Контрагенты. Используется в документах РеализацияТоваровУслуг и АктОбОказанииПроизводственныхУслуг. Реквизит заполняется по мере необходимости (если факт место отгрузки/оказания услуг НЕ совпадает с адресом контрагента. Например сеть торговых точек с фактически одним юр.лицом, но расположенных по разным адресам) Для получения отчета делаю такой запрос: ВЫБРАТЬ ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК Покупатель, РеализацияТоваровУслугТовары.Номенклатура, РеализацияТоваровУслугТовары.Количество, РеализацияТоваровУслугТовары.Сумма ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗначенияСвойствОбъектов.Значение КАК Значение, ЗначенияСвойствОбъектов.Объект КАК Объект ИЗ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ГДЕ ЗначенияСвойствОбъектов.Свойство.Наименование = "МестоВыгрузки" И ТИПЗНАЧЕНИЯ(ЗначенияСвойствОбъектов.Объект) = ТИП(Документ.РеализацияТоваровУслуг)) КАК ЗначенияСвойствОбъектов ПО РеализацияТоваровУслугТовары.Ссылка = ЗначенияСвойствОбъектов.Объект ГДЕ РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон Знаю, что запрос не точен/не корректен и его можно оптимизировать. Подскажите пожалуйста в каком месте можно оптимизировать запрос. Заранее спасибо. |
||||||||||
1
Buster007
22.10.12
✎
13:07
|
Зачем делать вложенный запрос?
|
||||||||||
2
Reset
22.10.12
✎
13:08
|
Заменить левое соединение на вложенный запрос на просто левое к регистру, условие на тип не нужно, условие на значени свойства прописать в условии соединения
|
||||||||||
3
Нуф-Нуф
22.10.12
✎
13:09
|
вложенный запрос в большинстве случаев - зло
|
||||||||||
4
palpetrovich
22.10.12
✎
13:09
|
лишнее
И ТИПЗНАЧЕНИЯ(ЗначенияСвойствОбъектов.Объект) = ТИП(Документ.РеализацияТоваровУслуг)) КАК ЗначенияСвойствОбъектов и вообще, может запрос не к документу все-таки, а к регистру? |
||||||||||
5
Повелитель
22.10.12
✎
13:10
|
Вообще не понятно, зачем для этих целей типовую было переписывать.
В типовой есть в Контрагентах реквизит "Головной контрагент", с помощью него и решается эта задача. Заводим торговые точки как отдельные контрагенты, а Головного контрагента ставим одного. |
||||||||||
6
Reset
22.10.12
✎
13:10
|
(4) Просто к регистру не покажет документы без свойства, а ему они нужны, видимо
|
||||||||||
7
Oleg_Kag
22.10.12
✎
13:11
|
Условие на тип нужно, так как задача отобрать именно реализацию товара/пива/ (а не оказание услуг - ремонт нашего оборудования, что стоит в их магазинах)
|
||||||||||
8
Reset
22.10.12
✎
13:11
|
ЗначенияСвойствОбъектов.Свойство.Наименование = "МестоВыгрузки"
==> ЗначенияСвойствОбъектов.Свойство=&МестоВыгрузки |
||||||||||
9
Повелитель
22.10.12
✎
13:11
|
(6) Да ну? Чтобы левое соединение не показываало РеализацияТоваровУслугТовары?
|
||||||||||
10
Oleg_Kag
22.10.12
✎
13:11
|
(6) Именно мне нужны все документы
|
||||||||||
11
Oleg_Kag
22.10.12
✎
13:12
|
И еще добавлю, там куча доп реквизитов типа: Экспедитор(кто возил) и Менеджер (кто работает с этой торговой точкой)
|
||||||||||
12
palpetrovich
22.10.12
✎
13:13
|
(10) проведенные и нет?
|
||||||||||
13
AaNnDdRrEeYy
22.10.12
✎
13:13
|
(7) а ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект как ТИП(Документ.РеализацияТоваровУслуг))
будет луче |
||||||||||
14
Reset
22.10.12
✎
13:13
|
(9) Читай в (0) "Реквизит заполняется по мере необходимости "
|
||||||||||
15
Reset
22.10.12
✎
13:14
|
+(9) Палпетрович предложил обойтись без содинения вообще
|
||||||||||
16
Oleg_Kag
22.10.12
✎
13:14
|
(12) Не суть... условие достаточно просто ставиться на документы.
Еще раз напомню речь идет о Бухгалтерии Предприятия 2.0, но НЕ об Управлении Торговлей |
||||||||||
17
Повелитель
22.10.12
✎
13:15
|
(14)
Без разницы заполняется в Реализация свойство или остается пустое, в запрос при ЛЕВОМ соединении попадут все Реализации |
||||||||||
18
Reset
22.10.12
✎
13:16
|
(17) Честно говоря, не догоняю, о каком соединении ты говоришь.
|
||||||||||
19
palpetrovich
22.10.12
✎
13:16
|
(16) а, ну да
но все-равно, ты делаешь левое соединение с доком, зачем еще раз проверять на ВИд? |
||||||||||
20
Reset
22.10.12
✎
13:17
|
(17) Читай : "может запрос не к документу все-таки, а к регистру?"
Я это понял как запрос к регистру, а не к документу соединенному с регистром |
||||||||||
21
Oleg_Kag
22.10.12
✎
13:29
|
Тут ведь вот в чем дело...используются еще Дополнительные реквизиты. Например "Экспедитор". Поэтому на этапе обращения к регистру сведений я отсекаю по "Названию" (далее буду менять на параметр) запрос. Именно для этого делаю вложенный запрос.
ВЫБРАТЬ ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК Покупатель, РеализацияТоваровУслугТовары.Номенклатура, РеализацияТоваровУслугТовары.Количество, РеализацияТоваровУслугТовары.Сумма, РеализацияТоваровУслугТовары.Ссылка ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО РеализацияТоваровУслугТовары.Ссылка = ЗначенияСвойствОбъектов.Объект ГДЕ РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон Такой запрос мне выдаст кучу лишним строчек (при дальнейшей обработке) с значениями других дополнительных реквизитов (тот же самый "Экспедитор") |
||||||||||
22
Oleg_Kag
22.10.12
✎
13:29
|
Запрос вида:
ВЫБРАТЬ ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК Покупатель, РеализацияТоваровУслугТовары.Номенклатура, РеализацияТоваровУслугТовары.Количество, РеализацияТоваровУслугТовары.Сумма, РеализацияТоваровУслугТовары.Ссылка ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО РеализацияТоваровУслугТовары.Ссылка = ЗначенияСвойствОбъектов.Объект ГДЕ РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон И ЗначенияСвойствОбъектов.Свойство.Наименование = "МестоВыгрузки" Ограничит выборку только теми документами у которых этот реквизит заполнен. |
||||||||||
23
Reset
22.10.12
✎
13:31
|
(21)
ПО РеализацияТоваровУслугТовары.Ссылка = ЗначенияСвойствОбъектов.Объект И ЗначенияСвойствОбъектов.Свойство=&Свойство |
||||||||||
24
Reset
22.10.12
✎
13:31
|
Написано в (2) уже все
|
||||||||||
25
Oleg_Kag
22.10.12
✎
13:38
|
(23) Большое спасибо. Все получилось
|
||||||||||
26
Oleg_Kag
22.10.12
✎
13:39
|
ВЫБРАТЬ
ЕСТЬNULL(ЗначенияСвойствОбъектов.Значение, РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК Покупатель, РеализацияТоваровУслугТовары.Номенклатура, РеализацияТоваровУслугТовары.Количество, РеализацияТоваровУслугТовары.Сумма, РеализацияТоваровУслугТовары.Ссылка ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов ПО РеализацияТоваровУслугТовары.Ссылка = ЗначенияСвойствОбъектов.Объект И (ЗначенияСвойствОбъектов.Свойство.Наименование = "МестоВыгрузки") ГДЕ РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаОкон |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |