Имя: Пароль:
1C
1С v8
Запрос вопрос по детализации
,
0 Explorer1c
 
26.12.14
08:15
Всем привет!

Для определенной задачи потребовалось сделать следующий вывод отчета

Основное средство        Сумма1 Сумма2

       Характеристика1     -      -
       Характеристика2     -      -



Стул         12   455
  Зеленый
  Твердый

Т.е по характеристикам рассчитывать суммы не надо , они нужны только как информация (это нужно добавить в ведомости ОС)
1 chelentano
 
26.12.14
08:18
(0) хорошо
2 Explorer1c
 
26.12.14
08:18
и как такой сделать подскажите плиз
3 Explorer1c
 
26.12.14
08:22
Про ведомость забудьте , такое можно сделать просто обыным запросом как-нить?
4 hawksib
 
26.12.14
08:32
можно
5 Andrewww123
 
26.12.14
08:33
(3) Слово "обыным" прочитал немного по-другому, наверное на выходные пора :)
Нужно не выводить в отчет суммы по характеристикам или именно не рассчитывать в запросе? Отчет на СКД?
6 Explorer1c
 
26.12.14
08:33
Зы это нужно чтобы суммы не задваивались тк у одного основного средства может быть несколько строчек характеристик
7 Explorer1c
 
26.12.14
08:34
(6) отчет на постоителе отчетов
8 Explorer1c
 
26.12.14
08:41
кто откажется помогать у того будет стул зеленый и твердый
9 Andrewww123
 
26.12.14
08:45
(7) Если просто в запросе, то можно добавить поле "Поле1", которое будет нулем для всех записей, а в итогах написать "Итоги Максимум(Сумма1) Как Поле1 По ОсновноеСредство". Когда-то делал, работало.
10 Explorer1c
 
26.12.14
08:48
(9) ну а кроме числового Поле1 есть числовые Сумма1 и Сумма2 с ними как быть? Это к примеру Амортизация и первоначальная стоимость
11 Andrewww123
 
26.12.14
09:09
(10) Для каждого поля, которое нужно рассчитать в итогах, добавить новое поле.
"Выбрать
0 Как Поле1,
0 Как Поле2" И так далее
В итогах
"Максимум(Сумма1) Как Поле1,
Максимум(Сумма2) Как Поле2"
12 Explorer1c
 
26.12.14
09:13
(11) оэто правильно, но загвоздка в том, что кроме ОС там еще несколько группировок например подразделение, по которым тоже надо считать Итоги, поэтому я не могу написать "максимум"
13 Homer
 
26.12.14
09:14
будь мужиком, сделай на СКД!
14 Andrewww123
 
26.12.14
09:23
(12) Тогда СКД или извращаться, считать отдельно суммы по подразделениям, помещать их во временную таблицу, отдельно по основному средству и так для каждой группировки. Потом соединять все это в финальном запросе.
15 Explorer1c
 
26.12.14
09:40
(14) это да, но тк на задачу отведено немного времени решил с СКД не связываться а сделать левым соединением построчно

Т.е

ТаблицаХарактеристик.Наименование,
ТаблицаХарактеристик2.Наименование

левое соединение ТаблицаХарактеристик
НомерСтроки = 1
левое соединение ТаблицаХарактеристик2
НомерСтроки = 2

По ТаблицаХарактеристик.Ссылка = ТаблицаХарактеристик2.Ссылка
16 Explorer1c
 
26.12.14
09:41
или объединением построчно можно сделать
17 Explorer1c
 
26.12.14
09:59
Кстати еще вопрос

почему левое соединение отрабатывает не так как надо?

ВЫБРАТЬ
    ОсновныеСредстваХарактеристики.Ссылка КАК Ссылка,
    ОсновныеСредстваХарактеристики.Наименование КАК Наименование,
    ОсновныеСредстваХарактеристики1.Наименование КАК Наименование1
ИЗ
    Справочник.ОсновныеСредства.Характеристики КАК ОсновныеСредстваХарактеристики
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОсновныеСредства.Характеристики КАК ОсновныеСредстваХарактеристики1
        ПО ОсновныеСредстваХарактеристики.Ссылка = ОсновныеСредстваХарактеристики1.Ссылка
ГДЕ
    ОсновныеСредстваХарактеристики.НомерСтроки = 1
    И ОсновныеСредстваХарактеристики1.НомерСтроки = 2
ИТОГИ ПО
    Ссылка

у меня выходят только те характеристики где 2 строчки

а где одна те не попадают в выборку
18 Andrewww123
 
26.12.14
10:05
Из-за условия "И ОсновныеСредстваХарактеристики1.НомерСтроки = 2". Потому что там NULL, если одна характеристика.
19 Explorer1c
 
26.12.14
10:07
(18) А как быть? В итоговом он не может мне Null показать?
20 Explorer1c
 
26.12.14
10:07
Т.е Стул
       Коричневый
        Null


     Стул
       зеленый
       твердый
21 Andrewww123
 
26.12.14
10:12
(20)
"ГДЕ
    ОсновныеСредстваХарактеристики.НомерСтроки = 1
    (И ОсновныеСредстваХарактеристики1.НомерСтроки = 2
     Или ОсновныеСредстваХарактеристики1.НомерСтроки Есть NULL)".
Но как-то это криво всё..
22 Explorer1c
 
26.12.14
10:14
(21) да, придется объединением
23 Explorer1c
 
26.12.14
10:15
кстати интересно но вот такой запрос работать будет
24 Explorer1c
 
26.12.14
10:20
ВЫБРАТЬ
    ОсновныеСредстваХарактеристики.Ссылка КАК Ссылка,
    ОсновныеСредстваХарактеристики.Наименование КАК Наименование,
    ВложенныйЗапрос1.Наименование КАК Наименование1
ИЗ
    Справочник.ОсновныеСредства.Характеристики КАК ОсновныеСредстваХарактеристики
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ОсновныеСредстваХарактеристики.Ссылка КАК Ссылка,
            ОсновныеСредстваХарактеристики.Наименование КАК Наименование
        ИЗ
            Справочник.ОсновныеСредства.Характеристики КАК ОсновныеСредстваХарактеристики
        ГДЕ
            ОсновныеСредстваХарактеристики.НомерСтроки = 2) КАК ВложенныйЗапрос1
        ПО ОсновныеСредстваХарактеристики.Ссылка = ВложенныйЗапрос1.Ссылка
ГДЕ
    ОсновныеСредстваХарактеристики.НомерСтроки = 1
ИТОГИ ПО
    Ссылка
25 Andrewww123
 
26.12.14
10:20
(23) А как это потом вывести построчно? И что делать если характеристики три?
26 Explorer1c
 
26.12.14
10:21
Почему так, кто знает?
27 Explorer1c
 
26.12.14
10:22
(25) я проанализировал, их не более 6ти бывает, придется для каждой строчки. Идея в том, что детализация идет типо отдельно, щас напишу потом суда заскриню
28 Andrewww123
 
26.12.14
10:25
(26) Потому что в основном запросе накладывается условие только на основную таблицу.
29 Explorer1c
 
26.12.14
10:27
(28) т.е в первом случае два условия на основную таблицу, поэтому не идет?
    ОсновныеСредстваХарактеристики.НомерСтроки = 1
    И ОсновныеСредстваХарактеристики1.НомерСтроки = 2
30 Andrewww123
 
26.12.14
10:29
(29) Второе условие накладывается на таблицу, с которое соединяешься, поэтому так. Грубо говоря, там всегда должно быть значение "2", а там иногда бывает NULL.
31 Explorer1c
 
26.12.14
10:32
(30) да, но левое соединение подразумевает ведь выборку всех записей из первой таблицы и частично из второй(удовлетворяющих условиям)
32 Andrewww123
 
26.12.14
10:38
(31) Вот там, где не удовлетворилось, "ОсновныеСредстваХарактеристики1.Наименование" будет равно "NULL", а ты написал что оно должно быть "2".
33 Explorer1c
 
26.12.14
10:39
(32) я про условия связи

левое соединение подразумевает ведь выборку всех записей из первой таблицы и частично из второй(удовлетворяющих условиям)

ПО ОсновныеСредстваХарактеристики.Ссылка = ОсновныеСредстваХарактеристики1.Ссылка
34 Andrewww123
 
26.12.14
10:44
(33) Это троллинг? :)
35 Explorer1c
 
26.12.14
11:13
(34)
не
просто я понимаю левое соединение как выборку всех записей из первой таблицы и тех записей, которые подходят к первой из второй таблицы, а условие ОсновныеСредстваХарактеристики1.НомерСтроки = 2 как раз на вторую таблицу накладывается ведь , поэтому я и думал что должен получить все из первой таблицы
36 dvva
 
26.12.14
11:37
если отчет в скд, то надо сделать соединение не в запросе, а соединение источников данных, тогда ресурс не будет задваиваться для дочернего набора