|
v7: Запрос по регистру | ☑ | ||
---|---|---|---|---|
0
Kuryshev
04.12.12
✎
15:05
|
Есть документ ВозвратОтПоставщика с дополнительным реквизитом ДатаДокументаВходящего. Суть в том, чтобы выбирать движения данного документа не по дате документа, а по дате определенного реквизита. Остальные движения других документов должны выбираться по дате документа. Как это можно реализовать? Привожу запрос:
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ДатаНачала по ДатаКонца; |Док = Регистр.Продажи.ТекущийДокумент; |Фирма = Регистр.Продажи.Фирма; |УпрАналитика = Регистр.Продажи.Фирма.УпрАналитика; |ЮрЛицо = Регистр.Продажи.Фирма.ЮрЛицо; |Покупатель = Регистр.Продажи.Покупатель; |СвойствоПок = Регистр.Продажи.Покупатель."+ВидСвойстваПок+".ЗначениеСвойства; |АдресДоставки = Регистр.Продажи.АдресДоставки; |СвойствоАдресаДоставки = Регистр.Продажи.АдресДоставки."+ВидСвойстваАдр+".ЗначениеСвойства; |Номенклатура = Регистр.Продажи.Номенклатура; |СвойствоТМЦ = Регистр.Продажи.Номенклатура.ОсновноеСвойство.ЗначениеСвойства; |Поставщик = Регистр.Продажи.Поставщик; |СвойствоПост = Регистр.Продажи.Поставщик.ОсновноеСвойство.ЗначениеСвойства; |"; |
|||
1
Voronve
04.12.12
✎
15:20
|
(0) Хочешь чтобы при запросе 01.11.12-15.11.12 в результат попали документы с датой дока 30.10.12 но с ДатаДокументаВходящего лежащие в интервале запроса ?
|
|||
2
Kuryshev
04.12.12
✎
15:37
|
(1) Совершенно верно.
|
|||
3
Voronve
04.12.12
✎
15:38
|
(2) Запросом никак. Только перебором.
|
|||
4
Kuryshev
04.12.12
✎
15:39
|
Нет возможности проверить, но будет ли работать следующая конструкция?
Функция ПроверитьДату(Док, Запрос) Если Док.Вид() = "Документ.ВозвратОтПокупателя" Тогда Если Док.Вычерк = 0 Тогда Возврат Запрос.ДатаДок; Иначе Если ПустоеЗначение(Док.ДатаДокВходящий) = 1 Тогда Возврат Запрос.ДатаДок Иначе Возврат Док.ДатаДокВходящий; КонецЕсли; КонецЕсли; Иначе Возврат Запрос.ДатаДок; КонецЕсли; КонецФункции мДатаНачала = Дата(1970, 1, 1); //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с мДатаНачала по ДатаКонца; |Док = Регистр.Продажи.ТекущийДокумент; |ДатаДок = Регистр.Продажи.ТекущийДокумент.ДатаДок; |Фирма = Регистр.Продажи.Фирма; |УпрАналитика = Регистр.Продажи.Фирма.УпрАналитика; |ЮрЛицо = Регистр.Продажи.Фирма.ЮрЛицо; |Покупатель = Регистр.Продажи.Покупатель; |СвойствоПок = Регистр.Продажи.Покупатель."+ВидСвойстваПок+".ЗначениеСвойства; |АдресДоставки = Регистр.Продажи.АдресДоставки; |СвойствоАдресаДоставки = Регистр.Продажи.АдресДоставки."+ВидСвойстваАдр+".ЗначениеСвойства; |Номенклатура = Регистр.Продажи.Номенклатура; |СвойствоТМЦ = Регистр.Продажи.Номенклатура.ОсновноеСвойство.ЗначениеСвойства; |Поставщик = Регистр.Продажи.Поставщик; |СвойствоПост = Регистр.Продажи.Поставщик.ОсновноеСвойство.ЗначениеСвойства; |Функция ДатаДок = Сумма(ПроверитьДату(Док, Запрос)); |Условие ((Док >= ДатаНачала) И (Док <= ДатаКонца)) |"; |
|||
5
miki
04.12.12
✎
15:40
|
(3)без разницы. Всё равно для перебора надо как-то задавать расширенный интервал.
|
|||
6
Ёпрст
04.12.12
✎
15:40
|
(3) почему ? Еще как.
Период в чорном запросе с начала всех времён до обеда и условие на даты при расчете функций.. |
|||
7
dk
04.12.12
✎
15:40
|
делай запас в ДатаНачала - месяцев 6 ну или сам смотри
и поставь фильтр ДатаДокументаВходящего >= ... <= ... |
|||
8
Voronve
04.12.12
✎
15:40
|
(4) Точнее запросом можно - но не по регистру а по документам. Перебором - по полю ДатаДокументаВходящего
|
|||
9
mikecool
04.12.12
✎
15:41
|
(6) а я бы прямой нарисовал )
|
|||
10
Voronve
04.12.12
✎
15:41
|
(6) Тссс ... Там не известно в какой запущенности БД. Может улечься на полчаса/час
|
|||
11
Касандер72
04.12.12
✎
18:56
|
(0) в реквизит - дату по которой нужно обрабатывать
|
|||
12
pofigos
04.12.12
✎
19:36
|
(0) Как вариант 2 запроса (движения без документа ВозвратОтПоставщика и только документ ВозвратОтПоставщика без периода выборки с условием вхождения ДатаДокументаВходящего нужный период) и объеденить в одну таблицу...
или (6). Суть одинакова, выигрыш в скорости только будет |
|||
13
Kuryshev
13.12.12
✎
18:09
|
(9) Можно привести пример как сие реализовать в прямом запросе?
|
|||
14
Ёпрст
13.12.12
✎
18:15
|
(13) да обычный селект к табличке движений регистра с условиями на дату
|
|||
15
Mikeware
13.12.12
✎
18:25
|
(14) Ну и три джойна свойств
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |