Имя: Пароль:
1C
1С v8
Указать условие в запросе
,
0 amadeus2010
 
21.05.12
08:32
Доброе утро всем кому еще не надоел своими вопросами.У меня такой вопрос.Есть запрос который отбирает товары,вес,количество в штуках или кассетах(бутылки объемом меньше 5л) ,цену и сумму товара.так как уже начался сезон руководство поставили задачу поставить лимит на количество отпускаемого товара.Суммарно Количество каждого товара не д.б. меньше или равно 5 единицам (в штуках или кассетах).В запросе в усовии отбора указал где ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток >= 5.Отсекает просто товары где количество не соответсвует условию. Как поставить условие в запросе типа Сумма(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 5 или же проверять условия в Выборке после того как запрос сработал? Привожу сам запрос может так будет яснее.

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

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры,
   ТоварыНаСкладахОбороты.СерияНоменклатуры,
   ТоварыНаСкладахОбороты.Регистратор.Рейс

ИНДЕКСИРОВАТЬ ПО
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры,
   РегистраторРейс
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыВРейсахОбороты.Рейс КАК Рейс,
   ТоварыВРейсахОбороты.Номенклатура КАК Номенклатура,
   ТоварыВРейсахОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ТоварыВРейсахОбороты.СерияНоменклатуры КАК СерияНоменклатуры,
   СУММА(ЕСТЬNULL(ТоварыВРейсахОбороты.КоличествоОборот, 0)) КАК КоличествоОборот
ПОМЕСТИТЬ ВТТоварыВРейсахОбороты
ИЗ
   РегистрНакопления.ТоварыВРейсах.Обороты(, , , Состояние <> &CостояниеРейсаЗакрыт) КАК ТоварыВРейсахОбороты

СГРУППИРОВАТЬ ПО
   ТоварыВРейсахОбороты.Рейс,
   ТоварыВРейсахОбороты.Номенклатура,
   ТоварыВРейсахОбороты.ХарактеристикаНоменклатуры,
   ТоварыВРейсахОбороты.СерияНоменклатуры

ИНДЕКСИРОВАТЬ ПО
   Рейс,
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры
;

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

СГРУППИРОВАТЬ ПО
   ВТТоварыВРейсахОбороты.Номенклатура,
   ВТТоварыВРейсахОбороты.ХарактеристикаНоменклатуры,
   ВТТоварыВРейсахОбороты.СерияНоменклатуры

ИНДЕКСИРОВАТЬ ПО
   КоличествоОборот,
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.КодОракл КАК КодОракл,
   ВЫБОР
       КОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
           ТОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Регион
       ИНАЧЕ ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель.Регион
   КОНЕЦ КАК Регион,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент КАК Контрагент,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Наименование КАК КонтрагентНаименование,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя КАК Заказ,
   ТоварыКРаспределениюПоРейсамОстатки.Номенклатура,
   ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры,
   ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения,
   ТоварыКРаспределениюПоРейсамОстатки.ТипПоставки,
   ТоварыКРаспределениюПоРейсамОстатки.Цена,
   ТоварыКРаспределениюПоРейсамОстатки.СтавкаНДС,
   ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток КАК КоличествоКРаспределению,
   ТоварыКРаспределениюПоРейсамОстатки.СуммаВзаиморасчетовОстаток КАК Сумма,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Вес * ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток / ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент * ТоварыКРаспределениюПоРейсамОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Вес,
   ТоварыКРаспределениюПоРейсамОстатки.СуммаУпрОстаток КАК СуммаУпр,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Объем * ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток / ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент * ТоварыКРаспределениюПоРейсамОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Объем,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Дата,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Номер,
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ВТТоварыВРейсах.КоличествоОборот, 0) КАК КоличествоОстаток
ИЗ
   РегистрНакопления.ТоварыКРаспределениюПоРейсам.Остатки(
           &Дата,
           ЗаказПокупателя.ДатаОтгрузки >= &ЗаказПокупателяДатаНачала
               И ЗаказПокупателя.ДатаОтгрузки <= &ЗаказПокупателяДатаКонца) КАК ТоварыКРаспределениюПоРейсамОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаРейс, Склад.ТипСклада <> &СкладМашина) КАК ТоварыНаСкладахОстатки
       ПО ТоварыКРаспределениюПоРейсамОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
           И ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
           И ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры = ТоварыНаСкладахОстатки.СерияНоменклатуры
       ЛЕВОЕ СОЕДИНЕНИЕ ВТТоварыВРейсах КАК ВТТоварыВРейсах
       ПО ТоварыКРаспределениюПоРейсамОстатки.Номенклатура = ВТТоварыВРейсах.Номенклатура
           И ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры = ВТТоварыВРейсах.ХарактеристикаНоменклатуры
           И ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры = ВТТоварыВРейсах.СерияНоменклатуры
ГДЕ
   ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток >= 5 //здесь поставил условие

УПОРЯДОЧИТЬ ПО
   Регион,
   КонтрагентНаименование
ИТОГИ
   СУММА(КоличествоКРаспределению),
   СУММА(Сумма),
   СУММА(Вес),
   СУММА(СуммаУпр),
   СУММА(Объем)
ПО
   Регион,
   Контрагент,
   Заказ
1 Ненавижу 1С
 
гуру
21.05.12
08:33
ИМЕЮЩИЕ? или не то?
2 amadeus2010
 
21.05.12
08:41
дело в том что у меня  количество товара формируется как в штуках(5-20л бутыли) так и в кассетах(6-8 бутылок) и поэтому надо отбор сделать так чтобы запрос отсек либо количество штук меньше 5 либо кассеты меньше 5 или же суммарно шт.+кассеты меньше 5.Как это можно сделать?
3 Wobland
 
21.05.12
08:44
(2) единицы есть где-то в запросе? имеющие выбор когда?
4 amadeus2010
 
21.05.12
08:51
такого в оригинале запроса нет, выбор когда... поставлен только для отбора  контрагентов по регионам. Можно в качестве примера привести код для единиц измерения с выбор когда...?
5 amadeus2010
 
21.05.12
09:17
насколько правильной будет такая конструкция в запросе
выбор когда (ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток*ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент)< 5 тогда 0 конец Как КоличествоКРаспределению  вместо  имеющегося отбора ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток КАК КоличествоКРаспределению?
6 amadeus2010
 
21.05.12
10:10
народ есть кто-нибудь?
7 kosts
 
21.05.12
10:22
> дело в том что у меня  количество товара формируется как в штуках(5-20л бутыли) так и в кассетах(6-8 бутылок)
Приведи все к штукам, потому уже отсекай
8 amadeus2010
 
21.05.12
11:17
(5) сделал изменения в части запроса выбирающего количество

ВЫБОР Когда ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток*ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент < 5
         Тогда 0
         Иначе ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток
           Конец Как КоличествоКРаспределению,  

выводит все товары имеющие количество больше 5, а в строке товары где количество равно 5 или больше 5 показывает название товара и в количестве 0.Как можно сделать чтобы  вся строка с 0 количеством товара полностью не отображалась?
(7) при отображении товара в обработке количество и так указывается в штуках.А мне надо чтобы при формировании списка заказов в табличную часть изначально не попадали товары где количество меньше 5
9 kosts
 
21.05.12
12:15
(8) Не совсем пойму в каком месте хочешь ограничить...
Но если хочешь ограничить соединенную таблицу, то можно прямо в условии "ПО" воткнуть >= 5
10 amadeus2010
 
21.05.12
13:13
Имеете ввиду здесь поставить условие ограничения

ИТОГИ
   СУММА(КоличествоКРаспределению)>= 5,
   СУММА(Сумма),
   СУММА(Вес),
   СУММА(СуммаУпр),
   СУММА(Объем)
ПО
   Регион,
   Контрагент,
   Заказ

Мне в принципе не важно где поставить условия отбора товаров по количеству,главное чтобы строки с меньше 5 не отображались пользователю.
11 kosts
 
21.05.12
13:46
(10) Запрос не елка, условие в разных местах будет по разному работать.

Если тебе на самом последнем этапе нужно ограничить, то не используй итоги, а группируй и затем используй ИМЕЮЩИЕ. (Другой вариант - с временной таблицей, запросом к временной таблице и с ограничением).
12 amadeus2010
 
21.05.12
16:41
в регистре ТоварыКРаспределениюПоРейсамОстатки имеется ЗаказПокупателя(ссылка на документ Закз Покупателя) в котором содержится ТЧ Товары.Количество.Как можно через выбор когда тогда составить условие для отбора товара где количество товара суммарно не м.б меньше 5 единиц, исключение 5-10-20л бутули которые могут продаваться по штучно.Пытаюсь вытащить количество таким образом

Где
Выбор Когда КоличествоКРаспределению=ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Товары.Количество< 5 Тогда условие...    
(0)строка запроса ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток КАК КоличествоКРаспределению поменял на Сумма(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) КАК КоличествоКРаспределению
13 amadeus2010
 
22.05.12
09:49
доброе утро пытаюсь в запросе построить такую конструкцию

Где
 Выбор Когда ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Товары.Номенклатура.Наименоваание ("10л") И Сумма(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)<5
Тогда Сумма(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)=0
   Иначе Сумма(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)
Конец

возвращается ошибка что нельзя использовать сумма в условии отбора.Как можно обойти это ограничение.Мне нужно как я уже писал выше отобрать товары по наименованию и если их количество меньше 5,то не отображать их пользователю
14 Wobland
 
22.05.12
09:50
(13) читал (3)? не уверен, что взлетит
15 Kolls
 
22.05.12
09:53
Рассчитать все в ВТ и потом выдернуть уже по условию?
16 amadeus2010
 
22.05.12
10:04
весь запрос приведен в (0).Небольшое уточнение есть  товары объединенные в группы 5-10-20л и Аква вита, Гюлюстан.Мне надо сделать отбор так чтобы если в самом заказе есть 5-10-20л бутыли, то на них не распространяется условие отбора меньше 5, а если есть товары Аквавита, Гюлюстан, то на них условие распространяется и если сумма(количество товара в документе)меньше 5 то не отображать эти товары пользователю.Т.е отбор я должен делать по списку товаров в документе и если их количество не соответствует условию то не отображать строку. Через ЗаказПокупателя.Товары.Номенклатура можно получить список товара в документе.
17 amadeus2010
 
22.05.12
10:15
есть какие-нибудь предложение господа?
18 viktor_vv
 
22.05.12
10:17
(17) Тебе ж в (1) ответили.

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры,
   ТоварыНаСкладахОбороты.СерияНоменклатуры,
   ТоварыНаСкладахОбороты.Регистратор.Рейс
Имеющие СУММА(ТоварыНаСкладахОбороты.КоличествоПриход) >= 5
19 Kolls
 
22.05.12
10:19
"ТЕКУЩИЙ ЗАПРОС, СУММА(Остаток) Как Остаток,
ВЫБОР КОГДА
Характеристика = ХХХХ
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ
ПОМЕСТИТЬ ВтТекОстаток;
ВЫБРАТЬ (те же позиции)
из ВтТекОстаток
ГДЕ
ХАРАКТЕРИСТИКА = 0 ИЛИ Остаток > 5"
Как то так
20 viktor_vv
 
22.05.12
10:19
(18)+ Хотя всю ветку не читал, может неправ :).
21 kosts
 
22.05.12
10:24
(20) Про тоже самое уже талдычили, видимо автор ждет, чтобы за него сделали...
22 amadeus2010
 
22.05.12
10:27
да не я не жду чтобы за меня все сделали,мне нужно только направление в котором надо идти
23 Kolls
 
22.05.12
10:34
Я же тебе скинул пример, во времянку кидаешь выборку с остатком и признаком, надо по нему условие ставить или нет, а из нее уже дергаешь с отбором
24 kosts
 
22.05.12
10:57
(22) Уже несколько раз показали направление. Уже попробуй что ли каким либо способом. Там и видно будет чем еще помочь.
25 amadeus2010
 
22.05.12
11:38
я пробую в (13) должно быть как то так условие отбора по номенклатуре содержащей название группы например 5л или аквавита и если количество меньше 5 то пустая строка
26 kosts
 
22.05.12
12:39
(25) Как еще разжевать...

Номенклатура | КоличествоОстаток
10л|1
10л|20
20л|2
20л|2
30л|1
30л|10
40л|20
40л|30


Выбрать
   Номенклатура,
   КоличествоОстаток
Поместить ВТТаблица
из &Таблица;

Выбрать
   Номенклатура,
   Сумма(КоличествоОстаток)
Поместить ВТТаблицаСвернуто
из ВТТаблица
Группировать по Номенклатура;

Выбрать
   Номенклатура,
   Выбор Когда Номенклатура.Наименование = "10л" // - Так в принципе нельзя сравнивать, должен быть либо доп.признак у номенклатуры, либо еще как-то
   Тогда 0 Иначе КоличествоОстаток Конец как КоличествоОстаток
Поместить ВТТаблица1
ИЗ ВТТаблицаСвернуто;

Выбрать
   Номенклатура, КоличествоОстаток
ИЗ ВТТаблица1
Где КоличествоОстаток >=5;


На выходе имеем:
Номенклатура | КоличествоОстаток
30л|11
40л|50

Не знаю как еще можно помочь... изучай запросы с нуля.
пысы запрос можно проще конечно, но так легче понять
27 amadeus2010
 
22.05.12
13:29
спасибо за помощь,дальше постараюсь сам
28 amadeus2010
 
28.05.12
10:37
доброе утро в продолжение темы,что не заводить новую.Видоизменил запрос (0) чтобы могли отсеиваться товары где сумма(количиство) меньше 5, но выдает ошибку не найдено поле Регион в Сгруппировать по.

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

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры,
   ТоварыНаСкладахОбороты.СерияНоменклатуры,
   ТоварыНаСкладахОбороты.Регистратор.Рейс

ИНДЕКСИРОВАТЬ ПО
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры,
   РегистраторРейс
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыВРейсахОбороты.Рейс КАК Рейс,
   ТоварыВРейсахОбороты.Номенклатура КАК Номенклатура,
   ТоварыВРейсахОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ТоварыВРейсахОбороты.СерияНоменклатуры КАК СерияНоменклатуры,
   СУММА(ЕСТЬNULL(ТоварыВРейсахОбороты.КоличествоОборот, 0)) КАК КоличествоОборот
ПОМЕСТИТЬ ВТТоварыВРейсахОбороты
ИЗ
   РегистрНакопления.ТоварыВРейсах.Обороты(, , , Состояние <> &CостояниеРейсаЗакрыт) КАК ТоварыВРейсахОбороты

СГРУППИРОВАТЬ ПО
   ТоварыВРейсахОбороты.Рейс,
   ТоварыВРейсахОбороты.Номенклатура,
   ТоварыВРейсахОбороты.ХарактеристикаНоменклатуры,
   ТоварыВРейсахОбороты.СерияНоменклатуры

ИНДЕКСИРОВАТЬ ПО
   Рейс,
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры
;

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

СГРУППИРОВАТЬ ПО
   ВТТоварыВРейсахОбороты.Номенклатура,
   ВТТоварыВРейсахОбороты.ХарактеристикаНоменклатуры,
   ВТТоварыВРейсахОбороты.СерияНоменклатуры

ИНДЕКСИРОВАТЬ ПО
   КоличествоОборот,
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.КодОракл КАК КодОракл,
   ВЫБОР
       КОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
           ТОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Регион
       ИНАЧЕ ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель.Регион
   КОНЕЦ КАК Регион,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент КАК Контрагент,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Наименование КАК КонтрагентНаименование,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя КАК Заказ,
   ТоварыКРаспределениюПоРейсамОстатки.Номенклатура,
   ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры,
   ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения,
   ТоварыКРаспределениюПоРейсамОстатки.ТипПоставки,
   ТоварыКРаспределениюПоРейсамОстатки.Цена,
   ТоварыКРаспределениюПоРейсамОстатки.СтавкаНДС,
   ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток КАК КоличествоКРаспределению,
   ТоварыКРаспределениюПоРейсамОстатки.СуммаВзаиморасчетовОстаток КАК Сумма,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Вес * ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток / ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент * ТоварыКРаспределениюПоРейсамОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Вес,
   ТоварыКРаспределениюПоРейсамОстатки.СуммаУпрОстаток КАК СуммаУпр,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Объем * ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток / ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент * ТоварыКРаспределениюПоРейсамОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Объем,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Дата,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Номер,
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ВТТоварыВРейсах.КоличествоОборот, 0) КАК КоличествоОстаток
ИЗ
   РегистрНакопления.ТоварыКРаспределениюПоРейсам.Остатки(
           &Дата,
           ЗаказПокупателя.ДатаОтгрузки >= &ЗаказПокупателяДатаНачала
               И ЗаказПокупателя.ДатаОтгрузки <= &ЗаказПокупателяДатаКонца) КАК ТоварыКРаспределениюПоРейсамОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаРейс, Склад.ТипСклада <> &СкладМашина) КАК ТоварыНаСкладахОстатки
       ПО ТоварыКРаспределениюПоРейсамОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
           И ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
           И ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры = ТоварыНаСкладахОстатки.СерияНоменклатуры
       ЛЕВОЕ СОЕДИНЕНИЕ ВТТоварыВРейсах КАК ВТТоварыВРейсах
       ПО ТоварыКРаспределениюПоРейсамОстатки.Номенклатура = ВТТоварыВРейсах.Номенклатура
           И ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры = ВТТоварыВРейсах.ХарактеристикаНоменклатуры
           И ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры = ВТТоварыВРейсах.СерияНоменклатуры
           
СГРУППИРОВАТЬ ПО
 
   Регион,
   Контрагент,
   Заказ
     
    ИМЕЮЩИЕ СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)>= 5
   
ИТОГИ
   СУММА(КоличествоКРаспределению),
   СУММА(Сумма),
   СУММА(Вес),
   СУММА(СуммаУпр),
   СУММА(Объем)
ПО
   Регион,
   Контрагент,
   Заказ
29 НЕА123
 
28.05.12
10:44
(0)
где всякие там типа СУММА()?
30 НЕА123
 
28.05.12
10:44
(1)
и для чего туева туча полей?
31 НЕА123
 
28.05.12
10:45
(29)->(28)
32 amadeus2010
 
28.05.12
10:49
можно сделать и так

ИТОГИ ПО
   СУММА(КоличествоКРаспределению),
   СУММА(Сумма),
   СУММА(Вес),
   СУММА(СуммаУпр),
   СУММА(Объем)

или как будет более оптимально?
33 НЕА123
 
28.05.12
10:56
(32)
не про это речь. надо

ВЫБРАТЬ
   МАКСИМУМ(ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.КодОракл) КАК КодОракл,
.....

а лучше просто убрать ненужные поля.
34 amadeus2010
 
28.05.12
11:01
дело все в том что поля в запросе все нужные убрать ничего нельзя. А что посоветуете насчет ошибке не найдено поле Регион в группировке.Ведь оно есть в запросе как псевдоним
35 НЕА123
 
28.05.12
11:04
(34)

???

>дело все в том что поля в запросе все нужные убрать ничего нельзя

ужасно.

ну и пиши тогда МАКСИМУМ,МИНИМУМ,СУММА и т.д. как в (33)
36 kosts
 
28.05.12
11:06
(34) В группировке должно быть написано 1 к 1 как в выражениях запроса, псевдонимы не катят


СГРУППИРОВАТЬ ПО
 

ВЫБОР
       КОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
           ТОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Регион
       ИНАЧЕ ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель.Регион
   КОНЕЦ
,
   Контрагент,
   Заказ
37 kosts
 
28.05.12
11:09
когда выкладываешь код, то обрамляй его сверху-снизу [1 c]  [/ 1 с] (без пробелов)
38 amadeus2010
 
28.05.12
11:10
т.е все поля включаемые в группировку должны идти без указания их псевдонимов?
(37)учту на будущее
39 kosts
 
28.05.12
11:12
(38) Ну да
40 kosts
 
28.05.12
11:14
(38) Иногда проще пользоваться временными таблицами. В одной собираешь данные в другой группируешь или еще что нибудь, чем в одном громадном запросе все за один раз делать. Просто удобнее для разработки.
41 amadeus2010
 
28.05.12
11:23
(34) убрал псевдонимы в Сгруппировать по,получилось так
//1с-
СГРУППИРОВАТЬ ПО
 

ВЫБОР
       КОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
           ТОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Регион
       ИНАЧЕ ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель.Регион
   КОНЕЦ
,
  ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент,
  ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя
     
    ИМЕЮЩИЕ СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)>= 5
   
ИТОГИ ПО
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток),
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.СуммаВзаиморасчетовОстаток),
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Вес * ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток / ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент * ТоварыКРаспределениюПоРейсамОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент),
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.СуммаУпрОстаток),
   СУММА(    ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Объем * ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток / ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент * ТоварыКРаспределениюПоРейсамОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент)
//1с+

теперь выдает такую ошибку "Операция не разрешена в предложении ИТОГИ ПО СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)"
42 kosts
 
28.05.12
11:28
(41)
ИТОГИ ПО - это дополнительная надстройка 1с-ки над уже полученным результатом запроса. В этом месте думаю нужно писать псевдонимы.

"сгруппировать по" и "итоги" это разные вещи
43 kosts
 
28.05.12
11:29
Пользуйся конструктором, не будет возникать таких проблем.
44 hhhh
 
28.05.12
11:34
что значит "1с-"?
45 amadeus2010
 
28.05.12
11:35
(44) комментарий начало и конца кода
46 amadeus2010
 
28.05.12
11:46
(42) это понятно, только сейчас выдает ошибку что такие то поля не входят в поля группировки. Если можно подскажите направление в котором копать надо. Если использовать ВТ, то будет ли это решением проблемы с запросом?
47 kosts
 
28.05.12
12:16
(46) >выдает ошибку что такие то поля не входят в поля группировки.
Убери группировки и итоги и открой конструктор (правой кнопкой мышки на запросе) и там сделай группировки и итоги.

>Если использовать ВТ, то будет ли это решением проблемы с запросом?
Само по себе не решит конечно. Это как вариант. И где делать ошибки - в одном запросе или в разделенном по временным таблицам тебе решать :-)
48 amadeus2010
 
28.05.12
13:13
ошибки делать конечно же нигде не хочется:))
49 amadeus2010
 
28.05.12
14:24
(47) кажется получилось сделать то что хотел

//код+
СГРУППИРОВАТЬ ПО
   ВЫБОР
       КОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
           ТОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Регион
       ИНАЧЕ ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель.Регион
   КОНЕЦ,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Наименование,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.КодОракл,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя,
   ТоварыКРаспределениюПоРейсамОстатки.Номенклатура,
   ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры,
   ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения,
   ТоварыКРаспределениюПоРейсамОстатки.ТипПоставки,
   ТоварыКРаспределениюПоРейсамОстатки.Цена,
   ТоварыКРаспределениюПоРейсамОстатки.СтавкаНДС,
   ТоварыКРаспределениюПоРейсамОстатки.СуммаВзаиморасчетовОстаток,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Дата,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Номер,
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ВТТоварыВРейсах.КоличествоОборот, 0)

ИМЕЮЩИЕ
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 5

УПОРЯДОЧИТЬ ПО
   Регион,
   КонтрагентНаименование
ИТОГИ
   СУММА(КоличествоКРаспределению),
   СУММА(Сумма),
   СУММА(Вес),
   СУММА(СуммаУпр),
   СУММА(Объем)
ПО
   Регион,
   Контрагент,
   Заказ
//код+

только смущает надо ли есть ИМЕЮЩИЕ
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 5
указывать в ИТОГИ
   СУММА(КоличествоКРаспределению) ибо это практически 2 одинаковых поля?
50 kosts
 
28.05.12
14:26
(49) Тебе виднее. Имеющие будет отрабатывать после сгруппировать, но до итогов.
51 kosts
 
28.05.12
14:27
Делая "Итоги" ожидай то, что результат запроса вернет тебе дерево.
52 amadeus2010
 
28.05.12
15:25
поэтому и спрашиваю верно ли использовать ИТОГИ после Имеющие. ИТОГИ применялись в старой версии запроса для подсчета указанных полей.
53 amadeus2010
 
28.05.12
15:26
можно ли поместить то что находится в ИТОГИ в Имеющие?
54 kosts
 
28.05.12
15:27
(52) Мы же не знаем назначение твоего отчета, нужно или не нужно не нам решать.
55 kosts
 
28.05.12
15:29
(53) Итоги делают постобработку результата запроса. Выполни запрос в консоли с итогами и без.
И посмотри, что будет.
56 amadeus2010
 
28.05.12
15:56
посмотрю,что получится
57 amadeus2010
 
28.05.12
16:57
проверил в реальных условиях,работает.Показывает то что больше или равно 5 единицам товара.Есть вопрос коммерческий отдел попросил чтобы в этот отбор включить бутыли 5-10-20л если их количество в заказе до 5 единиц, потому покупатель может взять 1шт 5л или 2шт 10л.Но согласно моему запросу они в отбор не попадают и отсеиваются в результате проверки ИМЕЮЩИЕ.Не подскажите как можно включить их в отбор а все остальное оставить так как есть в (49)?
58 amadeus2010
 
29.05.12
08:15
Доброе утро в продолжение темы.Возможно ли использовать конструкцию Выбор когда тогда и условие ИМЕЮЩИЕ СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 5 для отбора (57)

Чтобы получилось как то так

Выбор когда ТоварыКраспределениюПоРейсам.Номенклатура.Наименование="20л"
     Тогда СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)>0
     Иначе СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)>= 5
Конец

вместо ИМЕЮЩИЕ СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 5?
59 amadeus2010
 
29.05.12
09:02
написал такое условие в консоли запроса

ВЫБОР Когда ТоварыКРаспределениюПоРейсамОстатки.Номекнклатура.Наименование=Справочник.Номенклатура.НайтиПоНаименованию("20л")
         Тогда СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) > 0
             Иначе СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 5
         Конец КАК КоличествоКРаспределению,

выдало ошибку Ожидается выражение Тогда.В чем заключается ошибка?
60 hhhh
 
29.05.12
09:09
вот эту фигню

Справочник.Номенклатура.НайтиПоНаименованию("20л")

нельзя писать в запросе. Это не на языке запросов.
61 amadeus2010
 
29.05.12
09:21
а как мне сделать отбор в Выбор когда, чтобы указать что для данной продукции соблюдается условие больше 0 а для всей остальной СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 5, начальство дало указание пропускать 20л баллоны даже если их в заказе 1 штука.Но  при этом суммарно количество товара в заказе не может быть меньше 5 штук.Т.е может быть Лимонад 0.5л-2шт, 5л баллон=2шт, 20л баллон=1шт. У меня сейчас по условию
ИМЕЮЩИЕ
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 5 отсекаются 5л,10,20л если их количество в заказе не равно или меньше 5, а надо чтобы они тоже включались в заказ при таком раскладе Сумма(1+1+3)
62 amadeus2010
 
29.05.12
09:48
ау есть кто-нибудь?
63 kosts
 
29.05.12
09:52
(61) За 10 дней не удалось решить задачу?

В запросе добавь колонку Сумма(Выбор когда номенклатура = 20л баллон Тогда 1 Иначе 0) Как КоличествоБаллонов20л
В "имеющие" используй для отбора. Но этот способ сработает только если группировать только по "Заказу" иначе вернет что попало. Если будешь использовать ИТОГИ, то можно попробовать сгруппировать только с одним реквизитом "Заказ".

вариант 2. Попробуй через временную таблицу.
Помести во временную таблицу итоги по заказам (или как тебе нужно), например с колонками Заказ, КоличествоТоваровВсего, КоличествоБаллонов20л.
Во втором (твоем основном) запросе соедини первую ВТ и вторую ВТ. Тут уже можешь сделать отбор и суммирование без использования Имеющие.
(ГДЕ ВТТаблица1.КоличествоТоваровВсего >= 5 или ВТТаблица1.КоличествоБаллонов20л >=1)


в (49) У тебя СИЛЬНО много чего напихано в "СГРУППИРОВАТЬ ПО" и скорее всего запрос вернет совершенно не сгруппировав ничего.
64 kosts
 
29.05.12
09:57
читать: "первую ВТ и вторую ВТ" => "первую ВТ и твой запрос"
65 amadeus2010
 
29.05.12
10:01
частично решил задачу,осталось вот это условие
66 amadeus2010
 
29.05.12
11:40
(63)предложение Сумма(Выбор когда номенклатура = 20л баллон Тогда 1 Иначе 0) Как КоличествоБаллонов20л выдает ошибка синтаксиса.
Насчет вариант2 не совсем понял.
Посмотрел в ТоварыКРаспределниюПоРейсам.ЗаказПокупателя.Товары можно выбрать номенклатуру и количество товара.Пока не соображу как использовать данные через ЗаказПокупателя.
67 kosts
 
29.05.12
12:54
(66) Я могу заблуждаться на счет что и откуда брать, рассказываю про общий подход.
68 amadeus2010
 
29.05.12
13:09
я понял это, но все равно спасибо.Попробую через Заказ покупателя выйти на номенклатуру и количество товара и уже оттуда ставить условие
69 Wobland
 
29.05.12
13:09
всё ещё не взлетело?
70 amadeus2010
 
29.05.12
13:27
со старым условием Имеющие взлетает и летит,но поступило новое предложение (61),пытаюсь разобраться как его сделать
71 amadeus2010
 
29.05.12
15:22
народ есть кто здесь?
72 amadeus2010
 
29.05.12
15:30
пытаюсь отдельным запросом в консоли вытащить номекклатуру,количество из ТоварыКраспределениюПоРейсам.Остатки, но выдает ошибку на отсутствие полей

ВЫБРАТЬ
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя,
   ТоварыКРаспределениюПоРейсамОстатки.Номенклатура,
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.Цена) как Цена,
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)как Количество,
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.СуммаВзаиморасчетовОстаток) как Сумма,
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.СуммаУпрОстаток) как СуммаУпр
ИЗ
   РегистрНакопления.ТоварыКРаспределениюПоРейсам.Остатки КАК ТоварыКРаспределениюПоРейсамОстатки
   
   Где  ТоварыКРаспределениюПоРейсамОстатки.Номенклатура В ИЕРАРХИИ(
         ВЫБРАТЬ
               СправочникНоменклатура.Ссылка КАК ссылка
           ИЗ
               Справочник.Номенклатура КАК СправочникНоменклатура
           ГДЕ
               СправочникНоменклатура.Наименование = "20Л"
               И Выбор Когда СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)>=1
                 Тогда ТоварыКРаспределениюПоРейсамОстатки.Номенклатура=СправочникНоменклатура.Ссылка
                      Конец)        
чт не так?
73 Eugene_life
 
29.05.12
15:36
(72) По-моему, вот так (СправочникНоменклатура.Наименование = "20Л") ты зря написал. Он не найдет ни одного значения
74 amadeus2010
 
29.05.12
16:00
я пытаюсь отсеить товар по группе 20л бутылей. В одном отчете такая конструкция прокатила.Если что написал не так поправьте пожалуйста.
75 hhhh
 
29.05.12
16:01
(73) найдёт, куда она денется.
76 amadeus2010
 
29.05.12
16:06
в данном случае консоль не может найти это поле
И Выбор Когда СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток)>=1
                 Тогда ТоварыКРаспределениюПоРейсамОстатки.Номенклатура=СправочникНоменклатура.Ссылка
77 amadeus2010
 
29.05.12
16:37
взор притупился,короче прошу помощи объяснить почему выходит ошибка в условии
не найдено поле И ВЫБОР КОГДА СУММА( ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 1
Хотя пишу вроде все правильно

ТоварыКРаспределениюПоРейсамОстатки.Номенклатура В ИЕРАРХИИ
   (ВЫБРАТЬ
       СправочникНоменклатура.Ссылка КАК ссылка
   ИЗ
       Справочник.Номенклатура КАК СправочникНоменклатура
   ГДЕ
       СправочникНоменклатура.Наименование = "20Л"
       
       И ВЫБОР КОГДА СУММА( ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток) >= 1
           ТОГДА ТоварыКРаспределениюПоРейсамОстатки.Номенклатура=СправочникНоменклатура.Наименование
         КОНЕЦ)
78 amadeus2010
 
29.05.12
16:59
кто-нибудь есть здесь
79 amadeus2010
 
30.05.12
17:04
в общем решил задачу таким образом

ВЫБРАТЬ
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Ссылка КАК Заказ
ПОМЕСТИТЬ ВТЗаказПоКоличествуКассет
ИЗ
   РегистрНакопления.ТоварыКРаспределениюПоРейсам.Остатки(
           &Дата,
           ЗаказПокупателя.ДатаОтгрузки >= &ЗаказПокупателяДатаНачала
               И ЗаказПокупателя.ДатаОтгрузки <= &ЗаказПокупателяДатаКонца) КАК ТоварыКРаспределениюПоРейсамОстатки

СГРУППИРОВАТЬ ПО
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Ссылка

ИМЕЮЩИЕ
   СУММА(ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток / ТоварыКРаспределениюПоРейсамОстатки.Номенклатура.ЕдиницаИзмеренияМест.Коэффициент) >= 5

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

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОбороты.Номенклатура,
   ТоварыНаСкладахОбороты.ХарактеристикаНоменклатуры,
   ТоварыНаСкладахОбороты.СерияНоменклатуры,
   ТоварыНаСкладахОбороты.Регистратор.Рейс

ИНДЕКСИРОВАТЬ ПО
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры,
   РегистраторРейс
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыВРейсахОбороты.Рейс КАК Рейс,
   ТоварыВРейсахОбороты.Номенклатура КАК Номенклатура,
   ТоварыВРейсахОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ТоварыВРейсахОбороты.СерияНоменклатуры КАК СерияНоменклатуры,
   СУММА(ЕСТЬNULL(ТоварыВРейсахОбороты.КоличествоОборот, 0)) КАК КоличествоОборот
ПОМЕСТИТЬ ВТТоварыВРейсахОбороты
ИЗ
   РегистрНакопления.ТоварыВРейсах.Обороты(, , , Состояние <> &CостояниеРейсаЗакрыт) КАК ТоварыВРейсахОбороты

СГРУППИРОВАТЬ ПО
   ТоварыВРейсахОбороты.Рейс,
   ТоварыВРейсахОбороты.Номенклатура,
   ТоварыВРейсахОбороты.ХарактеристикаНоменклатуры,
   ТоварыВРейсахОбороты.СерияНоменклатуры

ИНДЕКСИРОВАТЬ ПО
   Рейс,
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры
;

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

СГРУППИРОВАТЬ ПО
   ВТТоварыВРейсахОбороты.Номенклатура,
   ВТТоварыВРейсахОбороты.ХарактеристикаНоменклатуры,
   ВТТоварыВРейсахОбороты.СерияНоменклатуры

ИНДЕКСИРОВАТЬ ПО
   КоличествоОборот,
   Номенклатура,
   ХарактеристикаНоменклатуры,
   СерияНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.КодОракл КАК КодОракл,
   ВЫБОР
       КОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
           ТОГДА ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Регион
       ИНАЧЕ ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Грузополучатель.Регион
   КОНЕЦ КАК Регион,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент КАК Контрагент,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Контрагент.Наименование КАК КонтрагентНаименование,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя КАК Заказ,
   ТоварыКРаспределениюПоРейсамОстатки.Номенклатура,
   ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры,
   ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения,
   ТоварыКРаспределениюПоРейсамОстатки.ТипПоставки,
   ТоварыКРаспределениюПоРейсамОстатки.Цена,
   ТоварыКРаспределениюПоРейсамОстатки.СтавкаНДС,
   ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток КАК КоличествоКРаспределению,
   ТоварыКРаспределениюПоРейсамОстатки.СуммаВзаиморасчетовОстаток КАК Сумма,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Вес * ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток / ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент * ТоварыКРаспределениюПоРейсамОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Вес,
   ТоварыКРаспределениюПоРейсамОстатки.СуммаУпрОстаток КАК СуммаУпр,
   ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Объем * ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток / ТоварыКРаспределениюПоРейсамОстатки.ЕдиницаИзмерения.Коэффициент * ТоварыКРаспределениюПоРейсамОстатки.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК Объем,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Дата,
   ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Номер,
   ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ВТТоварыВРейсах.КоличествоОборот, 0) КАК КоличествоОстаток
ИЗ
   РегистрНакопления.ТоварыКРаспределениюПоРейсам.Остатки(
           &Дата,
           ЗаказПокупателя.ДатаОтгрузки >= &ЗаказПокупателяДатаНачала
               И ЗаказПокупателя.ДатаОтгрузки <= &ЗаказПокупателяДатаКонца) КАК ТоварыКРаспределениюПоРейсамОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаРейс, Склад.ТипСклада <> &СкладМашина) КАК ТоварыНаСкладахОстатки
       ПО ТоварыКРаспределениюПоРейсамОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
           И ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
           И ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры = ТоварыНаСкладахОстатки.СерияНоменклатуры
       ЛЕВОЕ СОЕДИНЕНИЕ ВТТоварыВРейсах КАК ВТТоварыВРейсах
       ПО ТоварыКРаспределениюПоРейсамОстатки.Номенклатура = ВТТоварыВРейсах.Номенклатура
           И ТоварыКРаспределениюПоРейсамОстатки.ХарактеристикаНоменклатуры = ВТТоварыВРейсах.ХарактеристикаНоменклатуры
           И ТоварыКРаспределениюПоРейсамОстатки.СерияНоменклатуры = ВТТоварыВРейсах.СерияНоменклатуры
       ЛЕВОЕ СОЕДИНЕНИЕ ВТЗаказПоКоличествуКассет Как ВТЗаказПоКоличествуКассет
       ПО ТоварыКРаспределениюПоРейсамОстатки.ЗаказПокупателя.Ссылка= ВТЗаказПоКоличествуКассет.Заказ
ГДЕ
   ТоварыКРаспределениюПоРейсамОстатки.КоличествоОстаток > 0

УПОРЯДОЧИТЬ ПО
   Регион,
   КонтрагентНаименование
ИТОГИ
   СУММА(КоличествоКРаспределению),
   СУММА(Сумма),
   СУММА(Вес),
   СУММА(СуммаУпр),
   СУММА(Объем)
ПО
   Регион,
   Контрагент,
   Заказ
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.