|
v7: Прямой запрос 1С 7.7 SQL | ☑ | ||
---|---|---|---|---|
0
Radeoff
16.06.20
✎
14:10
|
Всем - здравствовать
Перевел базу 7.7 под SQL и черные запросы стали ощутимо тормозить. Не мог бы кто помочь советом? Нужно систему понять Например, получаю оперативные остатки на дату по регистру ОстаткиТоваров. (База - пысанная от нуля) Проблема в том, что мне нужно сделать фильтр по общему реквизиту - Фирма (тип Справочник), который не является измерением Регистра. Измерением является поле "Документ" (тип Документ неопр.вида) Раньше в "черном запросе" писал определение:
и достаточно быстро это работало. А как в прямых запросах? Сделал простое: рс = СоздатьОбъект("ODBCRecordset"); ТекстЗапроса = "-- qryMaker:ОстаткиПоСкладу.2020.06.06.12.19.37 |SELECT ОстаткиТоваровОстатки.Товар [Товар $Справочник.Номенклатура] | , Sum(ОстаткиТоваровОстатки.КоличествоОстаток) AS Ост |FROM $РегистрОстатки.ОстаткиТоваров(,, | (Товар IN (SELECT Val FROM #Товары)) | AND (Склад = :вСклад), | Товар, | Количество) AS ОстаткиТоваровОстатки |GROUP BY ОстаткиТоваровОстатки.Товар |"; рс.УложитьСписокОбъектов(СпТовара, "#Товары"); рс.УстановитьТекстовыйПараметр("вСклад", вСклад); а как наложить фильтр по Фирма.РаздельныйУчет ? Неужели запросом получать список Документов, имеющих нужное значение общего реквизита Фирма.РаздельныйУчет, а потом этот список использовать в фильтре указанного Запроса? |
|||
1
ДенисЧ
16.06.20
✎
14:14
|
Если это общий реквизит с установленным отбором - то в _1sjourn по iddoc лезть.
Иначе тупо список левых джойнов. |
|||
2
Ёпрст
16.06.20
✎
14:17
|
(0) Измерение документ ?
И он еще поди = документ движения, угадал ? |
|||
3
Radeoff
16.06.20
✎
14:41
|
(2) Да, измерение "Документ", тут обсдалася, давно писал, потом в ДБФ косяков из-за этого не встречал, поэтому не переписывал...
Флаг отбора движений не установлен, если Вы об этом |
|||
4
Ёпрст
16.06.20
✎
14:44
|
(3) нет не об этом, если в это измерение пишется докумнт движения, то имеем незакрытый регистр, который пухнет с геометрической прогрессией
|
|||
5
Radeoff
16.06.20
✎
14:51
|
(4) тогда нет, имеем закрытый регистр, если предопределенное имя все же где-то гадит, можно переименовать измерение в Приход, или Партия
|
|||
6
Radeoff
16.06.20
✎
17:20
|
(1) Правильно ли понимаю, что таким образом мы получим список всех документов (или определенного вида) по данной Фирме,
и, как и говорил, полученные документы в этом подзапросе используем в запросе по остаткам? Если так, то мне кажется это не совсем правильным - в этот отбор попадут документы, по которым нет и остатка на данный момент, и период там не используешь. Тогда, наверное, лучше уж получить все остатки по Документам, а потом Документы отобрать по нужной Фирме (реквизиту Фирмы). Так ли? |
|||
7
Дык ё
16.06.20
✎
17:32
|
(6) если кучу левых джойнов не хочешь, можно еще графу отбора по фирме сделать. тогда будет один джойн с _1crcdoc или как там её
|
|||
8
Дык ё
16.06.20
✎
17:34
|
+ (6) ну и группировка в твоем запросе не нужна, виртуальная таблица сама группирует
|
|||
9
Radeoff
19.06.20
✎
00:59
|
Всем спасибо.
Решение (подробное, а не в общих чертах), если кому-то такому же ушастому, как я, понадобится
|
|||
10
Злопчинский
19.06.20
✎
03:06
|
(5) то есть остатки товаров при расходе ты списываешь типа по фифо с документов?
|
|||
11
Ёпрст
19.06.20
✎
08:01
|
(9) один иннер лишний
|
|||
12
Ёпрст
19.06.20
✎
08:04
|
(10) нет.. у него так в регистре, на сколько я понял
Приход Документ Склад Товар Количество ПоступлениеТМЦ ОсновнойСклад Валенки 10 Расход Реализация ОсновнойСклад Валенки 10 Т.е в измерение Документ он пишет документ движения, а не партиобразующий документ.. (9) такая структура, да ? |
|||
13
tgu82
19.06.20
✎
08:04
|
(0) Китайская грамота - жаль что я не китаец ).
Надо изучать этот космос |
|||
14
tgu82
19.06.20
✎
08:09
|
(11) [NOLOCK] - для чего нужно?
И еще а почему один иннер лишний? |
|||
15
Ёпрст
19.06.20
✎
08:12
|
(14)
1.https://docs.microsoft.com/ru-ru/sql/t-sql/queries/hints-transact-sql-table?view=sql-server-ver15 2.потому, что ВТ уже отфильтрована первым . |
|||
16
Ёпрст
19.06.20
✎
08:16
|
||||
17
tgu82
19.06.20
✎
08:16
|
(15) Спасибо.
ВТ - это временная таблица? Ее вооще-то курсором называют еслим не память не изменяет |
|||
18
Ёпрст
19.06.20
✎
08:18
|
(17) в данном случае, ВТ это виртуальная таблица $РегистрОстатки.ОстаткиТоваров
|
|||
19
tgu82
19.06.20
✎
08:38
|
(18) Понятно. Спасибо
|
|||
20
Radeoff
19.06.20
✎
12:31
|
(10) Да, верно, списываю по ФИФО
|
|||
21
Radeoff
19.06.20
✎
12:32
|
(12) Нет, раньше уже написал, что Документ - это Партия. По ФИФО идет списание, по партиям товара.
|
|||
22
Radeoff
19.06.20
✎
12:41
|
(13) Китайцами не рождаются - ими становятся !!!
http://script-coding.com/Direct_queries.html#3.2. |
|||
23
Ёпрст
19.06.20
✎
12:43
|
(21) ну тогда ладно, см . (11)
|
|||
24
Ёпрст
19.06.20
✎
12:43
|
и where тоже выкини последнее
|
|||
25
Radeoff
19.06.20
✎
12:49
|
(24) Яволь, спасиб, посмотрю
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |