|
v7: Запрос к Регистру (дв.) ОстаткиТМЦ (1С++) | ☑ | ||
---|---|---|---|---|
0
Последняя_
Надежда 27.01.12
✎
11:50
|
1С 7.7 ТиС на SQL (нетиповая конф.)
Есть вот такой запрос, на основе которого формируется таблица значений. тз=" |SELECT | СпрНом.Code as КодНоменклатуры, | КоличествоНачальныйОстаток as НачОст, | КоличествоПриход as Приход, | КоличествоРасход as Расход, | КоличествоКонечныйОстаток as КонОст |FROM |$РегистрОстаткиОбороты.ОстаткиТМЦ(:ДатаОстатков,:ДатаОстатков~,Период,, | JOIN #vr_id_nom as врНом ON врНом.id=Номенклатура,, |(Номенклатура),(Количество)) as Ост |INNER JOIN $Справочник.Номенклатура as СпрНом ON СпрНом.ID=Ост.Номенклатура |"; В таблице есть врТаб.НачОст- начальный остаток врТаб.Приход - приход врТаб.Расход - расход врТаб.КонОст - конечный остаток Но сильно смущают поля Приход и Расход. В таблице появляются непонятные приходы, хотя по факту их не было! и непонятные расходы. в итоге разница между непонятным приходом и непонятным расходом равна реальному расходу. Да, я ничего не понимаю в регистрах, но с таким раскладом возникают проблемы. |
|||
1
viktor_vv
27.01.12
✎
11:51
|
Период дополнения по умолчанию кажется ДвиженияИГраницыПериода.
|
|||
2
miki
27.01.12
✎
11:51
|
Реальный расход это = продажи?
Перемещения относятся к реальным расходам? |
|||
3
viktor_vv
27.01.12
✎
11:53
|
(1)+ Это я не в тему.
|
|||
4
Последняя_
Надежда 27.01.12
✎
11:56
|
(2) перемещений вообще нет. Расход это только документы реализаций.
|
|||
5
viktor_vv
27.01.12
✎
11:58
|
Сделай так
тз=" |SELECT | СпрНом.Code as КодНоменклатуры, | Right(Ост.ПозицияДокумента) as [ДокДвижения $Документ], | Ост.ВидДокумента as ДокДвижения_вид, | КоличествоНачальныйОстаток as НачОст, | КоличествоПриход as Приход, | КоличествоРасход as Расход, | КоличествоКонечныйОстаток as КонОст |FROM |$РегистрОстаткиОбороты.ОстаткиТМЦ(:ДатаОстатков,:ДатаОстатков~,Документ,Движения, | JOIN #vr_id_nom as врНом ON врНом.id=Номенклатура,, |(Номенклатура),(Количество)) as Ост |INNER JOIN $Справочник.Номенклатура as СпрНом ON СпрНом.ID=Ост.Номенклатура |"; И смотри, какие документы делали движения. |
|||
6
viktor_vv
27.01.12
✎
11:59
|
(5) *
| Right(Ост.ПозицияДокумента,9) as [ДокДвижения $Документ], |
|||
7
Последняя_
Надежда 27.01.12
✎
12:48
|
Все равно выдает тоже
начало=104 Приход=5 Расход=10 КонОст=99 /реально 104 0 5 99 начало=99 Приход=3 Расход=6 КонОст=96 /реально 99 0 3 96 начало=96 Приход=12 Расход=24 КонОст=84 /реально 96 0 12 84 и выдает такую ошибку... Ошибка запроса: Meta name parser error: это метаимя разрешить невозможно "$РегистрОстаткиОбороты.ОстаткиТМЦ"State 42S02, native 208, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name '#vr_id_nom'. |
|||
8
Ёпрст
27.01.12
✎
12:52
|
>>>JOIN #vr_id_nom as врНом ON врНом.id=Номенклатура
забавное соединение |
|||
9
Ёпрст
27.01.12
✎
12:53
|
не проще ли фильтр на измерение поставить ?
|
|||
10
Последняя_
Надежда 27.01.12
✎
12:54
|
(8) (9) я даже не могу вот так сразу понять что в этой строке делается... так чисто на основе того что должно делаться знаю.
|
|||
11
Ёпрст
27.01.12
✎
12:56
|
||||
12
Ёпрст
27.01.12
✎
12:58
|
не нужно там соединение унутри вт, тупо в условие вт воткни, что дескать
Номенклатура in (select val from #vr_id_nom ) |
|||
13
Ёпрст
27.01.12
✎
12:59
|
ну и дальше, INNER JOIN $Справочник.Номенклатура as СпрНом это тоже лишнее, раз ты ни в селекте, ни в ветке where не используешь поля с таблички справочника.
|
|||
14
viktor_vv
27.01.12
✎
13:01
|
(13) В селекте код справочника тянет.
|
|||
15
viktor_vv
27.01.12
✎
13:02
|
(7) Это у вас с созданием временной таблички проблемы, не создается она.
|
|||
16
Ёпрст
27.01.12
✎
13:05
|
(14) непонятно тока, зачем он нужен..
Проще сам элемент поиметь |
|||
17
Последняя_
Надежда 27.01.12
✎
13:07
|
(14) в таблицу выводится именно код номенклатуры. может поэтому и нужен... хотя Вам виднее
|
|||
18
viktor_vv
27.01.12
✎
13:07
|
(16) Отож и я не пойму, нафик он нужен, ладно б еще вместе с элементом, понять можно, чтоб лишний раз потом не дергать, а так хз.
|
|||
19
Ёпрст
27.01.12
✎
13:08
|
(17) И ? нафига ? У тебя же запрос не к сторонней базе
:) |
|||
20
viktor_vv
27.01.12
✎
13:10
|
(17) А по теме, у вас точно перемещения учитываются, о чем еще в начале сказали.
|
|||
21
Последняя_
Надежда 27.01.12
✎
13:16
|
(20) перемещения редкий случай, но бывают со склада на склад... но с тем товаром и с тем складом, по которому формируется данный запрос, нет перемещений.
|
|||
22
Ёпрст
27.01.12
✎
13:20
|
(21) у тя получилось, али нет ?
Если нет - показывай свой текст запроса, как фильтруешь и что не нравится |
|||
23
viktor_vv
27.01.12
✎
13:27
|
(21) Че-то по складу не наблюдаю фильтра.
|
|||
24
Последняя_
Надежда 27.01.12
✎
13:32
|
(19) у меня запрос и к родной и к сторонней базе.
|
|||
25
Последняя_
Надежда 27.01.12
✎
13:34
|
(21) фильтра по складу как такового нет. есть группировка (в формирование временной таблицы со списком номенклатуры) где идет выборка только по указанным группам товара, а они все с одного склада. Хотя думаю это программе не важно.
|
|||
26
Последняя_
Надежда 27.01.12
✎
13:39
|
(12) не нравится ему закрывающаяся скобка в
| Номенклатура in (select val from #vr_id_nom) Ошибка запроса: Meta name parser error: это метаимя разрешить невозможно "$РегистрОстаткиОбороты.ОстаткиТМЦ"State 42000, native 170, message [Microsoft][ODBC SQL Server Driver][SQL Server]Line 9: Incorrect syntax near ')'. |
|||
27
Ёпрст
27.01.12
✎
13:40
|
(26) мот ты текст запроса весь покажешь ?
Нам отсюда не видно ничернта |
|||
28
Последняя_
Надежда 27.01.12
✎
14:00
|
может я обработку саму всю кину?
|
|||
29
Ёпрст
27.01.12
✎
14:00
|
да кидай
|
|||
30
Последняя_
Надежда 27.01.12
✎
14:01
|
||||
31
Ёпрст
27.01.12
✎
14:10
|
Вот тут у тебя шляпа:
тз = " |INSERT INTO #vr_id_nom |SELECT Ном.id |FROM $Справочник.Номенклатура as Ном |INNER JOIN $Справочник.Номенклатура as ГрНом ON Ном.ParentID=ГрНом.id |WHERE ГрНом.Descr = '"+грНом1+"' or ГрНом.Descr='"+грНом2+"' or ГрНом.Descr='"+ГрНом3+"' |"; |
|||
32
Ёпрст
27.01.12
✎
14:14
|
На вопрос, почему, выполни это:
select * from #vr_id_nom |
|||
33
Последняя_
Надежда 27.01.12
✎
14:15
|
(31) (32) а может прокомментируете почему... я делать буду дольше...
|
|||
34
Последняя_
Надежда 27.01.12
✎
14:17
|
(31) как я это вижу: заполнить временную таблицу номерами из справочника номенклатура, если номенклатура входит в такие-то группы товаров
|
|||
35
Ёпрст
27.01.12
✎
14:19
|
(33) неккоректное условие на наименование группы справочника.
Да и .. достаточно было сделать УложитьОбъекты - так по крайней мере в список попали бы ВСЕ элементы принадлежащие этим группам, в том числе, и вложенные. У тебя же - сравнение на только непосредственного родителя, это раз (вложенные элементы не учитываются), сравниваешь строки разной длины, это два. |
|||
36
Ёпрст
27.01.12
✎
14:19
|
+35 точнее,УложитьСписокОбъектов
|
|||
37
Ёпрст
27.01.12
✎
14:21
|
|SELECT
| СпрНом.Code as КодНоменклатуры, | Right(Ост.ПозицияДокумента,9) as [ДокДвижения $Документ], | Ост.ВидДокумента as ДокДвижения_вид, | КоличествоНачальныйОстаток as НачОст, | КоличествоПриход as Приход, | КоличествоРасход as Расход, | КоличествоКонечныйОстаток as КонОст, | FROM |$РегистрОстаткиОбороты.ОстаткиТМЦ(:ДатаОстатков,:ДатаОстатков~,Документ,Движения, | ,Номенклатура in (select id from #vr_id_nom), |(Номенклатура),(Количество)) as Ост |left JOIN $Справочник.Номенклатура as СпрНом ON СпрНом.ID=Ост.Номенклатура |"; |
|||
38
Ёпрст
27.01.12
✎
14:22
|
ну и так примерно, для останков
|
|||
39
trad
27.01.12
✎
14:25
|
офф/2
я например тоже обычно фильтрую join'ом, а не in'ом и думаю в этом нет криминала один хрен, этот ваш in сервер превратит в join |
|||
40
Последняя_
Надежда 27.01.12
✎
14:28
|
(35) у меня нету вложенных групп. А сравнение строк разной длины - криминально?
|
|||
41
Ёпрст
27.01.12
✎
14:29
|
(40) в твоём случае нет, но где-то (щас не вспомню - да)
|
|||
42
Последняя_
Надежда 27.01.12
✎
14:31
|
результат тот же что и в (7)
|
|||
43
Ёпрст
27.01.12
✎
14:33
|
(43)
покажи скриншот рс.выполнитьинструкцию(тз).ВыбратьСтроку() |
|||
44
Последняя_
Надежда 27.01.12
✎
14:37
|
(43) не совсем поняла, что именно надо показать.
|
|||
45
Ёпрст
27.01.12
✎
14:38
|
(44) выполни код из (43) и покажи картинку того, что на экранчике будет
:) |
|||
46
Ёпрст
27.01.12
✎
14:39
|
этот код воткни в получение останков
|
|||
47
Последняя_
Надежда 27.01.12
✎
14:42
|
||||
48
Ёпрст
27.01.12
✎
14:43
|
(47) :)
ну супер вообще |
|||
49
Последняя_
Надежда 27.01.12
✎
14:45
|
ошибку выдает... потому как параметр преобразуется чуть ниже и в левую переменную
|
|||
50
Ёпрст
27.01.12
✎
14:45
|
вот так, что кажет ?
тз=" |SELECT | СпрНом.Code as КодНоменклатуры, | Right(Ост.ПозицияДокумента,9) as [ДокДвижения $Документ], | Ост.ВидДокумента as ДокДвижения_вид, | КоличествоНачальныйОстаток as НачОст, | КоличествоПриход as Приход, | КоличествоРасход as Расход, | КоличествоКонечныйОстаток as КонОст, | FROM |$РегистрОстаткиОбороты.ОстаткиТМЦ(:ДатаОстатков,:ДатаОстатков~,Документ,Движения, | ,Номенклатура in (select id from #vr_id_nom), |(Номенклатура),(Количество)) as Ост |left JOIN $Справочник.Номенклатура as СпрНом ON СпрНом.ID=Ост.Номенклатура |"; рс.УстановитьТекстовыйПараметр("ДатаОстатков",ДатаОстатков); рс.выполнитьинструкцию(тз).ВыбратьСтроку(); |
|||
51
Ёпрст
27.01.12
✎
14:46
|
и это, группы то на форме там выбери что ли
|
|||
52
Последняя_
Надежда 27.01.12
✎
14:49
|
все так же как и на прошлом скрине. группы выбраны - на одной группе экспериментирую с одной позицией - чтобы быстрее было.
|
|||
53
Ёпрст
27.01.12
✎
14:52
|
так, для начала, вот так, есть че ?
тз = " |INSERT INTO #vr_id_nom |SELECT Ном.id |FROM $Справочник.Номенклатура as Ном |INNER JOIN $Справочник.Номенклатура as ГрНом ON Ном.ParentID=ГрНом.id |WHERE ГрНом.Descr = '"+грНом1+"' or ГрНом.Descr='"+грНом2+"' or ГрНом.Descr='"+ГрНом3+"' |"; рс.Выполнить(тз); рс.выполнитьинструкцию("select * from #vr_id_nom").ВыбратьСтроку(); |
|||
54
Последняя_
Надежда 27.01.12
✎
15:01
|
||||
55
Ёпрст
27.01.12
✎
15:28
|
(54) уже лучше
и ? запрос на останки ничего не возвращает ? Они хоть есть по это й номенклатуре ? |
|||
56
Mikeware
27.01.12
✎
15:38
|
А если посмотреть просто все движения по этому регистру по номенклатуре - что в движениях?
|
|||
57
Последняя_
Надежда 27.01.12
✎
17:33
|
(56) как?
|
|||
58
Mikeware
27.01.12
✎
17:39
|
(57) Select * from $Регистр.ОстаткиТМЦ
с соответсвующими условиями и упорядочиванием... |
|||
59
Последняя_
Надежда 28.01.12
✎
08:58
|
В общем ничего не понятно...
|
|||
60
Mikeware
28.01.12
✎
09:46
|
(59)типа
SELECT ОстаткиТМЦ.DATE_TIME_IDDOC ДатаВремяИдДок , ОстаткиТМЦ.IDDOC [Документ $Документ] , ОстаткиТМЦ.IDDOCDEF Документ_вид , ОстаткиТМЦ.LINENO_ НомерСтроки , ОстаткиТМЦ.DEBKRED ПриходРасход , $ОстаткиТМЦ.Фирма [Фирма $Справочник.Фирмы] , $ОстаткиТМЦ.Номенклатура [Номенклатура $Справочник.Номенклатура] , $ОстаткиТМЦ.Склад [Склад $Справочник.Склады] , $ОстаткиТМЦ.ЦенаПрод ЦенаПрод , $ОстаткиТМЦ.Количество Количество , $ОстаткиТМЦ.Внутреннее Внутреннее , $ОстаткиТМЦ.Внутрифирменные Внутрифирменные FROM $Регистр.ОстаткиТМЦ AS ОстаткиТМЦ With (NOLOCK) WHERE (ОстаткиТМЦ.DATE_TIME_IDDOC > :НачДата) AND (ОстаткиТМЦ.DATE_TIME_IDDOC < :КонДата~) AND ($ОстаткиТМЦ.Номенклатура = :ВыбНоменклатура) ORDER BY $ОстаткиТМЦ.Номенклатура , ОстаткиТМЦ.DATE_TIME_IDDOC |
|||
61
Последняя_
Надежда 28.01.12
✎
10:01
|
не хотит (((
Ошибка запроса: Meta name parser error: не указан параметр ":НачДата" |
|||
62
Mikeware
28.01.12
✎
10:05
|
(61) ну так укажи
|
|||
63
miki
28.01.12
✎
10:11
|
(57)regprint.ert
|
|||
64
Mikeware
28.01.12
✎
10:15
|
(63) :-)) я его так и видел никогда...
|
|||
65
Последняя_
Надежда 28.01.12
✎
10:46
|
(63) надо поискать... по-любому на дисках итс должен быть
|
|||
66
Mikeware
28.01.12
✎
10:52
|
-Сколько тебе лет, Вася?
-- Сам ты тормоз!! © |
|||
67
Последняя_
Надежда 31.01.12
✎
14:12
|
Хм... ничего нового не увидела. кто-нибудь может показать скрин своего отчета по регистру ОстаткиТМЦ по итогам (столбцы Нач.Ост.,Приход,Расход,Кон.Ост. с данными)??? может я чего-то не понимаю в работе регистра...
|
|||
68
Mikeware
31.01.12
✎
15:06
|
(67) а что увидела?
|
|||
69
Последняя_
Надежда 01.02.12
✎
09:29
|
(68) тоже что и в (7)
|
|||
70
Ёпрст
01.02.12
✎
11:48
|
(69) а что ты видишь в(7) ?
скриншот есть ? |
|||
71
Последняя_
Надежда 01.02.12
✎
11:52
|
(70) вижу что в регистре не то что по факту. т.е. откуда-то берутся какие-то приходы и расходы. Хотя по факту приходов нет, а есть только расход. В (7) есть табличка - скриншот такой же будет (через / указано мое ожидание согласно данным)
|
|||
72
Ёпрст
01.02.12
✎
11:57
|
(71) ё..
давно бы уже поимело такую табличку: ДокументДвиженияРегистра Измерение НачОст Приход Расход КонОст там всё наглядно - что откуда и куда. |
|||
73
Последняя_
Надежда 01.02.12
✎
12:21
|
||||
74
Ёпрст
01.02.12
✎
12:31
|
И ?
что не устраивает ?!!! 104 -20 = 84 5+3+12 = 20.. |
|||
75
Ёпрст
01.02.12
✎
12:35
|
или ты про верхнюю табличку ?
Дык открой движения документов и смотри, кто там у тебя делает приход и почему в движениях регистра. |
|||
76
Последняя_
Надежда 01.02.12
✎
12:36
|
(74) это в ведомости по остаткам все нормально. А почему в регистре приход-20, а расход-40 ??? (75) нижняя табличка как раз с движением!
|
|||
77
Ёпрст
01.02.12
✎
12:39
|
(76) выгрузи результат работы прямого запроса в ТЗ, выбери строку и результат в студию.
|
|||
78
Ёпрст
01.02.12
✎
12:40
|
>>>А почему в регистре приход-20, а расход-40 ?
еще раз, открой движения регистра этих документов в общем журнале документа (пкм на доке - движения регистров- нужный регистр - смотри глазёнками) и гляди, какие записи пишутся в регистр |
|||
79
Mikeware
01.02.12
✎
12:46
|
Или выполни (60), и скрин...
|
|||
80
Последняя_
Надежда 01.02.12
✎
13:32
|
(78) не ругайте меня... разобралась в "своем" дурацком учете...
|
|||
81
miki
01.02.12
✎
13:34
|
(80)где отчет?
|
|||
82
Ёпрст
01.02.12
✎
13:37
|
(80) и ?
че было то хоть ? |
|||
83
Последняя_
Надежда 01.02.12
✎
13:40
|
эти движняки из-за того что товар оприходован на одну фирму, а продажа с другой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |