Имя: Пароль:
1C
1С v8
Помогите переделать запрос для УТ!
,
0 Мисти
 
21.11.13
15:09
|ВЫБРАТЬ
    |    СвободныеОстаткиОстатки.Склад КАК Склад,
    |    СвободныеОстаткиОстатки.ВРезервеОстаток КАК ВРезерве,
    |    ТоварыНаСкладахОстатки.ВНаличииОстаток  КАК ВНаличии
    |ПОМЕСТИТЬ ВТ_СвободныеОстатки
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(, Склад В (&Склады) {(Номенклатура)}) КАК СвободныеОстаткиОстатки
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    |        ПО СвободныеОстаткиОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
    |            И СвободныеОстаткиОстатки.Характеристика = ТоварыНаСкладахОстатки.Характеристика
    |;
    |
1 mikecool
 
21.11.13
15:10
упасть и отжаться?
2 Бешеная Нога
 
21.11.13
15:10
так пойдет?

ВЫБРАТЬ
    ОприходованиеМатериаловИзПроизводстваМатериалы.Ссылка,
    ОприходованиеМатериаловИзПроизводстваМатериалы.Номенклатура,
    ОприходованиеМатериаловИзПроизводстваМатериалы.Количество,
    ОприходованиеМатериаловИзПроизводстваМатериалы.Сумма,
    ОприходованиеМатериаловИзПроизводстваМатериалы.СуммаРегл
ИЗ
    Документ.ОприходованиеМатериаловИзПроизводства.Материалы КАК ОприходованиеМатериаловИзПроизводстваМатериалы
ГДЕ
    ОприходованиеМатериаловИзПроизводстваМатериалы.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
    И ОприходованиеМатериаловИзПроизводстваМатериалы.СуммаРегл <> &СуммаРегл
    И ОприходованиеМатериаловИзПроизводстваМатериалы.Заказ = &Заказ
3 rbcvg
 
21.11.13
15:11
пожалуйста:
    |ВЫБРАТЬ
    |    Справочник1.Родитель КАК Родитель1,
    |    Справочник2.Родитель КАК Родитель2,
    |    Справочник3.Родитель КАК Родитель3,
    |    Справочник4.Родитель КАК Родитель4,
    |    Справочник5.Родитель КАК Родитель5
    |ИЗ
    |    Справочник." + ИмяСправочника + " КАК Справочник1
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник2
    |        ПО (Справочник2.Ссылка = Справочник1.Родитель)
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник3
    |        ПО (Справочник3.Ссылка = Справочник2.Родитель)
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник4
    |        ПО (Справочник4.Ссылка = Справочник3.Родитель)
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник." + ИмяСправочника + " КАК Справочник5
    |        ПО (Справочник5.Ссылка = Справочник4.Родитель)
    |ГДЕ
    |    Справочник1.Ссылка = &Ссылка";
4 mikecool
 
21.11.13
15:11
СвободныеОстатки перекрывает ТоварыНаСкладах, если конечно используется
5 Мисти
 
21.11.13
15:11
Ну, т.н. это уже мое творчество. Ничего не получилось!
Проблема вот в чем - типовой подбор в номенклатуре выводит остатки (в наличии) на основании регистра "свободные остатки", а там суммы - заведомо за минусом обособленного обеспечения.
В остатках по складу идет полный остаток, мне нужно одновременно брать данные из 2 регистров.
6 Мисти
 
21.11.13
15:12
Э! Ну подождите, я же еще не всё объяснила!
Сейчас выложу, как было.
7 Мисти
 
21.11.13
15:13
|ВЫБРАТЬ
    |    СвободныеОстаткиОстатки.Склад КАК Склад,
    |    СвободныеОстаткиОстатки.ВНаличииОстаток КАК ВНаличии,
    |    СвободныеОстаткиОстатки.ВРезервеОстаток КАК ВРезерве
    |ПОМЕСТИТЬ ВТ_СвободныеОстатки
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(, Склад В (&Склады) {(Номенклатура)}) КАК СвободныеОстаткиОстатки
    |;

Так было!
8 Бешеная Нога
 
21.11.13
15:15
9 Мисти
 
21.11.13
15:21
(4) Ну как написать, чтобы ВРезервеОстаток брался из 1 регистра, а вНаличии - из регистра РегистрНакопления.ТоварыНаСкладах
(8) Ну заче-ем?
10 Мисти
 
21.11.13
15:27
Ага, как бред написать, так все горазды, как в простом вопросе помочь -  так никак.
Как получить данные из 2 регистров сразу?
11 GANR
 
21.11.13
15:35
(10) Легко... Несколько вариантов решения вижу на вскидку:
1. Полным соединением соединить 2 таблицы регистров
2. К справочнику номенклатура левым соединением подсоединить эти 2 таблицы остатков
3. Можно реализовать п.1 посредством ОБЪЕДИНИТЬ ВСЕ
Ну и, конечно ВЫБОР КОГДА и ЕСТЬNULL нужно применять по крайней мере в первых 2-х вариантах.
Если не понятно - идем сюда http://sql-ex.ru/ и учимся писать запросы.
12 Мисти
 
21.11.13
15:37
(11)  Спасибо!
А можно мне эти 5 строчек написать-то уже, а?
13 SUA
 
21.11.13
15:48
(12)ВНУТРЕННЕЕ->ПОЛНОЕ
СвободныеОстаткиОстатки.Склад->ЕСТЬNULL(СвободныеОстаткиОстатки.Склад,ТоварыНаСкладахОстатки.Склад)
Количество,Резерв -> ЕСТЬNULL(,0)
14 SUA
 
21.11.13
15:48
и да, соединение по всем измерениям (добавь склад)
15 Мисти
 
21.11.13
15:53
|ВЫБРАТЬ
    |    СвободныеОстаткиОстатки.Склад КАК Склад,
    |    СвободныеОстаткиОстатки.ВРезервеОстаток КАК ВРезерве,
    |    ТоварыНаСкладахОстатки.ВНаличииОстаток  КАК ВНаличии
    |ПОМЕСТИТЬ ВТ_СвободныеОстатки
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(, Склад В (&Склады) {(Номенклатура)}) КАК СвободныеОстаткиОстатки
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
    |        ПО СвободныеОстаткиОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
    |            И СвободныеОстаткиОстатки.Характеристика = ТоварыНаСкладахОстатки.Характеристика
|            И СвободныеОстаткиОстатки.Склад = ТоварыНаСкладахОстатки.Склад    
|;
    |
16 Мисти
 
21.11.13
15:53
Склад добавила.
ЕСТЬNULL(СвободныеОстаткиОстатки.Склад,ТоварыНаСкладахОстатки.Склад)  - куда писать?
17 GANR
 
21.11.13
16:01
(16) А что такое NULL и откуда он появляется, зачем ЕСТЬNULL предназначена? Очень хочу, не записать запрос за Вас, а именно чтобы Вы сами пришли к решению.
18 Мисти
 
21.11.13
16:05
Ой, не, ну пожалуйста!
Пусто, наверное, там...

Мне это так редко нужно!
Вот, пожалуй, первый раз за год и понадобилось. Я обычно использую типовые куски с "мелким разукрашиванием".
19 Мисти
 
21.11.13
16:06
Не, ну понятно - в принципе, что должна получится одинаковая структура из 2 регистров, которая должна аккуратно наложиться друг на дружку.
20 GANR
 
21.11.13
16:20
(18) >Мне это так редко нужно!
Не так уж и редко, судя по списку тем http://www.forum.mista.ru/index.php?user_id=79305.
21 Мисти
 
21.11.13
16:25
(20) Сам запрос - очень редко. Вот в теме "намудрила с запросом" - в конструкторе 2 строчки поменяла и всё получилось.
Мне запросы даже в 7 не давались. Сейчас примитивные я освоила, а с соединениями - никак!
22 Мисти
 
21.11.13
16:55
ау?
23 GANR
 
21.11.13
17:12
(22) А еще запрос из (0) просуммирует количество колбасы и табуреток, хранящиеся на одном складе, в одну цифру. Тогда уж надо и остальные измерения вместе со складом выводить (номенклатуру и характеристику).

Ну что-же - даю первый вариант из (11)

ВЫБРАТЬ
    ЕСТЬNULL(СвободныеОстаткиОстатки.Склад, ТоварыНаСкладахОстатки.Склад) КАК Склад,
    ЕСТЬNULL(СвободныеОстаткиОстатки.Номенклатура, ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура,
    ЕСТЬNULL(СвободныеОстаткиОстатки.Характеристика, ТоварыНаСкладахОстатки.Характеристика) КАК Характеристика,
    ЕСТЬNULL(СвободныеОстаткиОстатки.ВРезервеОстаток, 0) КАК ВРезерве,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК ВНаличии
ПОМЕСТИТЬ ВТ_СвободныеОстатки
ИЗ
    РегистрНакопления.СвободныеОстатки.Остатки(, Склад В (&Склады) {(Номенклатура)}) КАК СвободныеОстаткиОстатки
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад В (&Склады) {(Номенклатура)}) КАК ТоварыНаСкладахОстатки
        ПО СвободныеОстаткиОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
            И СвободныеОстаткиОстатки.Характеристика = ТоварыНаСкладахОстатки.Характеристика
            И СвободныеОстаткиОстатки.Склад = ТоварыНаСкладахОстатки.Склад
24 МойКодУныл
 
21.11.13
17:24
как же жить в 8ке без запросов?
25 Мисти
 
21.11.13
17:42
Спасибище!!!
26 Мисти
 
21.11.13
17:43
ЕСТЬNULL(СвободныеОстаткиОстатки.Склад, ТоварыНаСкладахОстатки.Склад) - эта мысль так и непонятна. Что это значит?
27 Мисти
 
21.11.13
17:44
СП ничего не говорит по этому поводу.
28 France
 
21.11.13
17:49
(27) если СвободныеОстаткиОстатки.Склад = null, тогда брать ТоварыНаСкладахОстатки.Склад
29 Мисти
 
21.11.13
17:59
(23) Даже получилось всё!!!
Безмерно благодарна.
30 Мисти
 
21.11.13
18:00
Ага, т.е. если есть хоть в каком-то регистре эта номен, склад или характ. - то ее и брать.
31 GANR
 
21.11.13
18:33
(26)(28) В сообщении (11) я сказал куда идти тем, кто не в ладах с запросами. :)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.