Имя: Пароль:
1C
1С v8
Как совместить Спр.Склады, Спр.Номенклатура и остатки по регистру?
0 Andrey_19_73
 
11.07.16
14:41
Подскажите, пожалуйста.
Нужно выводить ВСЕ позиции, в т.ч. нулевые, в отчет "остатки с заказами". Сделал запрос, который это отлично делает, но надо делать в разрезе Склад/Номенклатура.
Даже не представляю как это можно решить запросом.
Заранее спасибо.

ВЫБРАТЬ
    СпрНоменклатура.Ссылка,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток,
    ЗаказыКлиентовОстатки.ЗаказаноОстаток
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
        ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
        ПО СпрНоменклатура.Ссылка = ЗаказыКлиентовОстатки.Номенклатура
1 saaken
 
11.07.16
14:44
хоть картинку нарисуй, что мы тоже не представляли
2 Andrey_19_73
 
11.07.16
14:57
не знаю как сюда картинку приатачить. Сделал ссылкой
https://cloud.mail.ru/public/4unn/E46D7Ldky
А на словах.
Выводится весь список номенклатуры (2000 позиций), с нулевыми, а далее идут колонки Остатки на нач, Прих, Расх, На конец, Заказано.
=================================
ТМЦ 1   ОстН Прих Расх ОстК Заказ
ТМЦ 2   ОстН Прих Расх ОстК Заказ
ТМЦ 3   ОстН Прих Расх ОстК Заказ
=================================
Все красиво, но надо по каждому складу отдельно.
=================================
Склад 1
ТМЦ 1   ОстН Прих Расх ОстК Заказ
ТМЦ 2   ОстН Прих Расх ОстК Заказ
ТМЦ 3   ОстН Прих Расх ОстК Заказ
Склад 2
ТМЦ 1   ОстН Прих Расх ОстК Заказ
ТМЦ 2   ОстН Прих Расх ОстК Заказ
ТМЦ 3   ОстН Прих Расх ОстК Заказ
Склад 3
ТМЦ 1   ОстН Прих Расх ОстК Заказ
ТМЦ 2   ОстН Прих Расх ОстК Заказ
ТМЦ 3   ОстН Прих Расх ОстК Заказ
=================================
3 Зая Бусечка
 
11.07.16
15:05
У тебя ТМЦ нет. На каком складе его выводить?
4 Andrey_19_73
 
11.07.16
15:13
Как нет ТМЦ, на скриншоте видно как формируется запрос и там колонка ТМЦ.

"На каком складе"
По всем, также брать список со справочника и выводить
Сейчас у меня 2000 строк а должно быть 2000 * колСкладов.
5 ovrfox
 
11.07.16
16:05
У тебя не выбираются Склады
Просто добавь выбор склада в запрос а также в условие соединения мезду остатками и заказами
6 ovrfox
 
11.07.16
16:08
где то так:
ВЫБРАТЬ
    |    ТоварыНаСкладахОстаткиИОбороты.Склад,
    |    СпрНоменклатура.Ссылка,
    |    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,
    |    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход,
    |    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход,
    |    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток,
    |    ЗаказыКлиентовОстатки.ЗаказаноОстаток
    |ИЗ
    |    Справочник.Номенклатура КАК СпрНоменклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
    |        ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
    |        ПО СпрНоменклатура.Ссылка = ЗаказыКлиентовОстатки.Номенклатура
    |            И (ТоварыНаСкладахОстаткиИОбороты.Склад = ЗаказыКлиентовОстатки.Склад)
7 Andrey_19_73
 
11.07.16
16:22
Да, так я делал.
Выводятся 3000 строк, все остатки по всем складам. Но нет пустых остатков, ради чего все и затевалось.
8 Andrey_19_73
 
11.07.16
16:23
5 - Прости не понимаю.
9 ovrfox
 
11.07.16
16:23
Тогда в первой строчке нужно написать
ЕстьNull(ТоварыНаСкладахОстаткиИОбороты.Склад, "Склад не указан") КАК Склад
10 ovrfox
 
11.07.16
16:25
Ответ (7) на какой пост?
11 Andrey_19_73
 
11.07.16
16:29
на пятый
12 Andrey_19_73
 
11.07.16
16:30
(9)
Сдалал, ничего не изменилось. 3000 записей.

ВЫБРАТЬ
    ЕстьNull(ТоварыНаСкладахОстаткиИОбороты.Склад, "Склад не указан") КАК Склад,
        СпрНоменклатура.Ссылка,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток,
        ЗаказыКлиентовОстатки.ЗаказаноОстаток
    ИЗ
        Справочник.Номенклатура КАК СпрНоменклатура
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
            ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
            ПО СпрНоменклатура.Ссылка = ЗаказыКлиентовОстатки.Номенклатура
                И (ТоварыНаСкладахОстаткиИОбороты.Склад = ЗаказыКлиентовОстатки.Склад)
13 Nuobu
 
11.07.16
16:55
(12) Отборы стоят какие-то? Может, ты не весь запрос показал?
14 Andrey_19_73
 
11.07.16
17:15
Весь, я его с консоли запросов копирую, где он отрабатывает.
15 Nuobu
 
11.07.16
17:16
(14) И в консоли нету записей без "Склад не указан"?
16 Andrey_19_73
 
11.07.16
17:42
17 Nuobu
 
11.07.16
17:44
(16) Найди поиском строку "Склад не указан".
18 Andrey_19_73
 
11.07.16
18:00
Да, простите, не подумал
Добавил
   УПОРЯДОЧИТЬ ПО
    Склад
и первые 520 из 3000 строк "Склад не указан"
19 Andrey_19_73
 
12.07.16
07:17
тест оформления...
>>Да, простите, не подумал
>>Добавил
<code>
  УПОРЯДОЧИТЬ ПО
    Склад
</code>
>>и первые 520 из 3000 строк "Склад не указан"
20 Andrey_19_73
 
12.07.16
08:48
Лучшего, что я добился это все склады, все товары, но нет нулевых ТМЦ. Может мне сделать вложенный запрос? Подскажите, хоть в каком направлении двигаться?
<code>
ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
    СпрНоменклатура.Ссылка КАК Ссылка,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток,
    ЗаказыКлиентовОстатки.ЗаказаноОстаток
ИЗ
    Справочник.Номенклатура КАК СпрНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
        ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
        ПО СпрНоменклатура.Ссылка = ЗаказыКлиентовОстатки.Номенклатура
            И (ТоварыНаСкладахОстаткиИОбороты.Склад = ЗаказыКлиентовОстатки.Склад)
ГДЕ
    ТоварыНаСкладахОстаткиИОбороты.Склад ЕСТЬ НЕ NULL

УПОРЯДОЧИТЬ ПО
    Склад,
    Ссылка
</code>
21 Serg_1960
 
12.07.16
09:03
В (3) автора спросили о его действиях, когда отчет по складам, а конкретной позиции номенклатуры нет на складах (от слова "совсем нет нигде", т.е остаток равен нулю) - то где именно, на каком складе такую позицию номенклатуры автор собирается показывать в отчете? Ну не показывать же такую позицию как нулевую по всем складам :(

Я достаточно подробно изложил вопрос в топике (3)?
:)
22 В тылу врага
 
12.07.16
09:09
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    Склады.Ссылка КАК Склад
ПОМЕСТИТЬ ВсеВарианты
ИЗ
    Справочник.Номенклатура КАК Номенклатура,
    Справочник.Склады КАК Склады
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеВарианты.Номенклатура,
    ВсеВарианты.Склад,
    ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
    ВсеВарианты КАК ВсеВарианты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ПО ВсеВарианты.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
            И ВсеВарианты.Склад = ТоварыНаСкладахОстатки.Склад
23 catena
 
12.07.16
09:10
(20)
ГДЕ
    ТоварыНаСкладахОстаткиИОбороты.Склад ЕСТЬ НЕ NULL

Как ты себе думаешь будет вести себя это условие для нулевых остатков?
24 Serg_1960
 
12.07.16
09:11
Подсказываю :)

ВЫБРАТЬ
    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.Склад, &СкладДляНулевыхОстатков) КАК Склад,
...
25 Andrey_19_73
 
12.07.16
09:56
(3) (23) В первоначальном моем запросе выводятся все позиции со справочника ТМЦ, где нет остатков будет пусто, итого в отчете 2000 строк (как и ТМЦ в спр).
Мне надо
Склад 1
ТМЦ 1    ОстН Прих Расх ОстК Заказ
ТМЦ ...  ОстН Прих Расх ОстК Заказ
ТМЦ 2000 ОстН Прих Расх ОстК Заказ
Склад 2
ТМЦ 1    ОстН Прих Расх ОстК Заказ
ТМЦ ...  ОстН Прих Расх ОстК Заказ
ТМЦ 2000 ОстН Прих Расх ОстК Заказ
Склад 3
ТМЦ 1    ОстН Прих Расх ОстК Заказ
ТМЦ ...  ОстН Прих Расх ОстК Заказ
ТМЦ 2000 ОстН Прих Расх ОстК Заказ

Да, если остатков ТМЦ нет, ТМЦ будет выводиться с пустыми значениями в отчет сколько раз, сколько есть складов. На первый взгляд это кажется чушь, но так правда надо, в отчете будут стоять фильтры (все кроме этого, только этот) на группы ТМЦ и склады.
26 catena
 
12.07.16
10:24
(25)Это и надо было писать в первом посте.
Пример:

ВЫБРАТЬ
    данные.Ссылка,
    Склады.Ссылка КАК Склад
ИЗ
    (ВЫБРАТЬ
        НоменклатураСпр.Ссылка КАК Ссылка,
        ПартииТоваровНаСкладахОстатки.Склад КАК Склад
    ИЗ
        Справочник.Номенклатура КАК НоменклатураСпр
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки КАК ПартииТоваровНаСкладахОстатки
            ПО (ПартииТоваровНаСкладахОстатки.Номенклатура = НоменклатураСпр.Ссылка)
    ) КАК данные
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
        ПО (ЕСТЬNULL(данные.Склад, Склады.Ссылка) = Склады.Ссылка)
ИТОГИ ПО
    Склад
27 Andrey_19_73
 
12.07.16
10:50
Вот оно, счастье:
ВЫБРАТЬ
    Склады.Ссылка КАК Склад,
    данные.Ссылка,
    данные.ВНаличииНачальныйОстаток,
    данные.ВНаличииПриход,
    данные.ВНаличииРасход,
    данные.ВНаличииКонечныйОстаток,
    данные.ЗаказаноОстаток
ИЗ
    (ВЫБРАТЬ
        НоменклатураСпр.Ссылка КАК Ссылка,
        ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
        ЗаказыКлиентовОстатки.ЗаказаноОстаток КАК ЗаказаноОстаток
    ИЗ
        Справочник.Номенклатура КАК НоменклатураСпр
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
            ПО (ТоварыНаСкладахОстаткиИОбороты.Номенклатура = НоменклатураСпр.Ссылка)
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
            ПО (ЗаказыКлиентовОстатки.Номенклатура = НоменклатураСпр.Ссылка)) КАК данные
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
        ПО (ЕСТЬNULL(данные.Склад, Склады.Ссылка) = Склады.Ссылка)

УПОРЯДОЧИТЬ ПО
    Склад,
    данные.Ссылка

Думал уже делать цикл по складам, в нем цикл по ТМЦ и там сводный остаток :)
Огромное всем спасибо. Вопрос закрыт
28 В тылу врага
 
12.07.16
10:52
см (22)
29 catena
 
12.07.16
11:12
(28)В таком запросе даже номенклатура с остатком будет во все склады светиться. А ему надо только чтобы нулевая.
30 Andrey_19_73
 
12.07.16
13:43
(29) Зачем мне только нулевая, мне все нужны.
Смотришь остатки, там:
Гвозди 80         2
Гвозди 90         4
Гвозди 100        1
Гвозди 110
Гвозди 120        6
и сразу понятно что провтыкал заказать.

(28) Простите, я не смог ваш пример довести до ума.
31 DrZombi
 
гуру
12.07.16
14:05
(0) Нулевые остатки, это как? :)
32 DrZombi
 
гуру
12.07.16
14:10
(30) А зачем вам нужны все?
Огласите полный текст задачи :)
33 DrZombi
 
гуру
12.07.16
14:11
+ С таким успехом можно выводить номенклатуру для каждого склада в равнозначном списке, получая при этом остатки по нужным складам :)
34 Andrey_19_73
 
12.07.16
14:12
(31) (32) (33)   В (30) я все показал.
35 PR
 
12.07.16
14:18
Мда, 34 поста обсуждения тупейшей простейшей задачи
36 Andrey_19_73
 
12.07.16
15:20
(35) "Учиться не стыдно, стыдно не учиться"
Я рано обрадовался. Итоговый запрос, рожденный в этой теме, выдает ~7700 записей в отчет. Вот он:
ВЫБРАТЬ
    Склады.Ссылка КАК Склад,
    данные.Ссылка,
    данные.ВНаличииНачальныйОстаток,
    данные.ВНаличииПриход,
    данные.ВНаличииРасход,
    данные.ВНаличииКонечныйОстаток,
    данные.ЗаказаноОстаток
ИЗ
    (ВЫБРАТЬ
        НоменклатураСпр.Ссылка КАК Ссылка,
        ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
        ЗаказыКлиентовОстатки.ЗаказаноОстаток КАК ЗаказаноОстаток
    ИЗ
        Справочник.Номенклатура КАК НоменклатураСпр
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
            ПО (ТоварыНаСкладахОстаткиИОбороты.Номенклатура = НоменклатураСпр.Ссылка)
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
            ПО (ЗаказыКлиентовОстатки.Номенклатура = НоменклатураСпр.Ссылка)) КАК данные
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
        ПО (ЕСТЬNULL(данные.Склад, Склады.Ссылка) = Склады.Ссылка)

УПОРЯДОЧИТЬ ПО
    Склад,
    данные.Ссылка
-------------------------------------
А вот такой запрос, проверочный, выдает ~20000 записей, это то мне и надо, только остатки добавить :)
ВЫБРАТЬ
        СкладыСпр.Ссылка КАК Склад,
        НоменклатураСпр.Ссылка КАК Номенклатура
    ИЗ
        Справочник.Номенклатура КАК НоменклатураСпр,
        Справочник.Склады КАК СкладыСпр
------------------------
Я попытался пару часов сам мудрить, но победить три левых соединения не смог. Помогите еще, пожалуйста.
37 Andrey_19_73
 
12.07.16
15:48
Волшебная пиндюлина в виде оскорблений помогла, спасибо всем. Думаю вопрос закрыт. Итог ~20000 записей:
ВЫБРАТЬ
    Склады.Ссылка КАК Склад,
    данные.Ссылка,
    данные.ВНаличииНачальныйОстаток,
    данные.ВНаличииПриход,
    данные.ВНаличииРасход,
    данные.ВНаличииКонечныйОстаток,
    данные.ЗаказаноОстаток
ИЗ
    (ВЫБРАТЬ
        НоменклатураСпр.Ссылка КАК Ссылка,
        СкладыСпр.Ссылка КАК Склад,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК ВНаличииНачальныйОстаток,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК ВНаличииРасход,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
        ЗаказыКлиентовОстатки.ЗаказаноОстаток КАК ЗаказаноОстаток
    ИЗ
        Справочник.Номенклатура КАК НоменклатураСпр
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
            ПО (ТоварыНаСкладахОстаткиИОбороты.Номенклатура = НоменклатураСпр.Ссылка)
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
            ПО (ЗаказыКлиентовОстатки.Номенклатура = НоменклатураСпр.Ссылка),
            Справочник.Склады КАК СкладыСпр
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты1
            ПО (ТоварыНаСкладахОстаткиИОбороты1.Склад = СкладыСпр.Ссылка)
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки1
            ПО (ЗаказыКлиентовОстатки1.Склад = СкладыСпр.Ссылка)
    ГДЕ
        НоменклатураСпр.Ссылка В ИЕРАРХИИ(&ВыбТМЦ)) КАК данные
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
        ПО (ЕСТЬNULL(данные.Склад, Склады.Ссылка) = Склады.Ссылка)
УПОРЯДОЧИТЬ ПО
    Склад,
    данные.Ссылка

Еще раз спасибо большое.
38 Ёпрст
 
12.07.16
15:52
(37) всё не читал, но зачем в тексте запроса куча ненужных соединений ?
39 Andrey_19_73
 
12.07.16
15:57
ЭпикФейл!!!
(36) Неправильно работает, выбирает то 20000 строк, но остатки у всех одинаковые.
(37) Да если бы я знал :)
40 PR
 
12.07.16
16:04
(37) Охренеть, первый раз мне человек в явном виде говорит спасибо за волшебный пендель.
Ради такого даже кину идею, которая витает в ветке.


ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Номенклатура,
    СправочникСклады.Ссылка КАК Склад,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток
ПОМЕСТИТЬ ДекартовоПроизведение
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура,
    Справочник.Склады КАК СправочникСклады,
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДекартовоПроизведение.Номенклатура КАК Номенклатура,
    ДекартовоПроизведение.Склад КАК Склад,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток
ИЗ
    ДекартовоПроизведение КАК ДекартовоПроизведение
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
        ПО ДекартовоПроизведение.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
            И ДекартовоПроизведение.Склад = ТоварыНаСкладахОстаткиИОбороты.Склад
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ДекартовоПроизведение
41 Andrey_19_73
 
12.07.16
16:55
(40) Я так понимаю, что в СКД это не впихнешь, надо делать отчет, модуль, затем в цикле перебирать запрос и выводить в макет?
Буду пробовать. Быстро не обещаю.
42 b_ru
 
12.07.16
17:01
(40) В первом запросе ошибка. Нужно (без таблицы остатков)

ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Номенклатура,
    СправочникСклады.Ссылка КАК Склад,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток
ПОМЕСТИТЬ ДекартовоПроизведение
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура,
    Справочник.Склады КАК СправочникСклады,
;
43 3achem
 
12.07.16
17:04
(41) почему не пихнёшь? что ему помешает то?
44 Andrey_19_73
 
12.07.16
17:36
(43) опыта не хватает, первый раз это буду делать.
45 Andrey_19_73
 
12.07.16
20:35
(40) (42) "Не полетела"
Простите, мне еще рано работать с временными таблицами и т.п. Целый вечер запускал Ваш пример. Чуть позже сделать с куска кода весь отчет для меня будет по силам, но пока нет. "Каждому свое". Возвращаюсь назад, к своему запросу и буду думать дальше.
46 Andrey_19_73
 
12.07.16
21:52
Нарыл. В этом минималистическом запросе:
ВЫБРАТЬ
    Склады.Ссылка КАК Склад,
    данные.Ссылка,
    данные.ВНаличииКонечныйОстаток
ИЗ
    (ВЫБРАТЬ
        НоменклатураСпр.Ссылка КАК Ссылка,
        ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
        ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток
    ИЗ
        Справочник.Номенклатура КАК НоменклатураСпр
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
            ПО (ТоварыНаСкладахОстаткиИОбороты.Номенклатура = НоменклатураСпр.Ссылка)
    ГДЕ
        НоменклатураСпр.Ссылка В ИЕРАРХИИ(&ВыбТМЦ)) КАК данные
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
ПО (ЕСТЬNULL(данные.Склад, Склады.Ссылка) = Склады.Ссылка)
УПОРЯДОЧИТЬ ПО Склад, данные.Ссылка
----------------
я выбираю подгруппу справочника ТМЦ, в котором есть 20 позиций, в наличии из них только 10 и все они на одном складе. Так вот в отчет выводится 20 позиций по этому складу с остатками, а все остальные склады, сколько их там нет, выводят те 10 позиций, по которым не было остатков.
Я думаю, что все дело в:
ПО (ЕСТЬNULL(данные.Склад, Склады.Ссылка) = Склады.Ссылка)
но как сделать не знаю.
47 PR
 
13.07.16
01:14
(41) Почему не впихнешь?
48 PR
 
13.07.16
01:15
(42) А, ну да, копипастом забыл убрать, да
49 PR
 
13.07.16
01:19
(46) Что-то мне подсказывает уже, что не в коня корм, но все же, на еще раз

ВЫБРАТЬ
    ДекартовоПроизведение.Номенклатура КАК Номенклатура,
    ДекартовоПроизведение.Склад КАК Склад,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток
ИЗ
    (ВЫБРАТЬ
        СправочникНоменклатура.Ссылка КАК Номенклатура,
        СправочникСклады.Ссылка КАК Склад
    ИЗ
        Справочник.Номенклатура КАК СправочникНоменклатура,
        Справочник.Склады КАК СправочникСклады) КАК ДекартовоПроизведение
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
        ПО ДекартовоПроизведение.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
            И ДекартовоПроизведение.Склад = ТоварыНаСкладахОстаткиИОбороты.Склад
50 Andrey_19_73
 
13.07.16
08:46
(49) Уважаемый PR, "играю как могу". В свое оправдание скажу то, что над этой задачей сижу большую часть дня и весь вечер. Я не профи и мне по ходу ее решения приходиться многому учиться, чему я несказанно рад.
Огромное спасибо, Ваш код работает немного добавил своих полей:
ВЫБРАТЬ
    Данные.Склад КАК Склад,
    Данные.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток,
    ЗаказыКлиентовОстатки.ЗаказаноОстаток КАК ЗаказаноОстаток
ИЗ
    (ВЫБРАТЬ
        СправочникНоменклатура.Ссылка КАК Номенклатура,
        СправочникСклады.Ссылка КАК Склад
    ИЗ
        Справочник.Номенклатура КАК СправочникНоменклатура,
        Справочник.Склады КАК СправочникСклады
    ГДЕ
        СправочникНоменклатура.Ссылка В ИЕРАРХИИ(&ВыбТМЦ) И СправочникСклады.Ссылка = &ВыбСкл) КАК Данные,
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
        ПО Данные.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
            И Данные.Склад = ТоварыНаСкладахОстаткиИОбороты.Склад,
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
        ПО Данные.Номенклатура = ЗаказыКлиентовОстатки.Номенклатура
            И Данные.Склад = ЗаказыКлиентовОстатки.Склад
УПОРЯДОЧИТЬ ПО Склад, Номенклатура

Моя ошибка в "И",
"И Данные.Склад = ТоварыНаСкладахОстаткиИОбороты.Склад"
Сейчас отлично работает, осталось понять, как безболезненно накладывать отбор, хошь по одному складу/ТМЦ, хошь по всем. У меня сейчас только по одному чему-то, пустое значение не проходит. Но думаю это не проблема, найду. Чем больше чего-то ищешь, тем лучше это запоминается, а когда сказали - в одну ухо залетело....
Еще раз спасибо, теперь действительно работоспособный код.
AdBlock убивает бесплатный контент. 1Сергей