Имя: Пароль:
1C
 
Отбор по значению дополнительных реквизитов
0 falselight
 
23.10.17
07:54
Здравствуйте! Подскажите пожалуйста по особенно важному вопросу.
Есть запрос. Состоит из нескольких пакетов. В нем подсчитывается
количество и сумма по различным условиям.
Сейчас задача отобрать запись этого запроса по источнику.
Источник хранится в табличной части Дополнительные реквизиты
в значении. Как можно установить в данном запросе условие на
отбор значения в таблице дополнительные реквизиты?
//



ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов
ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиента.Проведен = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаказКлиента.Менеджер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,
    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов
ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиента.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Менеджер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СостоянияЗаказовКлиентов.Заказ.Менеджер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Заказ.Ссылка, 0)) КАК КоличествоОтгруженныхЗаказов,
    СУММА(ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0)) КАК СуммаОтгрузки
ПОМЕСТИТЬ ВТ_ОтгруженныеЗаказы
ИЗ
    РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
ГДЕ
    СостоянияЗаказовКлиентов.Заказ.Дата МЕЖДУ &НачДата И &КонДата
    И СостоянияЗаказовКлиентов.Состояние = &Закрыт
    И СостоянияЗаказовКлиентов.ПроцентОтгрузки = 100
    И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ
    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
    СостоянияЗаказовКлиентов.Заказ.Менеджер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СостоянияЗаказовКлиентов.Заказ.Менеджер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СостоянияЗаказовКлиентов.Заказ.Ссылка) КАК ЕщёВРаботе
ПОМЕСТИТЬ ВТ_ЗаказыЕщёВРаботе
ИЗ
    РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
ГДЕ
    СостоянияЗаказовКлиентов.Заказ.Дата МЕЖДУ &НачДата И &КонДата
    И СостоянияЗаказовКлиентов.Состояние <> &ЗАКРЫТ
    И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ
    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
    СостоянияЗаказовКлиентов.Заказ.Менеджер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ИтогПоКоличествуЗаказов.ИтогПоКоличествуЗаказов КАК ИтогПоКоличествуЗаказов,
    ВТ_КоличествоИСуммаЗаказов.Менеджер,
    ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) КАК КоличествоЗаказов,
    ВЫРАЗИТЬ(ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) / ВТ_ИтогПоКоличествуЗаказов.ИтогПоКоличествуЗаказов * 100 КАК ЧИСЛО(15, 2)) КАК ПроцентОтОбщегоКоличества,
    ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.СуммаЗаказов, 0) КАК СуммаЗаказов,
    ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.КоличествоОтгруженныхЗаказов, 0) КАК КоличествоОтгруженныхЗаказов,
    ВЫРАЗИТЬ(ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) - ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.КоличествоОтгруженныхЗаказов, 0) / ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) КАК ЧИСЛО(15, 2)) КАК КПД,
    ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.СуммаОтгрузки, 0) КАК СуммаОтгруженныхЗаказов,
    ЕСТЬNULL(ВТ_ЗаказыЕщёВРаботе.ЕщёВРаботе, 0) КАК Поле1
ИЗ
    ВТ_ИтогПоКоличествуЗаказов КАК ВТ_ИтогПоКоличествуЗаказов,
    ВТ_КоличествоИСуммаЗаказов КАК ВТ_КоличествоИСуммаЗаказов
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОтгруженныеЗаказы КАК ВТ_ОтгруженныеЗаказы
        ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ОтгруженныеЗаказы.ЗаказМенеджер
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗаказыЕщёВРаботе КАК ВТ_ЗаказыЕщёВРаботе
        ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ЗаказыЕщёВРаботе.ЗаказМенеджер
1 falselight
 
23.10.17
07:59
(0+) Нет ссылки в запросе для связи с таблицей дополнительные реквизиты. Не соображу как её прицепить к нему(
2 riks05
 
23.10.17
08:00
(0) сначала отдельным запросом отобрази все доп реквизиты, определись с нужным допреквизитом после "свойство" если я не ошибаюсь допустим оно будет "источник" в условии получится
Где
допреквизиты.свойство="источник"
и допреквизиты.значение=&НужноеЗначение
както так.
3 1dvd
 
23.10.17
08:01
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
        ПО ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ЗаказКлиента.Ссылка
4 Fram
 
23.10.17
08:03
И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ
    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА

подстраховался на всякий случай?
5 falselight
 
23.10.17
08:05
(2) Важно кажется задавать только значение.
Да все правильно у вас.
Но вот этот запрос в (0), как сделать отбор по значению
дополнительных реквизитов в нем? Не пойму как прицепить к нему эти доп реквизиты.

(3) Это правильно. Но видите у меня в пакетных запросах подсчитывается количество. Получается отбор нужно накладывать на каждый пакет, т.к. нужно видеть данные с отбором по источнику.
Но возможно ли это сделать в запросе (0) Ссылки на заказ то в пакетах нет, что бы связывать с таблицей дополнительные реквизиты.
6 falselight
 
23.10.17
08:06
(4) Ну вроде это нужно делать. Не знаю стоит ли устанавлявать ложи на пометку удаления? Так как проведен в истину и так отберет же только проведенные. А проведенные не могут быть помеченными на удаление?!
7 1dvd
 
23.10.17
08:08
(5) нифига не понял что тебе не нравится. В пакетных запросах ссылка есть. соединяй с ТЧ и фильтруй. Не вижу никаких проблем
8 catena
 
23.10.17
08:11
(6)"ложи" - нет такого слова, есть слово "клади".
9 falselight
 
23.10.17
08:15
(8) Не сильно за грамматикой сейчас слежу.

(7) Есть группировка по менеджеру, ссылка используется для подсчета количества, и сумма.
Может я чего то не понимаю, но как вот в этих к примеру двух пакетах наложить отбор на значение таблицы дополнительных реквизитов?
Как её прицепить к ним, что бы наложить отбор?
10 falselight
 
23.10.17
08:15
(9+)

ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов
ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиента.Проведен = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ЗаказКлиента.Менеджер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,
    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов
ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиента.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Менеджер
;

////////////////////////////////////////////////////////////////////////////////
11 1dvd
 
23.10.17
08:18
(9)

ВЫБРАТЬ
    ЗаказКлиента.Менеджер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,
    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов
ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
        ПО ЗаказКлиентаДополнительныеРеквизиты.Ссылка = ЗаказКлиента.Ссылка
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиента.Проведен = ИСТИНА
    И ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство
    И ЗаказКлиентаДополнительныеРеквизиты.Значение = &Значение

СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Менеджер

Дальше сам думай
12 falselight
 
23.10.17
08:21
(11) А так нельзя?

ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов
ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиента.Проведен = ИСТИНА
    И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаказКлиента.Менеджер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,
    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов
ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиента.Проведен = ИСТИНА
    И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач

СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Менеджер
;
13 catena
 
23.10.17
08:24
(12)Тебе можно, но 1С будет ругаться.
14 1dvd
 
23.10.17
08:24
(12) попробуй, может и можно
15 falselight
 
23.10.17
08:32
Подскажите пожалуйста по итоговому запросу, я попытался добавить таблицу. Все ли в нем верно?
||

ВЫБРАТЬ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиента.Ссылка) КАК ИтогПоКоличествуЗаказов
ПОМЕСТИТЬ ВТ_ИтогПоКоличествуЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
        ПО ЗаказКлиента.Ссылка = ЗаказКлиентаДополнительныеРеквизиты.Ссылка
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиента.Проведен = ИСТИНА
    И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаказКлиента.Менеджер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(ЗаказКлиента.Ссылка, 0)) КАК КоличествоЗаказов,
    СУММА(ЕСТЬNULL(ЗаказКлиента.СуммаДокумента, 0)) КАК СуммаЗаказов
ПОМЕСТИТЬ ВТ_КоличествоИСуммаЗаказов
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
        ПО ЗаказКлиента.Ссылка = ЗаказКлиентаДополнительныеРеквизиты.Ссылка
ГДЕ
    ЗаказКлиента.Дата МЕЖДУ &НачДата И &КонДата
    И ЗаказКлиента.ПометкаУдаления = ЛОЖЬ
    И ЗаказКлиента.Проведен = ИСТИНА
    И ЗаказКлиента.ДополнительныеРеквизиты.Значение = &Знач

СГРУППИРОВАТЬ ПО
    ЗаказКлиента.Менеджер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СостоянияЗаказовКлиентов.Заказ.Менеджер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЕСТЬNULL(СостоянияЗаказовКлиентов.Заказ.Ссылка, 0)) КАК КоличествоОтгруженныхЗаказов,
    СУММА(ЕСТЬNULL(СостоянияЗаказовКлиентов.СуммаОтгрузки, 0)) КАК СуммаОтгрузки
ПОМЕСТИТЬ ВТ_ОтгруженныеЗаказы
ИЗ
    РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
        ПО СостоянияЗаказовКлиентов.Заказ.Ссылка = ЗаказКлиентаДополнительныеРеквизиты.Ссылка
ГДЕ
    СостоянияЗаказовКлиентов.Заказ.Дата МЕЖДУ &НачДата И &КонДата
    И СостоянияЗаказовКлиентов.Состояние = &Закрыт
    И СостоянияЗаказовКлиентов.ПроцентОтгрузки = 100
    И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ
    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА
    И ЗаказКлиентаДополнительныеРеквизиты.Значение = &Знач

СГРУППИРОВАТЬ ПО
    СостоянияЗаказовКлиентов.Заказ.Менеджер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СостоянияЗаказовКлиентов.Заказ.Менеджер,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СостоянияЗаказовКлиентов.Заказ.Ссылка) КАК ЕщёВРаботе
ПОМЕСТИТЬ ВТ_ЗаказыЕщёВРаботе
ИЗ
    РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
        ПО СостоянияЗаказовКлиентов.Заказ.Ссылка = ЗаказКлиентаДополнительныеРеквизиты.Ссылка
ГДЕ
    СостоянияЗаказовКлиентов.Заказ.Дата МЕЖДУ &НачДата И &КонДата
    И СостоянияЗаказовКлиентов.Состояние <> &ЗАКРЫТ
    И СостоянияЗаказовКлиентов.Заказ.ПометкаУдаления = ЛОЖЬ
    И СостоянияЗаказовКлиентов.Заказ.Проведен = ИСТИНА
    И ЗаказКлиентаДополнительныеРеквизиты.Значение = &Знач

СГРУППИРОВАТЬ ПО
    СостоянияЗаказовКлиентов.Заказ.Менеджер
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ИтогПоКоличествуЗаказов.ИтогПоКоличествуЗаказов КАК ИтогПоКоличествуЗаказов,
    ВТ_КоличествоИСуммаЗаказов.Менеджер,
    ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) КАК КоличествоЗаказов,
    ВЫРАЗИТЬ(ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) / ВТ_ИтогПоКоличествуЗаказов.ИтогПоКоличествуЗаказов * 100 КАК ЧИСЛО(15, 2)) КАК ПроцентОтОбщегоКоличества,
    ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.СуммаЗаказов, 0) КАК СуммаЗаказов,
    ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.КоличествоОтгруженныхЗаказов, 0) КАК КоличествоОтгруженныхЗаказов,
    ВЫРАЗИТЬ(ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) - ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.КоличествоОтгруженныхЗаказов, 0) / ЕСТЬNULL(ВТ_КоличествоИСуммаЗаказов.КоличествоЗаказов, 0) КАК ЧИСЛО(15, 2)) КАК КПД,
    ЕСТЬNULL(ВТ_ОтгруженныеЗаказы.СуммаОтгрузки, 0) КАК СуммаОтгруженныхЗаказов,
    ЕСТЬNULL(ВТ_ЗаказыЕщёВРаботе.ЕщёВРаботе, 0) КАК ЕщёВРаботе
ИЗ
    ВТ_ИтогПоКоличествуЗаказов КАК ВТ_ИтогПоКоличествуЗаказов,
    ВТ_КоличествоИСуммаЗаказов КАК ВТ_КоличествоИСуммаЗаказов
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОтгруженныеЗаказы КАК ВТ_ОтгруженныеЗаказы
        ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ОтгруженныеЗаказы.ЗаказМенеджер
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЗаказыЕщёВРаботе КАК ВТ_ЗаказыЕщёВРаботе
        ПО ВТ_КоличествоИСуммаЗаказов.Менеджер = ВТ_ЗаказыЕщёВРаботе.ЗаказМенеджер
16 catena
 
23.10.17
08:36
(14)Ну и как? Что ощущаешь после провалившейся акции милосердия?))
17 Масянька
 
23.10.17
08:37
Как у вас дела? Получилось донести до ТС мысли?
18 falselight
 
23.10.17
08:39
(16) ну вот запрос итоговый в (15) я сделал как подсказывали, он нормальный?
19 falselight
 
23.10.17
08:39
(16) Подскажите пожалуйста!
20 catena
 
23.10.17
08:40
(18)Нет, ты сделал НЕ как подсказывали. Помнишь детскую игру "найди три отличия"? Сиди, сверяй.
21 catena
 
23.10.17
08:41
(17)У него переполнение стека, то и дело всё выплескивается.
22 falselight
 
23.10.17
08:42
(20) вы про то что не хватает этого?

    И ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство

это у меня на форме, и там только нужные значения уже, то есть я считал что = &Знач достаточно!
23 Масянька
 
23.10.17
08:44
(21) И смех, и грех (С)
24 falselight
 
23.10.17
08:44
(20) Подскажите что именно не так в запросе?
25 1dvd
 
23.10.17
08:45
(24) всё норм. не парься
26 falselight
 
23.10.17
08:47
(25) Спасибо большое за поддержку! Пойду вставлять в отчет.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.