|
глюки при внутреннем соединении | ☑ | ||
---|---|---|---|---|
0
victor79
23.05.14
✎
00:24
|
есть у меня пара запросов:
выбрать различные рег.Номенклатура, рег.Склад поместить отрицательные из РегистрНакопления.ТоварыОрганизаций.Остатки как рег сгруппировать по рег.Организация, рег.Склад, рег.Номенклатура имеющие Сумма(рег.КоличествоОстаток) < 0 ; выбрать р.Номенклатура, р.Склад, р.КоличествоОстаток Из РегистрНакопления.ТоварыОрганизаций.Остатки как р внутреннее соединение отрицательные по р.Номенклатура = отрицательные.Номенклатура и р.Склад = отрицательные.Склад ; первый запрос - выборка отрицательных остатков, в выдает десяток позиций. Вторым запросом хочу посмотреть, какие есть остатки по позициям из первого запроса в тех же складах, т.е. в результате будет выявление минусов на плюс - не отрицательный остаток. Но второй запрос глючит, и выдает пару строк, но в то же время, если у него приписать УПОРЯДОЧИТЬ ПО р.Организация - то выдает нормально пару десятков строк с остатками. Я пробовал приписывать (и это является конечной целью второго запроса): СГРУППИРОВАТЬ ПО р.Склад,р.Номенклатура ИМЕЮЩИЕ Сумма(р.КоличествоОстаток) >= 0 и эту группировку выдает по сглюченной выборке, как если она без приписки УПОРЯДОЧИТЬ. версии: 1С:Предприятие 8.2 (8.2.18.61) УТ 11.1 (11.1.1.13) результат запроса смотрю через КонсольЗапросовУниверсальная_programmist1S.ru.epf |
|||
1
m-serg74
23.05.14
✎
03:34
|
(0) ну может и глюк, но ИМХО во втором запросе практичнее сгруппировать Номенклатура+Склад, а уж потом соединять с первым пакетом
|
|||
2
victor79
23.05.14
✎
04:02
|
попробовал, сначала остатки сгруппировал, после сделал внутренее соединение. Вместо двух запросов тогда уже три запроса, и глюк остается - он именно в соединении.
При правом соединении та же фигня, только плюс пустая строка. |
|||
3
Wobland
23.05.14
✎
04:04
|
видал такое как-то. упорядочить внезапно изменяет набор данных. оказался банальный врёжь
|
|||
4
victor79
23.05.14
✎
04:07
|
в смысле, чей врежь?
|
|||
5
Wobland
23.05.14
✎
04:08
|
(4) утверждавшего, что упорядочивание меняет что-то кроме порядка
|
|||
6
victor79
23.05.14
✎
04:17
|
там меняет не упорядочивание, а использование реквизита по которому нету соединения. Использование либо в упорядочивании, либо в ВЫБРАТЬ.
т.е. если в упорядочивание добавить р.Склад или р.Номенклатура - то количество строк остается глючным, а если добавить р.Организация - то сразу нормальный набор данных. Но проблема в том, что р.Организация в сгруппированных мне не нужна. Так же, добавленный реквизит должен иметь заполненные значения, иначе глючит (у меня Характеристика не заполнена - и ее добавление не исправляет глюк). Так же добавить нужно именно измерение, а не ресурс - добавление ресурса глюк не исправляет. |
|||
7
victor79
23.05.14
✎
04:20
|
и дальше можно предположить, что глючит из-за использования в соединении остатков одного и того же регистра, иначе бы это была частая и заметная фигня, которую бы давно исправили.
|
|||
8
Wobland
23.05.14
✎
04:21
|
(6) ничего, что упорядочивание работает последним, уже после того, как отработали всяческие соединения и отборы?
|
|||
9
victor79
23.05.14
✎
04:28
|
если рассматривать абстрактное выполнение, когда делается полный перебор декартова произведения двух таблиц, по ним отбирается и накапливается таблица, и после эта накопленная пересортировывается - то да, упорядочивание последнее. Но в реальности для целей оптимизации оно может быть абсолютно как угодно.
и как я упомянул, этот глюк убирается так же если реквизит р.Организацию упомянуть в ВЫБРАТЬ без использования упорядочивания. |
|||
10
Wobland
23.05.14
✎
04:32
|
ситуация не воспроизводится. и вообще, не верю
|
|||
11
Wobland
23.05.14
✎
04:33
|
попробуй другую платформу и СУБД
|
|||
12
victor79
23.05.14
✎
04:39
|
и вот, нашел как сделать без глюка тремя запросами. Как упомянул m-serg74, нужно промежуточно выбрать остатки, только сгруппировать по Склад+Номенклатура+Организация, а итоги Склад+Организация и соединение делать уже третьим запросом, и тогда визуально вроде без глюка.
Отсюда следствие - глючит при соединение по остаткам одного регистра, а когда эти остатки сгруппированны отдельно и по другим реквизитам - оптимизатором создается отдельная выборка и все ОК. забыл сказать, у меня это на SQL 2008, и возможно глючить может не 1с а скл, т.к. скорее всего это проблема оптимизатора. и поменять платформу, субд, и прочее я не могу - у меня удаленный сервер на котором мне не дадут что-либо переустанавливать, и если бы это была легко воспроизводимая фигня - ее бы давно исправили бы. чуть позже, когда найду дистр скл - поставлю на локальную машину и попробую повторить эту штуку. Без скл никак - база большая и в файловую не грузится. |
|||
13
Wobland
23.05.14
✎
04:49
|
(12) бэкап в файл развернуть - вполне себе вариант
|
|||
14
Wobland
23.05.14
✎
04:50
|
(13) не дочитал
|
|||
15
victor79
23.05.14
✎
05:01
|
в общем, для себя я нашел решение моего запроса, но природа глюка до конца пока не ясна.
|
|||
16
m-serg74
23.05.14
✎
05:12
|
(3) да может и поменяет, вытащил в запросе измерение - получай не группированное а кучу строк с одной организацией/складом/номенклатурой...
|
|||
17
m-serg74
23.05.14
✎
05:14
|
(12) в программировании есть такая фигня - думать надо не как чел, а как будет думать проц(есс/ессор/....)
|
|||
18
m-serg74
23.05.14
✎
05:15
|
(15) это не глюк а багофича :)
|
|||
19
hhhh
23.05.14
✎
08:29
|
(15) а чего не ясно? всё логично вроде. В остатках две строки, если добавляете еще разворот по организациям, по-любому количество строк увеличится, ну допустим будет пару десятков. Вроде никаких глюков и нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |