Имя: Пароль:
1C
1С v8
Добавить в запрос еще один отбор
,
0 Мисти
 
03.03.14
20:08
Запрос и отбор будут в тексте.
1 Мисти
 
03.03.14
20:09
ТекстЗапроса =     
    "ВЫБРАТЬ
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Склад, ТоварыНаСкладахОстатки.Склад) КАК Склад,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура, ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура.ВидНоменклатуры, ТоварыНаСкладахОстатки.Номенклатура.ВидНоменклатуры) КАК ВидНоменклатуры,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличии,
    |    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК ПолныйОстаток,
    |    СвободныеОстаткиОстатки.Номенклатура.ВидНоменклатуры КАК ВидНомен
    |ПОМЕСТИТЬ ВТ_СвободныеОстатки
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(
    |            &НаДату,
    |            ВЫБОР
    |                    КОГДА &СкладВыбран
    |                        ТОГДА Склад = &ВыбСклад
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА &ВыбТМЦВыбран
    |                        ТОГДА Номенклатура В ИЕРАРХИИ (&ВыбТМЦ)
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА &ВидНоменВыбран
    |                        ТОГДА Номенклатура.ВидНоменклатуры = &ВыбВидНомен
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ {(Номенклатура)}) КАК СвободныеОстаткиОстатки
    |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
    |                &НаДату,
    |                ВЫБОР
    |                        КОГДА &СкладВыбран
    |                            ТОГДА Склад = &ВыбСклад
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |                    И ВЫБОР
    |                        КОГДА &ВыбТМЦВыбран
    |                            ТОГДА Номенклатура В ИЕРАРХИИ (&ВыбТМЦ)
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |                    И ВЫБОР
    |                        КОГДА &ВидНоменВыбран
    |                            ТОГДА Номенклатура.ВидНоменклатуры = &ВыбВидНомен
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ {(Номенклатура)}) КАК ТоварыНаСкладахОстатки
    |        ПО СвободныеОстаткиОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
    |            И СвободныеОстаткиОстатки.Склад = ТоварыНаСкладахОстатки.Склад
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |   СпрНом.Ссылка КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстатки.Склад, ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) КАК Склад,
    |    ЕСТЬNULL(СвободныеОстатки.ВРезерве, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстатки.ВНаличии, 0) КАК ВНаличии,
    |    ЕСТЬNULL(СвободныеОстатки.ПолныйОстаток, 0) КАК ПолныйОстаток,
    |    ПРЕДСТАВЛЕНИЕ(СвободныеОстатки.Номенклатура.ЕдиницаИзмерения) КАК ТовЕд,
    |    СвободныеОстатки.Номенклатура.Артикул КАК Артикул,
    //|    СвободныеОстатки.Номенклатура КАК Номенклатура,
    |    СвободныеОстатки.Номенклатура.ЭтоГруппа
    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СвободныеОстатки КАК СвободныеОстатки
    |        ПО СпрНом.Ссылка = СвободныеОстатки.Номенклатура
    |Где (&НоменклатураНеЗаполнена или СпрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ))
    |и (Не &ВидНоменВыбран или СпрНом.ВидНоменклатуры = &ВыбВидНомен)
    |УПОРЯДОЧИТЬ ПО Артикул
    |ИТОГИ
    |    СУММА(ВРезерве),
    |    СУММА(ВНаличии),
    |    СУММА(ПолныйОстаток)
    |ПО
    |    Склад,
    |    Номенклатура ИЕРАРХИЯ";

Этот запрос мне тут уже помогали делать, потом по аналогии я поправила, теперь сюда надо добавить еще такой отбор:

        ЗапросНомен = Новый Запрос;
        ЗапросНомен.Текст =
        "ВЫБРАТЬ
        |    НоменклатураДополнительныеРеквизиты.Ссылка Как Номенклатура,
        |    НоменклатураДополнительныеРеквизиты.Свойство,
        |    НоменклатураДополнительныеРеквизиты.Значение
        |ИЗ
        |    Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
        |ГДЕ
        |    НоменклатураДополнительныеРеквизиты.Ссылка в (&МассивНомен)
        |    И НоменклатураДополнительныеРеквизиты.Значение = &ВыбЗначение";
2 Asmody
 
03.03.14
21:44
Можно. Либо результат последнего запроса поместить в ВТ, а потом наложить ГДЕ в запросе, либо запихнуть все в СКД и накрутить там характеристик
3 Torquader
 
03.03.14
22:36
Насколько я понял, нужно отобрать номенклатуру по дополнительным реквизитам - так ?
4 Мисти
 
03.03.14
22:57
Ага, точно. Отобрать ее плюс ко всему еще и по доп. реквизитам.
5 Torquader
 
03.03.14
23:09
Доп-реквизиты у нас живут в таблице регистра сведений.
Поэтому, нужно с ней соединяться, чтобы отобрать то, что нам нужно - или в самом запросе или сначала во временную таблицу, а потом её соединять с запросом.
6 Мисти
 
03.03.14
23:26
Я неправильно написала?
Правильно! В регистре - доп. сведения, а доп. реквизиты - непосредственно в справочнике.
В моем запросе нет иерархии, (во втором), если я буду с ней соединять, у меня вообще иерархии не будет?
7 Torquader
 
03.03.14
23:53
(6) Ну, если они в табличной части, то это существенно ничего не меняет. Мы почему-то отбираем по заданному значению, но не учитываем тип свойства ?
Не может так получиться, что у двух свойств будут одинаковые значения.
Кроме того, желательно сказать ВЫБРАТЬ РАЗЛИЧНЫЕ, чтобы было "не так интересно" перебирать одинаковые ссылки ?
8 Мисти
 
09.03.14
11:26
(7) Не бывает у 2 свойств одинаковые значения.
9 Мисти
 
09.03.14
11:27
Откуда могут получиться одинаковые ссылки?
10 Мисти
 
09.03.14
12:42
Давайте теперь эту каку разберем!
Наверное, надо сначала сделать таблицу нужной номенклатуры (она ограничивается видом номенклатуры, иерархией и доп. реквизитами), потом по ней запрос к регистрам, а потом всё это присобачить к справочнику, потому что в результате мне нужна номенклатура в иерархии?
11 Мисти
 
09.03.14
12:59
Я так понимаю, простая задачка всем приятнее?
12 Мисти
 
09.03.14
13:07
До "поместить" я еще не дочитала.
     "ВЫБРАТЬ
     |    СПрНом.Ссылка КАК Номенклатура
     |ИЗ
     |    Справочник.Номенклатура КАК СПрНом
     |ГДЕ
     |    (&НоменклатураНеЗаполнена
     |            ИЛИ СПрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ))
     |    И (НЕ &ВидНоменВыбран
     |            ИЛИ СПрНом.ВидНоменклатуры = &ВыбВидНомен)
     |ПОМЕСТИТЬ ВТ_СписокНом"
Не так? А как мне сделать список подходящей номенклатуры?
13 Мисти
 
09.03.14
14:14
ТекстЗапроса =     
    "ВЫБРАТЬ
    |    СПрНом.Ссылка КАК Номенклатура
    |ПОМЕСТИТЬ ВТ_СписокНом
    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |ГДЕ
    |    (&НоменклатураНеЗаполнена
    |            ИЛИ СПрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ))
    |    И (НЕ &ВидНоменВыбран
    |            ИЛИ СПрНом.ВидНоменклатуры = &ВыбВидНомен)";
    Если Не ВыбПрограмма.Пустая() Тогда
        ТекстЗапроса = ТекстЗапроса+"
        | /////////////////////////////////////
        |    ВЫБРАТЬ
        |    НоменклатураДополнительныеРеквизиты.Ссылка Как Номенклатура,
        |    НоменклатураДополнительныеРеквизиты.Свойство,
        |    НоменклатураДополнительныеРеквизиты.Значение
        |ПОМЕСТИТЬ ВТ_СписокНом2
        |ИЗ
        |    Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
        |ГДЕ
        |    НоменклатураДополнительныеРеквизиты.Ссылка в (ВТ_СписокНом)
        |    И НоменклатураДополнительныеРеквизиты.Значение = &ВыбЗначение";        
    КонецЕсли;    
    ТекстЗапроса = ТекстЗапроса+
    "ВЫБРАТЬ
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Склад, ТоварыНаСкладахОстатки.Склад) КАК Склад,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура, ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличии,
    |    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК ПолныйОстаток
    |ПОМЕСТИТЬ ВТ_СвободныеОстатки
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(
    |            &НаДату,
    |            ВЫБОР
    |                    КОГДА &СкладВыбран
    |                        ТОГДА Склад = &ВыбСклад
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА &ВыбПрограммаВЫбран
    |                        ТОГДА Номенклатура В  (ВТ_СписокНом)
    |                    ИНАЧЕ Номенклатура В  (ВТ_СписокНом2)

Похоже на правду? Так бывает? (это только начало!)
14 m-serg74
 
09.03.14
14:39
(13) категорически против полное соединение, даешь ОБЪЕДИНИТЬ + группировка
15 Мисти
 
09.03.14
14:47
Пока вообще не работает!
    ТекстЗапроса =     
    "ВЫБРАТЬ
    |    СПрНом.Ссылка КАК Номенклатура
    |ПОМЕСТИТЬ ВТ_СписокНом
    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |ГДЕ
    |    (&НоменклатураНеЗаполнена
    |            ИЛИ СПрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ))
    |    И (НЕ &ВидНоменВыбран
    |            ИЛИ СПрНом.ВидНоменклатуры = &ВыбВидНомен)
    |;";        
    Если Не ВыбПрограмма.Пустая() Тогда
        ТекстЗапроса = ТекстЗапроса+
        " /////////////////////////////////////
        |    ВЫБРАТЬ
        |    НоменклатураДополнительныеРеквизиты.Ссылка Как Номенклатура
        |ПОМЕСТИТЬ ВТ_СписокНом2
        |ИЗ
        |    Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
        |ГДЕ
        |    НоменклатураДополнительныеРеквизиты.Ссылка в (ВТ_СписокНом)
        |    И НоменклатураДополнительныеРеквизиты.Значение = &ВыбЗначение
        |;";        
    КонецЕсли;    

Поле не найдено "ВТ_СписокНом"
НоменклатураДополнительныеРеквизиты.Ссылка в (<<?
16 Мисти
 
09.03.14
14:47
Почему против полное соединение? Так, по-моему, даже в типовой написано!
17 m-serg74
 
09.03.14
14:53
(16) пофиг на типовую, я же написал "я против" значит это сугубо мое личное мнение, хочешь прислушайся не хочешь не обращай внимание :)
18 m-serg74
 
09.03.14
14:55
(15) конечно...
вместо "(ВТ_СписокНом)"
попробуй В (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
19 m-serg74
 
09.03.14
14:56
(18) но вместо этого лучше внутреннее соединение сделай
20 Мисти
 
09.03.14
14:59
Хорошо бы обоснование личного мнения! Потому что на типовую я могу сослаться, ну и вообще, а на неизвестный мне ник - не очень. Вот на конкретные аргументы - было бы здорово!
Вообще, чувствую, деваться некуда, надо в этом безобразии начинать разбираться детально.
21 m-serg74
 
09.03.14
15:00
(20) типовую писал еще более неизвестный тебе ник
22 m-serg74
 
09.03.14
15:04
(20) поищи в гугл "что лучше полное соединение или объединение" там много полезного и изложено лучше чем я смогу описать
23 Мисти
 
09.03.14
15:10
А можно ссылку? В гугле всего много! Всё очень интересно, но нет времени читать - всё.
24 m-serg74
 
09.03.14
15:12
(23) нет времени читать - тогда сразу пробуй, или почитать за тебя?
25 m-serg74
 
09.03.14
15:14
26 Мисти
 
09.03.14
15:18
(25) Вау! Заработало! Спасибо, добрый человек!
27 Мисти
 
09.03.14
15:19
Ага, почитаю, тоже спасибо.
Какая самая доходчивая книжка по запросам?
Или куды бечь?
28 m-serg74
 
09.03.14
15:20
(27) [Какая самая доходчивая книжка по запросам?]

по прежнему гугл + умение искать в приоритете :)
29 Мисти
 
09.03.14
15:24
Объединение соединяет по вертикали, а соединение - по горизонтали - не очень понятно, можно пример?
30 m-serg74
 
09.03.14
15:25
(29) все примеры в конструкторе, на мисте писать лениво
31 m-serg74
 
09.03.14
15:25
(29) и кстати не все так буквально
32 m-serg74
 
09.03.14
15:27
(29) в (25) еще внимание обрати на 18 и 21 пост
33 Мисти
 
09.03.14
15:48
На самом деле - не сработало!
Ругаться перестало.
Самое главное, ради чего я переделывала - отбор по доп. реквизитам - не работает.
Почему??
    ТекстЗапроса =     
    "ВЫБРАТЬ
    |    СПрНом.Ссылка КАК Номенклатура
    |ПОМЕСТИТЬ ВТ_СписокНом
    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |ГДЕ
    |    (&НоменклатураНеЗаполнена
    |            ИЛИ СПрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ))
    |    И (НЕ &ВидНоменВыбран
    |            ИЛИ СПрНом.ВидНоменклатуры = &ВыбВидНомен)
    |;";        
    Если Не ВыбПрограмма.Пустая() Тогда
        ТекстЗапроса = ТекстЗапроса+
        " /////////////////////////////////////
        |    ВЫБРАТЬ
        |    НоменклатураДополнительныеРеквизиты.Ссылка Как Номенклатура
        |ПОМЕСТИТЬ ВТ_СписокНом2
        |ИЗ
        |    Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
        |ГДЕ
        |    НоменклатураДополнительныеРеквизиты.Ссылка В (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
        |    И НоменклатураДополнительныеРеквизиты.Значение = &ВыбПрограмма
        |;";        
    КонецЕсли;    
    ТекстЗапроса = ТекстЗапроса+
    
    "ВЫБРАТЬ
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Склад, ТоварыНаСкладахОстатки.Склад) КАК Склад,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура, ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличии,
    |    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК ПолныйОстаток
    |ПОМЕСТИТЬ ВТ_СвободныеОстатки
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(
    |            &НаДату,
    |            ВЫБОР
    |                    КОГДА &СкладВыбран
    |                        ТОГДА Склад = &ВыбСклад
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА &ВыбПрограммаВЫбран
    |                        ТОГДА Номенклатура В  (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
    |                    ИНАЧЕ Номенклатура В  (ВЫБРАТЬ ВТ_СписокНом2.Номенклатура ИЗ ВТ_СписокНом2)
      |                КОНЕЦ
    |             {(Номенклатура)}) КАК СвободныеОстаткиОстатки
    |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
    |                &НаДату,
    |                ВЫБОР
    |                        КОГДА &СкладВыбран
    |                            ТОГДА Склад = &ВыбСклад
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА &ВыбПрограммаВЫбран
    |                        ТОГДА Номенклатура В  (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
    |                    ИНАЧЕ Номенклатура В  (ВЫБРАТЬ ВТ_СписокНом2.Номенклатура ИЗ ВТ_СписокНом2)
      |                КОНЕЦ
    |             {(Номенклатура)}) КАК ТоварыНаСкладахОстатки
    |        ПО СвободныеОстаткиОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
    |            И СвободныеОстаткиОстатки.Склад = ТоварыНаСкладахОстатки.Склад
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |   СпрНом.Ссылка КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстатки.Склад, ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) КАК Склад,
    |    ЕСТЬNULL(СвободныеОстатки.ВРезерве, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстатки.ВНаличии, 0) КАК ВНаличии,
    |    ЕСТЬNULL(СвободныеОстатки.ПолныйОстаток, 0) КАК ПолныйОстаток,
    |    ПРЕДСТАВЛЕНИЕ(СвободныеОстатки.Номенклатура.ЕдиницаИзмерения) КАК ТовЕд,
    |    СвободныеОстатки.Номенклатура.Артикул КАК Артикул,
    |    СвободныеОстатки.Номенклатура.ЭтоГруппа
    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СвободныеОстатки КАК СвободныеОстатки
    |        ПО СпрНом.Ссылка = СвободныеОстатки.Номенклатура
    |Где (&ВыбПрограммаВЫбран и СпрНом.Ссылка В  (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
    |                    Или  Не &ВыбПрограммаВЫбран и СпрНом.Ссылка В  (ВЫБРАТЬ ВТ_СписокНом2.Номенклатура ИЗ ВТ_СписокНом2))
       |УПОРЯДОЧИТЬ ПО Артикул
    |ИТОГИ
    |    СУММА(ВРезерве),
    |    СУММА(ВНаличии),
    |    СУММА(ПолныйОстаток)
    |ПО
    |    Склад,
    |    Номенклатура ИЕРАРХИЯ"; //
    Возврат(ТекстЗапроса);
34 Мисти
 
09.03.14
15:50
Как бы посмотреть, что у меня в ВТ_СписокНом2 попало?
И произошел ли по нему отбор?
35 XLife
 
09.03.14
15:52
(34) в консоли запросов
36 Torquader
 
09.03.14
15:56
(34) Так вырежи кусок запроса, убери слово "Поместить" и выполняй в консоли - увидишь, что там есть.
37 XLife
 
09.03.14
15:58
(36) в нормальной консоли не надо ничего резать/убирать... достаточно просто посмотреть содержимое временной таблицы
38 Мисти
 
09.03.14
16:02
Где взять консоль запросов?
А для УФ есть?
39 Мисти
 
09.03.14
16:03
Ну гляньте, а в запросе ошибки, может, есть?
Сам по себе этот запрос работал (по доп. реквизитам)
40 Torquader
 
09.03.14
16:03
(37) Ну я обычно пишу запросы по частям, чтобы при отлаживании следующей части быть уверенным в предыдущей.
Правда, в последнее время вообще пишу в тексте, и как всегда, спотыкаюсь только на запятых не в том месте.
41 Torquader
 
09.03.14
16:04
(39) Как франч называется, которому мы так "помогаем" ?
(Если стыдно здесь, то хоть на почту напиши - обещаю не рассказывать).
42 Torquader
 
09.03.14
16:06
Зачем мы выбираем из справочника всю номенклатуру, удовлетворяющую условиям, если эти замечательные условия можно проверить и потом ?
43 Мисти
 
09.03.14
16:15
(40) У меня по частям всё работало, теперь же я всё "улучшила"! Чтоб как у людей!
Выбираю всю номенклатуру по условиям - чтоб доп. реквизиты искать по маленькой выборке.
ну и потом запроса по доп. реквизитам может и не быть.
44 m-serg74
 
09.03.14
16:15
(33) бредятина какая то, извиняюсь... а если ВыбПрограмма.Пустая() последние части запроса как узнают что ВТ_СписокНом2 не существует???
45 m-serg74
 
09.03.14
16:16
(43) [теперь же я всё "улучшила"! Чтоб как у людей!]
что то изменений не видно, даже вворуженным микроскопом взглядом
46 m-serg74
 
09.03.14
16:19
(44) сорри пропустил "&ВыбПрограммаВЫбран"
47 Мисти
 
09.03.14
16:19
А потому что там надо всё наоборот написать!
48 Мисти
 
09.03.14
16:20
|Где (Не &ВыбПрограммаВЫбран и СпрНом.Ссылка В  (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
    |                    Или  &ВыбПрограммаВЫбран и СпрНом.Ссылка В  (ВЫБРАТЬ ВТ_СписокНом2.Номенклатура ИЗ ВТ_СписокНом2))
49 m-serg74
 
09.03.14
16:20
(47) что поменялось то? помоему все без изменений осталось
50 m-serg74
 
09.03.14
16:21
(48) в (46) извинился
51 m-serg74
 
09.03.14
16:25
(50) наверное все таки зря извинялся если НЕ &ВыбПрограммаВЫбран, т.е. я так думаю ВТ_СписокНом2 не будет
а по условию ИНАЧЕ именно это будет проверяться

КОГДА &ВыбПрограммаВЫбран
    ТОГДА Номенклатура В  (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
ИНАЧЕ Номенклатура В  (ВЫБРАТЬ ВТ_СписокНом2.Номенклатура ИЗ ВТ_СписокНом2)
52 Мисти
 
09.03.14
16:26
Местами поменять - программа выбрана - список 2, программа не выбрана - список один.
Вроде, получилось!
53 Torquader
 
09.03.14
16:36
(52) Как бы, если выбран какой-то список или ещё какое-то дополнительное условие, то проще всего строку в запрос дописать (на стадии формирования текста запроса) и добавить параметры.
Зачем делать временную таблицу, в которую в случае отсутствия доп-условий будет выбрана вся номенклатура (типа кто-то "умный" сказал - маленькая выборка).
54 Мисти
 
09.03.14
16:50
Надо, чтобы с отборами отчет формировался быстро, а без отборов он по-любому формируется очень долго.
55 Мисти
 
09.03.14
16:51
строку в запрос дописать  - я не знаю, как по-другому прилепить запрос по доп. условиям.
56 Torquader
 
09.03.14
16:53
(55) Если мы отбираем номенклатуру, то в любой запрос в конце после слова ГДЕ можно добавить строку "И(условие)", и всё будет работать.
По-мойму, это даже во всех типовых есть.
57 Мисти
 
09.03.14
17:00
Меня смущает то, что доп. реквизиты - это ж другая таблица?
Это же не список номенклатуры?
58 Torquader
 
09.03.14
17:01
(57) Да, таблица другая, но что мешает сделать соединение или выборку во временную таблицу (причём только тогда, когда это надо), а не каждый раз сначала выбирать всё, а потом думать, что из этого всего нам нужно.
59 Мисти
 
09.03.14
17:02
Еще вопрос! Что там переделать, чтобы в отчет шло сначала по иерархии, а потом уже по артикулу?
60 Мисти
 
09.03.14
17:03
А временная  таблица из всего справочника существенно медленнее работает? (там около 3000 позиций)
61 Мисти
 
09.03.14
17:05
(58) Как сделать-то? Мешает то, что я не умею!
62 Torquader
 
09.03.14
17:05
(60) А через год там будет 30000 позиций и так далее.
Зачем выбирать "дерьмо мамонта", если оно просто ещё не удалено из справочника.
Потом, мне кажется очень странным, что не включили условие НЕ Спр.Группа ?
63 Torquader
 
09.03.14
17:06
(61) ... и не стремлюсь этому научиться - так ?
64 Torquader
 
09.03.14
17:08
Что есть ВыбПрограмма ?
65 Torquader
 
09.03.14
17:11
И ещё название франча неплохо бы сказать, а то, может быть, я своему врагу помогаю.
66 Мисти
 
09.03.14
17:11
(62) Нет! У них более- менее постоянный ассортимент.
Мне нужно всё равно с иерархией!
Это их некий дополнительный реквизит.
(65) Не скажу. Очень мелкий. Считай, что нет его.
67 Torquader
 
09.03.14
17:12
(66) Я как раз мелких и не люблю.
68 Мисти
 
09.03.14
17:13
А мы не любим крупных, и что?
69 Torquader
 
09.03.14
17:14
(68) Вы, по-мойму, долго думать не любите, ну и помнить что-то.
Поэтому, вам очень сложно работать.
70 Мисти
 
09.03.14
17:14
Стремлюсь! Простые запросы я уже легко пишу.
И книжки пересмотрела, те, что у меня есть. в 3 ничего нового, а еще 2 - надо внимательно читать, но запросов там нет.
71 Мисти
 
09.03.14
17:15
(69) Ну да, долго думать я даже не умею.
Не то, что моя дочка! Она может в состоянии полной сосредоточенности находиться часами.
72 Torquader
 
09.03.14
17:16
(71) Тогда понятно - всё в дочку ушло.
73 Torquader
 
09.03.14
17:17
Объясните мне - зачем внутри запроса писать условие по ВыбПрограмма, если можно в зависимости от этого условия менять текст запроса ?
74 Torquader
 
09.03.14
17:18
(71) И вообще, мне кажется, что вам ещё две дочки и домашний уют, а вот программированием пусть занимаются те, у кого ничего и никуда не ушло.
75 Мисти
 
09.03.14
17:22
Оказывается! Я добилась того, что у меня выводится только та номенклатура, которая есть на складе.
А мне нужна вся!
76 Мисти
 
09.03.14
17:24
(74) Да я бы с удовольствием уже, но детей пока надо содержать. И к тому же! Сложные для меня задачки встречаются где-то в 20% случаев, остальное я делаю нормально (хоть кто-то может и придраться, но работает!)
И к тому же! Второй раз - я уже представляю себе "где украсть".
77 Torquader
 
09.03.14
17:24
(75) Молодец! Добилась того, что слово "дятел" к тебе стало ещё ближе.

В общем, мне кажется, что если мы хотим остатки, то нужно делать соединение сначала с одним регистром, а потом с другим, делая суммирование по остаткам.
При соединении не забыть Null превратить в 0.
78 Torquader
 
09.03.14
17:25
(76) По вашим темам этого не скажешь - несколько раз бывает одно и то же.
79 Мисти
 
09.03.14
17:26
|ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СвободныеОстатки КАК СвободныеОстатки - разве это не говорит о том, что будет весь справочник?
80 Мисти
 
09.03.14
17:26
(78) Бывает, что я бросаю, не закончив (откладываю), а потом возвращаюсь.
81 Torquader
 
09.03.14
17:29
(79) Здесь всё нормально, только почему сюда вставляются "чудестные" условия по временным таблицам, а не просто отбор по условию ?
82 Torquader
 
09.03.14
17:30
Потом, группы номенклатуры явно в условие не попадают.
83 Мисти
 
09.03.14
17:35
|                И ВЫБОР
    |                    КОГДА &ВыбПрограммаВЫбран
    |                        ТОГДА Номенклатура В  (ВЫБРАТЬ ВТ_СписокНом2.Номенклатура ИЗ ВТ_СписокНом2)
    |                    ИНАЧЕ Номенклатура В  (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
      |                КОНЕЦ
84 Мисти
 
09.03.14
17:37
Вроде, по смыслу должно быть так (исправила)
Но теперь, если не выбрать группу - ругается!
Таблица не найдена "ВТ_СписокНом2"
ТОГДА Номенклатура В  (ВЫБРАТЬ ВТ_СписокНом2.Номенкл
85 Мисти
 
09.03.14
17:38
|ИТОГИ
    |    СУММА(ВРезерве),
    |    СУММА(ВНаличии),
    |    СУММА(ПолныйОстаток)
    |ПО
    |    Склад,
    |    Номенклатура ИЕРАРХИЯ";  - а вот это вконце не говорит о том, что попадут и группы?
86 Мисти
 
09.03.14
17:39
(81) "а не просто отбор по условию ? " - это как?
87 Torquader
 
09.03.14
17:43
Если ВыбПрограммаВыбран Тогда
ТекстЗапроса+="Номенклатура.Ссылка В (ВЫБРАТЬ ...ВТ_СписокНом2)";
Иначе
ТекстЗапроса+="Номенклатура.ССылка В (ВЫБРАТЬ ВТ_СписокНом.НОменклатура ИЗ ВТ_СписокНом)";
КонецЕсли;
88 Torquader
 
09.03.14
17:44
ТОлько ТекстЗапроса=ТекстЗапроса+"... оператора += в 1С пока нет.
89 Torquader
 
09.03.14
18:00
И вообще, если мы не умеем собирать текст запроса по частям, то пишем несколько вариантов текста запроса и выбираем нужный.

Например, если склад выбран, то мы отбираем с учётом склада, а если нет - то отбираем по всем складам.

Только менять надо не в самом запросе через Выбор, а при формировании его текста - ведь после момента формирования текста условия поменяться не могут.
90 Мисти
 
09.03.14
18:10
Я так раньше и делала.
У меня и сейчас их 2 - один с ценой, другой без цены.
Хочу чтоб уже по-человечески выглядело!
91 Torquader
 
09.03.14
18:17
(90) Потом, зачем мы делаем соединение регистров, когда проще выбрать сначала один, а потом выбрать другой (с группировкой по номенклатуре) - ?

Теперь, если хочется один текст, то его нужно собирать динамически - это понятно ?
92 Мисти
 
09.03.14
18:21
В каком смысле - проще выбрать сначала один потом другой?
Из регистров у меня всё хорошо выбирается!
Динамически - это непонятно в данном контексте.
93 Torquader
 
09.03.14
18:26
(92) Только объём выбираемого из регистров оставляет желать лучшего.

Также, когда мы накладываем условие на склад - проще дописать добавление условия "Склад=Склад" в текст запроса.
94 Torquader
 
09.03.14
18:33
Внимательно посмотрел в текст написанного запроса ... ать, ать, ать - ответило эхо.
А зачем мы в том запросе условие по номенклатуре вставляем, чтобы его несколько раз проверять ?
Потом что-то там намудрили с этим отбором - зачем условие ВыбПрограммаВыбран проверять на каждой строке, если оно ни в коем случае не поменяется в процессе выборки ?
95 Torquader
 
09.03.14
18:35
Мне кажется, что ВЫБРАТЬ ... ИЗ РегистрНакопления.СвободныеОстатки... ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ... ИЗ РегистрНакопления.ТоварыНаСкладах... а потом ГРУППИРОВАТЬ и СУММА по остаткам.
96 Torquader
 
09.03.14
19:08
А вообще - очень интересно, что думает семья женщины, которая вместо того, чтобы проводить выходные с семьёй пытается сделать то, что у неё никогда не получается.
97 Torquader
 
09.03.14
19:38
Пыталось "умное создание"
Создать прекраснейший вопрос,
И был, в процессе написания
Нам задан каверзный вопрос.

Ответов люди дали много,
Но не дано их все понять.
И "чуду" лишь одна дорога
Вопросом google напрягать.

А если что-то не выходит
Задачу можно поменять,
И так всегда по кругу ходит
Пытаясь программистом стать.

Клиентов рожи уже скисли
Им надо видеть результат
И, кажется, что скоро Мисти
Они дадут пинка под зад.

Однако, хочется другого,
Чтоб тот, кто думать не спешил,
Хоть раз в себя поверил снова
И сам задачи все решил.

^_^
98 m-serg74
 
09.03.14
20:59
(93) сгруппировать читать до посинения изо дня в день
99 m-serg74
 
09.03.14
21:00
(96) ее может не быть...
100 m-serg74
 
09.03.14
21:01
(97) не обижай женщин, они наше будущее, даже если не наши
101 Torquader
 
09.03.14
21:02
(100) Знаете ли, такое будущее светлым не назовёшь.
А потом, в данном случае - не пнёшь - не сделает.
102 m-serg74
 
09.03.14
21:04
(101) светлое с такими как ТС, стремится научится... это очень радует
103 Torquader
 
09.03.14
21:12
(102) Вечно стремиться научиться - будет более правильно.
А так, наверное, хорошая и старательная - только вот не выходит "каменный цветок".
104 m-serg74
 
09.03.14
21:16
/Вечно стремиться научиться/
я с детсвта учусь ... микрочип, атмел, мсп... что то не все до сих пор умею это плохо или я тупой?
105 m-serg74
 
09.03.14
21:21
(103) где ответ? или молчать проще?
106 Torquader
 
09.03.14
21:32
(104) Вы, в отличие от (0) всё запоминаете.
(105) Конечно, можно за (0) написать запрос, только вот проблема в том, что придётся писать всегда.
Это "чудо" сюда приходит только потому, что ему помогают.
Как раз из жалости, и потому, что старается.

И потом, я же, на самом деле, не очень-то и (0) обижаю, в отличие от некоторых. Да, есть желание назвать её дятлом, так это заслужено.
107 Torquader
 
09.03.14
21:35
Кроме того, (0) очень не любит читать синтаксис-помощник.
А в остальном, выпускник ВМиК МГУ, в любом случае, достоин уважения.

Удачи.
108 m-serg74
 
09.03.14
21:43
(107) "ВМиК МГУ"...
я самоучака... я не достоин?
109 m-serg74
 
09.03.14
21:44
(108) очепятка "самоучка"
110 Мисти
 
09.03.14
21:47
Короче, я вернулась.
Отчет, вроде, формируется правильно.
Под зад мне, вполне вероятно, там и дадут. Но! Я сделала всё, что меня просили! Вот просто - все задачи решены, всё работает, они перешли с 7 на 8.
Можно по буквам - что в этом запросе категорически не так - в смысле скорости?
111 Мисти
 
09.03.14
21:49
Я не слишком старательная, хватаюсь за все, и лишь бы работало - никогда ни красотой ни экспериментами не занимаюсь.
Мне оплачивают за 2 часа - я работаю 2 часа. (если туплю совсем, то туплю за свой счет)
112 m-serg74
 
09.03.14
21:56
(111) забей на все... всегда делать надо для себя... мыжпрограммысты и польза от нас одна... мы есть
113 m-serg74
 
09.03.14
21:57
(111) может мэйл хотя бы в профиле напишешь
114 m-serg74
 
09.03.14
22:06
(0) и это из пред. темы писала что конф. БП 3.0 ... не правда, там ни ТоварыНаСкладах ни СвободныеОстатки регистров накопления нету...
115 Мисти
 
09.03.14
22:07
3.0 отдельно, УТ+СРМ - отдельно.
116 Мисти
 
09.03.14
22:07
Так это, как запрос-то переделать?
Вроде, работает, как просили. но криво ж?
117 m-serg74
 
09.03.14
22:14
(115) во ис?
" УТ+СРМ"
118 Мисти
 
09.03.14
22:16
Что такое - "во ис"?
119 m-serg74
 
09.03.14
22:16
who is
120 Мисти
 
09.03.14
22:18
Разработка Раруса.
121 Мисти
 
09.03.14
22:19
(95) А отборы все куда?
122 m-serg74
 
09.03.14
22:19
(120) это к чему?
123 Мисти
 
09.03.14
22:21
УТ+СРМ - разработка раруса.
124 m-serg74
 
09.03.14
22:28
(123) если до завтра терпит, то (113)
125 Мисти
 
09.03.14
22:37
Написала!
А еще мне иерархия нужна, а у меня она какая-то странная получается.
126 m-serg74
 
09.03.14
22:43
(125) иерархия в самом последнем запросе или части запроса если в одном запросе все делается
127 Мисти
 
09.03.14
22:47
Ну, я так и написала.
Вообще, конечно, ерунда у меня какая-то в запросе получается - по каждой группе номенклатуры по 3 строки, по каждой номенклатуре - по 2.
128 Torquader
 
09.03.14
22:48
(125) Чтобы иерархия была красивой, нужно группы из запроса исключить - иначе на группу будет две строки, что выглядит не айс.
129 Мисти
 
09.03.14
22:49
У меня мэйл-агент не установлен. во всяком случае, я им не пользуюсь.
130 Torquader
 
09.03.14
22:50
(127) Две вижу, а вот три - это кто-то явно перестарался.
Везде, где выбирается номенклатура вставь "И НЕ Номенклатура.ЭтоГруппа"
131 m-serg74
 
09.03.14
22:56
(127) итоги потому что еще в прошлой теме я же писал в топку нада
132 Мисти
 
09.03.14
23:00
Значит, моя идея, что сначала всё отобрать по справочнику была неправильной.
Давайте всё сначала!
133 Мисти
 
09.03.14
23:00
ВЫБРАТЬ
    |    СвободныеОстаткиОстатки.Номенклатура,
    |    СвободныеОстаткиОстатки.Склад,
    |    СвободныеОстаткиОстатки.ВНаличииОстаток,
    |    СвободныеОстаткиОстатки.ВРезервеОстаток,
    |    NULL КАК КОтгрузкеОстаток
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.Номенклатура,
    |    ТоварыНаСкладахОстатки.Склад,
    |    ТоварыНаСкладахОстатки.ВНаличииОстаток,
    |    NULL,
    |    ТоварыНаСкладахОстатки.КОтгрузкеОстаток
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
134 NcSteel
 
09.03.14
23:02
Угадываю автора по теме.... Сразу понял кто автор, так как тема глупа ... ))) Это просто Света из Свет.
135 Мисти
 
09.03.14
23:04
Тогда только здесь, потом-то только отсюда вся номенклатура берется, разве нет?

    "ВЫБРАТЬ
    |    СПрНом.Ссылка КАК Номенклатура
    |ПОМЕСТИТЬ ВТ_СписокНом
    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |ГДЕ
    |    (&НоменклатураНеЗаполнена
    |            ИЛИ СПрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ))
    |    И (НЕ &ВидНоменВыбран
    |            ИЛИ СПрНом.ВидНоменклатуры = &ВыбВидНомен И НЕ Номенклатура.ЭтоГруппа)
    |;";
136 Мисти
 
09.03.14
23:05
Где я теперь получу ВНаличииОстаток, если он мне нужен из регистра ТоварыНаСкладахОстатки?
137 NcSteel
 
09.03.14
23:08
Никогда! Запомните НИКОГДА не используйте в условиях ИЛИ.... по крайней мере два раза..... это рукалицо
138 Мисти
 
09.03.14
23:10
(137) Почему??
139 m-serg74
 
09.03.14
23:14
(138) просто прими на веру... НИКОГДА ... ДВА РАЗА... иначе это просто напрасно
140 Мисти
 
09.03.14
23:16
Не, ну мне так совсем непонятно. Должен же быть ответ!
141 Мисти
 
09.03.14
23:16
В книжке моей про это ничего нет.
142 m-serg74
 
09.03.14
23:17
ты сама пишешь книжку?
143 Torquader
 
09.03.14
23:17
ТекстЗапроса="ВЫБРАТЬ
|СпрНом.Ссылка КАК Номенклатура
|ПОМЕСТИТЬ ВТ_СписокНом
|ИЗ
|Справочник.Номенклатура КАК СпрНом";
Если(НоменклатураЗаполнена)ИЛИ(ВыбранВидНоменклатуры)Тогда
ТекстЗапроса=ТекстЗапроса+"
|ГДЕ";
Если НоменклатураЗаполнена Тогда
  ТекстЗапроса=ТекстЗапроса+"
   |СпрНом.Ссылка В ИЕРАРХИИ (&ВыбТмц)";
  Зпр.УстановитьПараметр("ВыбТмц",СписокНоменклатуры);
КонецЕсли;
Если ВыбранВидНоменклатуры Тогда
  ТекстЗапроса=ТекстЗапроса+"
   |СпрНом.ВидНоменклатуры=&ЗаданныйВид";
  Зпр.УстановитьПараметр("ЗаданныйВид",ВидНоменклатуры);
КонецЕсли;
КонецЕсли;
144 NcSteel
 
09.03.14
23:19
(140)
Использование логического ИЛИ в секции ГДЕ запроса

Не следует использовать ИЛИ в секции ГДЕ запроса. Это может привести к тому, что СУБД не сможет использовать индексы таблиц и будет выполнять сканирование, что увеличит время работы запроса и вероянтность возникновения блокировок. Вместо этого следует разбить один запрос на несколько и объединить результаты.
Например, запрос

ВЫБРАТЬ Товар.Наименование ИЗ Справочник.Товары КАК Товар ГДЕ Артикул = "001" ИЛИ Артикул = "002"

следует заменить на запрос

ВЫБРАТЬ Товар.Наименование ИЗ Справочник.Товары КАК Товар ГДЕ Артикул = "001"
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ Товар.Наименование ИЗ Справочник.Товары КАК Товар ГДЕ Артикул = "002"
145 Torquader
 
09.03.14
23:20
Конечно, так как мы это условие используем в нескольких местах, то лучше его "сложить" в отдельную переменную, которую потом просто вставлять в запрос, где нужно.
146 Мисти
 
09.03.14
23:20
Ну, я раньше ьак всегда делала!
Хочу от этого отучиться, потому что быстрее же работает, если условия внутри регистра, например, задавать, а не потом - "где".
147 Torquader
 
09.03.14
23:21
(144) У неё там ИЛИ используется для того, чтобы выключать условие, которое она собирает до исполнения запроса. То есть, если всё написать стандартно - или просто не будет.
148 Мисти
 
09.03.14
23:21
(144) Ух ты! Спасибо! Выучу.
149 NcSteel
 
09.03.14
23:21
(146) Надо знать структуру таблиц и понимать, почему быстрее , а почему нет .... И далеко не всегда использовать параметры виртуальных таблиц работает быстрее
150 Мисти
 
09.03.14
23:24
А когда нет? Вот, например, условие по складу для регистра свободных остатков?
151 m-serg74
 
09.03.14
23:24
(148) я еще в прошлой теме написал - посмотри сообщения про "все должно руководствоваться головой" в каждом случае надо думать
152 m-serg74
 
09.03.14
23:25
(150) как минимум вместе [условие по складу] это сделать параметром виртуальной таблицы
153 Мисти
 
09.03.14
23:26
(143) Мы же решили начать с регистров!
154 Torquader
 
09.03.14
23:26
(150) А что там в условии ?
Если склад не задан, то просто его не указываем, если склад задан только один, то проверка на равно, если их несколько, тогда в списке.
И количество складов известно на момент формирования текста запроса, поэтому, на момент исполнения запроса известно, что там будет.
155 Torquader
 
09.03.14
23:27
(153) Я тебе показываю, что условие можно добавить в любое место запроса без всяких танцев с ИЛИ.
156 Мисти
 
09.03.14
23:27
Ну да, либо склад выбран, либо по всем - его быстрее в условии регистра или "Где"?
157 m-serg74
 
09.03.14
23:27
(152) вместе ... вместо
158 Мисти
 
09.03.14
23:28
(157) Так понятнее.
159 Мисти
 
09.03.14
23:28
У меня в запросе получается половина строк с единицей и артикулом, а половина - без. Ну, т.е. одна какая-то лишняя явно.
160 Torquader
 
09.03.14
23:29
(156) Так что мешает дописать его в текст запроса после ГДЕ по условию, а не городить что-то другое.
161 m-serg74
 
09.03.14
23:29
(159) соединение такое соединение
162 Мисти
 
09.03.14
23:29
Короче, кто мне наконец, уже более-менее всё это перепишет?
А я потом прикручу к этому цены - САМА!
163 Torquader
 
09.03.14
23:29
(159) Обход результата запроса с группировками нужно смотреть - вы там группировали по ИЕРАРХИИ (итоги строили), а потом обходите всё линейно.
164 m-serg74
 
09.03.14
23:30
(162) - (124)
165 Мисти
 
09.03.14
23:30
Я обхожу по группировкам.
166 Torquader
 
09.03.14
23:36
Пусть у нас СписокНоменклатуры - наш список номенклатуры, в котором она должна быть.
ВидНоменклатуры - наш вид номенклатуры, который пользователь может выбрать.

Тогда сначала формируем условие.

УсловиеЗапроса="";
Если СписокНоменклатуры.Количество()>0 Тогда
УсловиеЗапроса=УсловиеЗапроса+"
  |СпрНом.Ссылка В ИЕРАРХИИ(&ПарамСписокНоменклатуры)";
Зпр.УстановитьПараметр("ПарамСписокНоменклатуры",СписокНоменклатуры);
КонецЕсли;
Если ЗначениеЗаполнено(ВидНоменклатуры)Тогда
УсловиеЗапроса=УсловиеЗапроса+"
  |СпрНом.ВидНоменклатуры=ПарамВидНоменклатуры";
Зпр.УстановитьПараметр("ПарамВидНоменклатуры",ВидНоменклатуры);
КонецЕсли;

Далее, это можно вставить в запрос.
167 Torquader
 
09.03.14
23:39
ТекстЗапроса="
    |ВЫБРАТЬ
    |    СвободныеОстаткиОстатки.Номенклатура,
    |    СвободныеОстаткиОстатки.Склад,
    |    СвободныеОстаткиОстатки.ВНаличииОстаток,
    |    СвободныеОстаткиОстатки.ВРезервеОстаток,
    |    NULL КАК КОтгрузкеОстаток
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки КАК СвободныеОстаткиОстатки";
Если УсловиеЗапроса<>"" Тогда
ТекстЗапроса=ТекстЗапроса+"
    |ГДЕ
    |"+УсловиеЗапроса;
КонецЕсли;
ТекстЗапроса=ТекстЗапроса+"
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.Номенклатура,
    |    ТоварыНаСкладахОстатки.Склад,
    |    ТоварыНаСкладахОстатки.ВНаличииОстаток,
    |    NULL,
    |    ТоварыНаСкладахОстатки.КОтгрузкеОстаток
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки";
Если УсловиеЗапроса<>"" Тогда
ТекстЗапроса=ТекстЗапроса+"
    |ГДЕ
    |"+УсловиеЗапроса;
КонецЕсли;

в общем, где-то так.
168 Torquader
 
09.03.14
23:42
С условием, кстати, я фигню написал - там ИЛИ нужно вставлять.
То есть так:

УсловиеЗапроса="";
Если СписокНоменклатуры.Количество()>0 Тогда
УсловиеЗапроса="СпрНом.Ссылка В ИЕРАРХИИ(&ПарамСписокНоменклатуры)";
Зпр.УстановитьПараметр("ПарамСписокНоменклатуры",СписокНоменклатуры);
КонецЕсли;
Если ЗначениеЗаполнено(ВидНоменклатуры)Тогда
Если УсловиеЗапроса<>"" Тогда
  УсловиеЗапроса="("+УсловиеЗапроса+")И(СпрНом.ВидНоменклатуры=ПарамВидНоменклатуры)";
Иначе
  УсловиеЗапроса="СпрНом.ВидНоменклатуры=ПарамВидНоменклатуры";
КонецЕсли;
Зпр.УстановитьПараметр("ПарамВидНоменклатуры",ВидНоменклатуры);
КонецЕсли;
169 Torquader
 
09.03.14
23:47
Ой, и ещё Null заменить на 0, так как Null в запросе просто никому не нужен.

Ну и сгруппировать нужно результат по выбранным полям с суммой, особенно, если склад не указан - иначе будет куча строк для одной и той же номенклатуры.
170 Torquader
 
09.03.14
23:49
В общем, если немного посидеть, то можно и дописать.
171 Мисти
 
10.03.14
12:49
Надо максимум ограничений прямо в регистре указать, а не "где", за это меня уже пороли!
Или это мало влияет на скорость?
172 Мисти
 
10.03.14
12:51
И чем плохо - сначала отобрать список номенклатуры (как я собиралась), а потом по нему рассчитывать остатки? (там еще и цены потом)
Или вот так - (как сначала было)

  "ВЫБРАТЬ
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Склад, ТоварыНаСкладахОстатки.Склад) КАК Склад,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура, ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура.ВидНоменклатуры, ТоварыНаСкладахОстатки.Номенклатура.ВидНоменклатуры) КАК ВидНоменклатуры,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличии,
    |    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК ПолныйОстаток,
    |    СвободныеОстаткиОстатки.Номенклатура.ВидНоменклатуры КАК ВидНомен
    |ПОМЕСТИТЬ ВТ_СвободныеОстатки
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(
    |            &НаДату,
    |            ВЫБОР
    |                    КОГДА &СкладВыбран
    |                        ТОГДА Склад = &ВыбСклад
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА &ВыбТМЦВыбран
    |                        ТОГДА Номенклатура В ИЕРАРХИИ (&ВыбТМЦ)
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА &ВидНоменВыбран
    |                        ТОГДА Номенклатура.ВидНоменклатуры = &ВыбВидНомен
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ {(Номенклатура)}) КАК СвободныеОстаткиОстатки
173 Мисти
 
10.03.14
12:52
Про полное соединение - это мне тут кто-то написал в прошлый раз.
Я так и не поняла, чем его заменить (как это будет выглядеть)
174 Torquader
 
10.03.14
14:16
(173) Полное соединение иногда интересно, но не в данном случае. Вы выбираете остатки из одного регистра и резервы - из другого, поэтому, логичнее отбирать сначала один, а потом другой (то есть объединение), а соединение в данном случае выглядит не очень понятно.
Кстати, можно посмотреть в любой типовой как делается любая выборка из нескольких регистров.

Кроме того, если у вас будут цены, то нужно предполагать, что на складе будут одинаковые товары с разными ценами (если, конечно, не розничная торговля).

Сначала отобрать список номенклатуры можно только тогда, когда есть доп-условия (по дополнительным свойствам) - так как соединение с основным запросом выглядит не очень красиво.

Если же условия на значения номенклатуры, то можно делать соединения сразу в отборе по регистру (однако, это всё равно будет обращение к таблице Номенклатура).

Хотя, если вы хотите получить все товары, которые удовлетворяют отбору вне зависимости от остатков, то вполне допустимо сначала просто их отобрать, так как всё равно от выборки по всем товарам не уйти, но в этом случае, количество товаров не должно быть большим.
Самое главное, что при выборе регистров всё равно будет делаться соединение с этой виртуальной таблицей товаров, и, если в ней товаров не сильно меньше, чем в самой таблице товаров, то вы потеряете время на формирование временной таблицы.
Можно не делать соединение с таблицей регистра и выбрать сначала остатки всех товаров, но, если большую часть этой выборки мы потом отбросим, то не за чем напрягать сервер.
175 Мисти
 
10.03.14
16:04
Цена нужна только какая-то одна. Если нет цены - то и не надо, пусть будут только остатки.
Тогда надо писать 4 разных запроса - с ценой один (у меня не получилось объединить), по всей номенклатуре - другой, по номенклатуре с отбором - третий, а с отбором по доп. реквизитам - четвертый.
176 Torquader
 
10.03.14
16:33
(175) Наконец-то, кто-то понял, что одним запросом несколько зайцев убить не получится.
177 Мисти
 
10.03.14
17:14
Да у меня и так их 2! Это как раз мой метод.
178 Мисти
 
10.03.14
17:14
Так что делать, если для всего справочника номенклатуры?
179 Мисти
 
10.03.14
17:19
Мне еще с иерархией надо разобраться!
И можно ли обойтись без итогов, если я потом делаю обход по группировкам?
180 Torquader
 
10.03.14
17:20
(178) Если для всего справочника, то "левое соединение" с двумя регистрами и выбор значений.
Номенклатура ЛевоеСоединение Рег1 По Ном.Ссылка=Рег1.Ном ЛевоеСоединение Рег2 По Ном.Ссылка=Рег2.Ном
181 Torquader
 
10.03.14
17:21
(179) Если хочется итоги по группам, то без итогов не обойтись - иначе группы будут, а итоги - нет.
182 Мисти
 
10.03.14
17:40
Пока надо решить основную проблему.
У меня написано в конце -
    |УПОРЯДОЧИТЬ ПО
    |    Артикул
    |ИТОГИ
    |    СУММА(ВРезерве),
    |    СУММА(ВНаличии),
    |    СУММА(ПолныйОстаток)
    |ПО
    |    Склад,
    |    Номенклатура ИЕРАРХИЯ
    |АВТОУПОРЯДОЧИВАНИЕ"; //


В итоге у меня всё упорядочивается по артикулу, товары попадают в свою группу, но группы идут не в том порядке, в котором в справочнике!
И что там у меня еще было ужасно? Спр.Группа убрала, задваивания строк нет! Это я не сообразила - первая строка идет по складу, вторая - по номенклатуре.
183 Torquader
 
10.03.14
18:04
Зачем нужно упорядочивание по артикулу ?
Или это заказчики хотели ?
Просто, в случае иерархии по номенклатуре это будет выглядеть очень странно.
184 Мисти
 
10.03.14
18:19
Да, они хотят, чтоб порядок групп - как в справочнике, а в группе - по артикулу.
Сейчас проверю - если убрать по артикулу и оставить автоупорядочивание (а это что?) - может, так и получится?
185 Мисти
 
10.03.14
18:34
Не-а, группы встали на место, а внутри группы - не по артикулу.
186 Мисти
 
10.03.14
18:37
По умолчанию, если открыть справочник номенклатуры - там тоже не по артикулу.
Я могу предложить только такой дурацкий способ - по группам выгружать в таблицу там сортировать, и выводить.
187 Torquader
 
10.03.14
19:02
Смотри - когда ты включаешь упорядочивание по артикулу - все товары в запросе выбираются по артикулу, а группы достраиваются после попадания товара в отчёт, то есть до появления товара группа никак не может попасть в запрос.
188 GANR
 
10.03.14
19:03
(0) Неужели не проще сделать за 2-3 недели то, что я рекомендовал, а не плодить в течение нескольких месяцев вопросы про один и тот же запрос??? Обучающий курс, про который я говорил, проходят даже люди, которым за 60 http://sql-ex.ru/users_page.php?uid=10332 - и ничего.
189 Мисти
 
10.03.14
19:06
Давай курс! Я уже почти созрела.
190 Мисти
 
10.03.14
19:07
(187) Это странно звучит, как будто речь о переборе.
Оно же всё одновременно появляется в запросе!
Если нет нормального пути - сделаю через таблицу.
191 Torquader
 
10.03.14
19:09
(190) Автоупорядочивание - в твоём случае, упорядочивание по наименованию справочника, но вы ему сказали по артикулу.
Можно попробовать добавить в запрос родителя номенклатуры, упорядочить сначала по нему (то есть по его имени), а потом уже по артикулу (будет для тех, у кого родитель совпал).
192 Мисти
 
10.03.14
19:16
Мне нравятся твои советы! У меня возникает вопрос - "почему я сама до этого не додумалась?", а не - "что этоо??"
193 Мисти
 
10.03.14
19:17
А зачем тогда нужна галка "автоупорядочивание", если и без нее всё так же упорядочивается?
194 Torquader
 
10.03.14
19:21
В системе результат запроса упорядочивается по внутреннему ID, который не очень понятен, если же сказано "автоупорядочивание", то это говорит машине, что пользователь хочет видеть упорядоченный результат так, как он показывается в списке.
Однако, автоупорядочивание работает уже после команды "упорядочить по", и в вашем случае "упорядочить ПО артикул" перекрывает автоупорядочивание, которое проявится только тогда, когда совпадут артикулы.
195 Torquader
 
10.03.14
19:23
(192) Если кто-то не хочет думать, это значит, что он на что-то отвлекается.
А вообще, можно почитать любую инструкцию по настоящему SQL, чтобы понять, как он работает - в 1С пытались сделать тоже самое, но на русском языке.
P.S. я видел женщину твоего возраста, которая на ура с Oracle работала, так что ничего невозможного нет.
196 Мисти
 
10.03.14
19:29
Да дело не в возрасте.
Ума у меня, и правда, маловато. Точнее, нет объемного воображения, чтоб с таблицами работать.
197 Мисти
 
10.03.14
19:33
Очень интересно! Группы построились правильно, а номенклатура - в обратном порядке.
198 Мисти
 
10.03.14
19:49
Усё. Получилось.
199 rphosts
 
10.03.14
20:12
не прошло и 2 недель...
200 Мисти
 
10.03.14
20:26
Бред какой-то! На меленькой группе (внутри еще один уровень подгрупп) - всё красиво, а на большой (внутри - 2 уровня подгрупп) - всё наоборот - подгруппы в неизвестно каком порядке и иерархия в обратную сторону.
201 Torquader
 
10.03.14
20:32
(200) Сортировка по родителям была в каком порядке ?
И по чему они упорядочены при выводе в списке ?
202 Мисти
 
10.03.14
20:36
Я не стала править то, что как бы и работает пока. Хоть бы добиться вида нужного.
    ТекстЗапроса =     
    "ВЫБРАТЬ
    |    СПрНом.Ссылка КАК Номенклатура
    |ПОМЕСТИТЬ ВТ_СписокНом
    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |ГДЕ
    |    (&НоменклатураНеЗаполнена
    |            ИЛИ СПрНом.Ссылка В ИЕРАРХИИ (&ВыбТМЦ))
    |    И (НЕ &ВидНоменВыбран
    |            ИЛИ СПрНом.ВидНоменклатуры = &ВыбВидНомен )И НЕ СПрНом.ЭтоГруппа
    |;";        
    Если Не ВыбПрограмма.Пустая() Тогда
        ТекстЗапроса = ТекстЗапроса+
        " /////////////////////////////////////
        |    ВЫБРАТЬ
        |    НоменклатураДополнительныеРеквизиты.Ссылка Как Номенклатура
        |ПОМЕСТИТЬ ВТ_СписокНом2
        |ИЗ
        |    Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
        |ГДЕ
        |    НоменклатураДополнительныеРеквизиты.Ссылка В (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
        |    И НоменклатураДополнительныеРеквизиты.Значение = &ВыбПрограмма
        |;";        
    Иначе
        ТекстЗапроса = ТекстЗапроса+
        " /////////////////////////////////////
        |    ВЫБРАТЬ
        |    НоменклатураДополнительныеРеквизиты.Ссылка Как Номенклатура
        |ПОМЕСТИТЬ ВТ_СписокНом2
        |ИЗ
        |    Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
        |ГДЕ
        |    НоменклатураДополнительныеРеквизиты.Ссылка В (ВЫБРАТЬ ВТ_СписокНом.Номенклатура ИЗ ВТ_СписокНом)
        |    И НоменклатураДополнительныеРеквизиты.Значение = &ВыбПрограмма
        |;";        
    КонецЕсли;    
    ТекстЗапроса = ТекстЗапроса+
    
    "ВЫБРАТЬ
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Склад, ТоварыНаСкладахОстатки.Склад) КАК Склад,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура, ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстаткиОстатки.ВНаличииОстаток, 0) КАК ВНаличии,
    |    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК ПолныйОстаток
    |ПОМЕСТИТЬ ВТ_СвободныеОстатки
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(
    |            &НаДату,
    |            ВЫБОР
    |                    КОГДА &СкладВыбран
    |                        ТОГДА Склад = &ВыбСклад
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ
    |                И ВЫБОР
    |                    КОГДА НЕ &ВыбПрограммаВыбран
    |                        ТОГДА Номенклатура В
    |                                (ВЫБРАТЬ
    |                                    ВТ_СписокНом.Номенклатура
    |                                ИЗ
    |                                    ВТ_СписокНом)
    |                    ИНАЧЕ Номенклатура В
    |                            (ВЫБРАТЬ
    |                                ВТ_СписокНом2.Номенклатура
    |                            ИЗ
    |                                ВТ_СписокНом2)
    |                КОНЕЦ {(Номенклатура)}) КАК СвободныеОстаткиОстатки
    |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
    |                &НаДату,
    |                ВЫБОР
    |                        КОГДА &СкладВыбран
    |                            ТОГДА Склад = &ВыбСклад
    |                        ИНАЧЕ ИСТИНА
    |                    КОНЕЦ
    |                    И ВЫБОР
    |                        КОГДА &ВыбПрограммаВЫбран
    |                            ТОГДА Номенклатура В
    |                                    (ВЫБРАТЬ
    |                                        ВТ_СписокНом2.Номенклатура
    |                                    ИЗ
    |                                        ВТ_СписокНом2)
    |                        ИНАЧЕ Номенклатура В
    |                                (ВЫБРАТЬ
    |                                    ВТ_СписокНом.Номенклатура
    |                                ИЗ
    |                                    ВТ_СписокНом)
    |                    КОНЕЦ {(Номенклатура)}) КАК ТоварыНаСкладахОстатки
    |        ПО СвободныеОстаткиОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
    |            И СвободныеОстаткиОстатки.Склад = ТоварыНаСкладахОстатки.Склад
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    СПрНом.Ссылка КАК Номенклатура,
    |    ЕСТЬNULL(СвободныеОстатки.Склад, ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) КАК Склад,
    |    ЕСТЬNULL(СвободныеОстатки.ВРезерве, 0) КАК ВРезерве,
    |    ЕСТЬNULL(СвободныеОстатки.ВНаличии, 0) КАК ВНаличии,
    |    ЕСТЬNULL(СвободныеОстатки.ПолныйОстаток, 0) КАК ПолныйОстаток,
    |    ПРЕДСТАВЛЕНИЕ(СвободныеОстатки.Номенклатура.ЕдиницаИзмерения) КАК ТовЕд,
    |    СвободныеОстатки.Номенклатура.Артикул КАК Артикул,
    |    СвободныеОстатки.Номенклатура.ЭтоГруппа,
    |    СПрНом.Код,
    |    СПрНом.Родитель КАК Родитель
    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СвободныеОстатки КАК СвободныеОстатки
    |        ПО СПрНом.Ссылка = СвободныеОстатки.Номенклатура
    |ГДЕ
    |    (НЕ &ВыбПрограммаВЫбран
    |                И СПрНом.Ссылка В
    |                    (ВЫБРАТЬ
    |                        ВТ_СписокНом.Номенклатура
    |                    ИЗ
    |                        ВТ_СписокНом)
    |            ИЛИ &ВыбПрограммаВЫбран
    |                И СПрНом.Ссылка В
    |                    (ВЫБРАТЬ
    |                        ВТ_СписокНом2.Номенклатура
    |                    ИЗ
    |                        ВТ_СписокНом2))
    |
    |УПОРЯДОЧИТЬ ПО
    |    Родитель,
    |    Артикул
    |ИТОГИ
    |    СУММА(ВРезерве),
    |    СУММА(ВНаличии),
    |    СУММА(ПолныйОстаток)
    |ПО
    |    Склад,
    |    Номенклатура ИЕРАРХИЯ";
203 Мисти
 
10.03.14
20:37
Смотрю в отладчике результат запроса - там так и есть, первая группа упорядочена по артикулу по возрастанию, а остальные - по убыванию.
Терроризм какой-то.
204 GANR
 
10.03.14
21:04
(189) А чего его давать? Регистрируемся на ресурсе из (188), решаем 63 упражнения (1-й сертификат) на рейтинговом этапе и такие вопросы отпадают.
205 Torquader
 
10.03.14
21:12
(202) А почему Артикул выбирается из СвободныхОстатков - что там будет, когда остатков нет - Null и что с этим делать ?
206 Мисти
 
10.03.14
21:25
(205) чушь какая. Это кто так написал???
207 Torquader
 
10.03.14
21:29
(206) И ЭтоГруппа оттуда же.
Кто написал, по-мойму, это очевидно - и ему должно быть стыдно и обидно.
208 Мисти
 
10.03.14
22:54
Теперь по артикулу всё идет правильно, а группы - еще в запросе стоят не в том порядке, не по алфавиту.
Хотя уже написала - сортировать по наименованию родителя.
    |    СПрНом.Код,
    |    СПрНом.ЭтоГруппа,
    |    СПрНом.Артикул КАК Артикул,
    |    СПрНом.Родитель.Наименование КАК РодительНаименование
    |ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СвободныеОстатки КАК СвободныеОстатки
    |        ПО СПрНом.Ссылка = СвободныеОстатки.Номенклатура
    |ГДЕ
    |    ((НЕ &ВыбПрограммаВЫбран
    |                И СПрНом.Ссылка В
    |                    (ВЫБРАТЬ
    |                        ВТ_СписокНом.Номенклатура
    |                    ИЗ
    |                        ВТ_СписокНом)
    |            ИЛИ &ВыбПрограммаВЫбран
    |                И СПрНом.Ссылка В
    |                    (ВЫБРАТЬ
    |                        ВТ_СписокНом2.Номенклатура
    |                    ИЗ
    |                        ВТ_СписокНом2))и не Спрном.ЭтоГруппа)
    |
    |УПОРЯДОЧИТЬ ПО
    |    РодительНаименование,
    |    Артикул
    |ИТОГИ
    |    СУММА(ВРезерве),
    |    СУММА(ВНаличии),
    |    СУММА(ПолныйОстаток)
    |ПО
    |    Склад,
    |    Номенклатура ИЕРАРХИЯ"; //
    Возврат(ТекстЗапроса);
209 Мисти
 
10.03.14
22:58
(204) Так это не совсем чтоб 1С!
И вообще, я привыкла на русском писать.
Мне бы такой же - но прямо чтоб 1С.
210 Torquader
 
10.03.14
23:34
СпрНом.ЭтоГруппа при выборе вам зачем ?
Собственно, как и код.

Если и так не получилось, то выбирай номенклатуру в отдельную таблицу, как в иерархии, а потом из этой таблицы выбирай только элементы.
211 Мисти
 
10.03.14
23:54
Так элементы нормально! У меня группы набекрень.
212 Мисти
 
10.03.14
23:55
Код = чтоб в таблице посмотреть в отладчике.
А он мешает?
213 vicof
 
11.03.14
00:29
(210) удивляюсь вашему хладнокровию и педагогическим способностям.
214 Torquader
 
11.03.14
01:27
(213) Вы никогда не пробовали приучать котёнка к сортиру - вот там терпения нужно на целый день, так как эти животные не могут продумывать своих действий.
А в данном случае - человек - и даже что-то пытается сделать.
И, вполне вероятно, что даже сделает.

(211) Попробуй сначала выбрать справочник с группами (во временную таблицу), а потом группы убрать.
(И это можно делать на тестовом запросе без соединения с регистром - чтобы быстрее выполнялось).
215 Мисти
 
11.03.14
01:36
(214) Спасибо за помощь, но я не поняла, как это.
А кошки, кстати, сами понимают про сортир всё, во всяком случае, котята - точно. Вот щенки совсем не сразу.
216 vicof
 
11.03.14
02:41
(214) я кошку за один день приучил, просто отнес в туалет и все) сама все поняла. Но человека заставить сделать самому-просто отнести,положить,показать,разжевать мало. Пока у Мисти не появится внутренняя мотивация-так и будет сидеть и тупить. Человеке животное ленивое.
217 Torquader
 
11.03.14
09:01
В общем, в умной книжке написано, что для получения правильной иерархии нужно выбирать с группами, а в упорядочивании писать СпрНом.Ссылка ИЕРАРХИЯ.
Соответственно, группы можно будет потом "выкинуть" при получении результата запроса.
218 Мисти
 
11.03.14
09:14
Ого! Говорит - "Нельзя использовать иерархическую сортировку в запросе с итогами.
219 Wobland
 
11.03.14
09:17
не хочу читать двести постов. вижу желание группировки в (208), сформулированное странным образом
220 Мисти
 
11.03.14
10:36
А что там странного?
Там же соединение с остатками!
|ИЗ
    |    Справочник.Номенклатура КАК СПрНом
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СвободныеОстатки КАК СвободныеОстатки
221 Torquader
 
11.03.14
10:44
(219) Она хочет "интересную" группировку и итоги по группам - что тут такого странного (разве что желание внутри группы отсортировать по артикулу).
222 Wobland
 
11.03.14
10:48
(221) она знает, что ЭТОГИ дадут ей дерево?
223 Мисти
 
11.03.14
10:49
Да, потом обход по группировкам - по складу и по номенклатуре.
224 Torquader
 
11.03.14
12:15
(222) Они ей уже дали дерево, только ветки на этом дереве в другую сторону смотрят.
225 Torquader
 
11.03.14
12:16
На самом деле - задача не совсем тривиальная - получить дерево, как оно выглядит в справочнике да ещё и с итогами по ветвям.
226 GANR
 
11.03.14
16:17
(209) Не важно какой язык - суть в том, чтобы развить пространственное воображение, нужное при написании запросов.
2 + 2 = 3.9999999999999999999999999999999...