Имя: Пароль:
1C
1С v8
Запрос. Начал изучать
,
0 Kumar_K
 
05.02.15
10:38
Добрый день.
Начал изучать запросы, поэтому сильно не пинайти. Задачу придумал сам
Необходимо выбрать товары которые стоя дороже N или кол-во продаж больше M . И вывести продажи и цену каждого элемента спр.Номенклатура удовлетворяющего условия.

Мой запрос выполняется долго можно ли его оптимизировать?
Можно ли обойтись без временных таблиц?
И как упорядочить выходные данные после объединения по номенклатуре



ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Цена,
Продажи.Номенклатура,
Сумма(Продажи.Количество) Как ПРо
ПОМЕСТИТЬ тзИсх00

ИЗ
РегистрНакопления.Продажи КАК Продажи
Внутреннее Соединение  РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО   Продажи.Номенклатура   =
ЦеныНоменклатурыСрезПоследних.Номенклатура

Сгруппировать По
ПРодажи.Номенклатура  ,
ЦеныНоменклатурыСрезПоследних.Цена

;

ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена,
      Сумма(Продажи.Количество) как ПРод
ПОМЕСТИТЬ тзИсх01
    
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
    Левое СОЕДИНЕНИЕ РегистрНакопления.Продажи КАК Продажи
        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = Продажи.Номенклатура
ГДЕ
    ЦеныНоменклатурыСрезПоследних.Цена > 5000 и
    ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty
    Сгруппировать По
ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена


    
;

  
Выбрать
тзИсх01.Номенклатура,
ТЗИсх01.Цена,

тзИсх01.Прод
Из
тзИсх01
Где
тзИсх01.Прод   > 0

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
тзИсх00.Номенклатура,
ТЗИсх00.Цена,
тзИсх00.Про
Из
тзИсх00
Где
тзИсх00.Про > 20000

Упорядочить по
Номенклатура
1 Godofsin
 
05.02.15
10:40
условия из ГДЕ перенеси в условия соединения
2 Ёпрст
 
05.02.15
10:41
(0) нет условия на тип цен
3 Ёпрст
 
05.02.15
10:41
нет параметров ВТ
4 Godofsin
 
05.02.15
10:41
(1) Наврал. В условия виртуальной таблицы
5 Godofsin
 
05.02.15
10:42
И зачем столько пакетов?
6 Kumar_K
 
05.02.15
10:44
(2) Условия на Тип Цен это параметр
ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty
7 Kumar_K
 
05.02.15
10:48
(2) Понял о чем ты и добавил
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Цена,
Продажи.Номенклатура,
Сумма(Продажи.Количество) Как ПРо
ПОМЕСТИТЬ тзИсх00

ИЗ
РегистрНакопления.Продажи КАК Продажи
Внутреннее Соединение  РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО   Продажи.Номенклатура   =
ЦеныНоменклатурыСрезПоследних.Номенклатура
Где
ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty


Сгруппировать По
ПРодажи.Номенклатура  ,
ЦеныНоменклатурыСрезПоследних.Цена

;




(5) ВТ использую лишь для того что не знаю как в запросе сгруппировать и отобрать уже сгруппированные итоги
8 Krabobor
 
05.02.15
10:49
необходимо использовать виртуальную таблицу оборотов регистра Продажи. использовать физическую таблицу - моветон.
9 Жан Пердежон
 
05.02.15
10:49
(3) там и ВТ не везде есть
10 Kumar_K
 
05.02.15
10:56
А как упорядочить выходные данные после объединения по номенклатуре?
11 Krabobor
 
05.02.15
11:01
ВЫБРАТЬ
    ЦеныНоменклатурыСрезПоследних.Номенклатура,
    ЦеныНоменклатурыСрезПоследних.Цена
ПОМЕСТИТЬ ТаблицаЦен
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
            ,
            ТипЦен = &ТипЦен
                И Цена > &НеобходимаяЦена) КАК ЦеныНоменклатурыСрезПоследних
;

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

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

УПОРЯДОЧИТЬ ПО
    Номенклатура.Наименование
12 Krabobor
 
05.02.15
11:01
вот то что тебе надо. упорядочивать надо по наименованию номенклатуры, а не по ссылке.
13 Krabobor
 
05.02.15
11:04
тут выводится вся номенклатура с заполненными ценами и продажами удовлетворяющими твоим условиям. если тебе надо отобрать только заполненные - думаю изменить условие ГДЕ в 3й таблице не составит труда
14 Kumar_K
 
05.02.15
11:07
(11) Спасибо
15 Kumar_K
 
05.02.15
11:08
Но свой запрос в (0) Изменил согласно (8)

ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.КоличествоОборот ,
    ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
    РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
Внутреннее Соединение  РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО   ПродажиОбороты.Номенклатура   =
ЦеныНоменклатурыСрезПоследних.Номенклатура
Где
ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty
И
    
ПродажиОбороты.КоличествоОборот > 20000
Объединить    

ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ПродажиОбороты.КоличествоОборот,

ЦеныНоменклатурыСрезПоследних.Цена

    
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
    Левое СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ПродажиОбороты.Номенклатура
ГДЕ
    ЦеныНоменклатурыСрезПоследних.Цена > 5000 и
    ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty   и
      ПродажиОбороты.КоличествоОборот > 0
    
Но ремя в консоле запросов на выполнение тратиться на 25% больше
16 Kumar_K
 
05.02.15
11:26
(11) ВЫБРАТЬ
    Номенклатура.Ссылка ,
    ЕСТЬNULL(ТаблицаПродаж.КоличествоОборот, 0) КАК Количество,
    ЕСТЬNULL(ТаблицаЦен.Цена, 0) КАК Цена
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаЦен КАК ТаблицаЦен
        ПО ТаблицаЦен.Номенклатура = Номенклатура.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаПродаж КАК ТаблицаПродаж
        ПО ТаблицаПродаж.Номенклатура = Номенклатура.Ссылка
  
УПОРЯДОЧИТЬ ПО
    Номенклатура.Ссылка.Наименование
Ошибка
Неоднозначное поле  "Номенклатура.Ссылка" По ТаблицаЦен.Номенклатура = <<?>>Номенклатура.Ссылка
17 Kumar_K
 
05.02.15
11:28
А можно ли два объединенных запроса поместить в временную таблицу?

Выбрать
Из
Объединить
Выбрать
Из
18 Krabobor
 
05.02.15
11:30
(17) а почему нет?

ВЫБРАТЬ
    Номенклатура.Ссылка
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
    Справочник.Номенклатура КАК Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВременнаяТаблица.Ссылка
ИЗ
    ВременнаяТаблица КАК ВременнаяТаблица
19 ktvladimir
 
05.02.15
11:33
ВТ у вас шибко большие нафигачьте индексов по номенклатуре. раз уж по ней соединяете
20 ktvladimir
 
05.02.15
11:34
ну и лучше бы виртуальные таблицы бы использовали типа оборотов.
21 Krabobor
 
05.02.15
11:35
(19)(20) никто не спорит, но тут пока вопрос стоит в умении составлять запросы, а не оптимизировать скорость выполнения. сначала пусть научится правильно соединять таблицы, а потом уже дальше двигаться.
22 ktvladimir
 
05.02.15
11:44
(21) смотрим (0)
Мой запрос выполняется долго можно ли его оптимизировать?
23 Kumar_K
 
05.02.15
11:54
Вот добился нужного результата  
Krabobor если не сложно объесни почему ты соединял справочник номенклатура с временными таблицами и еще левым соединением
//Вот что получилось у меня
ВЫБРАТЬ
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.КоличествоОборот ,
    ЦеныНоменклатурыСрезПоследних.Цена
    ПОместить ТЗ1
ИЗ
    РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
Внутреннее Соединение  РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО   ПродажиОбороты.Номенклатура   =
ЦеныНоменклатурыСрезПоследних.Номенклатура
Где
ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty
И
    
ПродажиОбороты.КоличествоОборот > 20000
Объединить    

ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ПродажиОбороты.КоличествоОборот,

ЦеныНоменклатурыСрезПоследних.Цена

    
ИЗ
     РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
     Левое СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ПродажиОбороты.Номенклатура
ГДЕ
    ЦеныНоменклатурыСрезПоследних.Цена > 5000 и
    ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty   и
      ПродажиОбороты.КоличествоОборот > 0
;
Выбрать
Тз1.Номенклатура,
Тз1.КоличествоОборот,
Тз1.Цена
Из Тз1
Упорядочить ПО
Тз1.Номенклатура.Наименование
24 ktvladimir
 
05.02.15
12:00
ЦеныНоменклатурыСрезПоследних.Цена > 5000 и
    ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty  
помести внутри внутри виртуальной таблицы

РегистрСведений.ЦеныНоменклатуры.СрезПоследних (, Цена >5000 И ТипЦен   = &NbgWty)
25 Krabobor
 
05.02.15
12:07
(23) Krabobor если не сложно объесни почему ты соединял справочник номенклатура с временными таблицами и еще левым соединением  - не очень внимательно прочитал (0) :)

а вообще для того чтобы выбрать всю номенклатуру. ведь по номенклатуре может не быть продаж, но может быть установлена цена.
26 Kumar_K
 
05.02.15
12:26
(25) Ну для "ведь по номенклатуре может не быть продаж, но может быть установлена цена"
можно убрать условие
ПродажиОбороты.КоличествоОборот > 0
из запроса
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ПродажиОбороты.КоличествоОборот,

ЦеныНоменклатурыСрезПоследних.Цена

    
ИЗ
     РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
     Левое СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ПродажиОбороты.Номенклатура
ГДЕ
    ЦеныНоменклатурыСрезПоследних.Цена > 5000 и
    ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty   и
      ПродажиОбороты.КоличествоОборот > 0
27 Kumar_K
 
05.02.15
12:27
+26 Если я правильно понимаю
28 Kumar_K
 
05.02.15
12:28
(24) Не много не понял вместо чего
ЦеныНоменклатурыСрезПоследних.Цена > 5000 и
    ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty  
помести внутри внутри виртуальной таблицы

РегистрСведений.ЦеныНоменклатуры.СрезПоследних (, Цена >5000 И ТипЦен   = &NbgWty)
29 Krabobor
 
05.02.15
12:31
(28) ну тут уже надо читать мат часть. если коротко - то условия для виртуальной таблицы отрабатывают быстрее, чем условия наложенные непосредственно на выборку(ГДЕ ...) потому что сначала отрабатывают параметры вирт таблиц. потом происходит выборка данных и только потом условия ГДЕ
30 ktvladimir
 
05.02.15
12:36
есть таблица на миллион записей, при наложении условий на виртуальную таблицу останется 100 записей
которые потом и будут соединяться с другой таблицей

в твоем случае сперва будет соединение с этим миллионом записей, а потом полученное будет ограничиваться.

(28)  предлагается убрать из условий

ЦеныНоменклатурыСрезПоследних.Цена > 5000 и
    ЦеныНоменклатурыСрезПоследних.ТипЦен   = &NbgWty  
и разместить их в условия виртуальной таблицы
РегистрСведений.ЦеныНоменклатуры.СрезПоследних (, Цена >5000 И ТипЦен   = &NbgWty)
31 Kumar_K
 
05.02.15
12:37
(30) Ясно. спасибо.
32 ktvladimir
 
05.02.15
12:42
так как у тебя соединение то рекомендуется писать ЕстьNULL(ПродажиОбороты.КоличествоОборот,0)

При левом соединении Левая таблица попадет полностью, а данные из правой только те что удовлетворят условию соединения. Возможна ситуация когда продажа есть а цены нет, и наоборот
те для
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
     Левое СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
таблица может выглядеть так

Номенклатура КоличествоОборот Цена
Товар        NULL             100
33 kosts
 
05.02.15
12:43
(30) Не факт, что так правильно будет. Условие накладывается раньше, чем делается срез.
Есть товар
Дата      |  Цена
01.01.20015  |  6000
10.01.20015  |  4000

Если сделать срез на 31.01.2015, то запрос вернет 6000 , а не должен ничего вернуть...

Но надо еще раз проверить это поведение, но вроде так.
34 ktvladimir
 
05.02.15
12:45
(33) да согласен. Так как Цена это ресурс то условие на цену лучше вывести сверху те в ГДЕ, ТипЦен это измерение, а соответсвенно лучше оставить в условиях виртуально таблицы
35 ktvladimir
 
05.02.15
12:47
ну и еще раз прочти чем отличаются различные соединения для того чтоб понимать какое правильно использовать внутреннее левое полное
36 Kumar_K
 
05.02.15
12:52
Вот еще придумал себе задачку
использую УТ 10.3

Создать отчет по Непроданному товару.
Не проданный товар - это товар остаток которого на дату I
больше чем продажи за период G-I , а остаток на дату G > 0
План действий
1) Выбираем все товары из ВТ Регистра ТоварыОрганизаций.Остатки помещаем во врем таб Таб1
2) Выбираем все обороты за период из ВТ Регистра Продажи
помещаем во врем таб Таб2
3) Делаем Таб1 левое соединение Таб2 по номенклатуре
Вставляем условия, получаем результат

Праивильный ли план действий?
37 Krabobor
 
05.02.15
13:02
лучше выбирать из ТоварыНаСкладах - т.к. там реальные остатки, а в ТоварахОрганизаций может висеть проданный, но не отгруженный товар.

да и странное определение "не проданного" товара)
не проданный товар это то который висит на остатках.
38 Krabobor
 
05.02.15
13:03
для обучения лучше возьми методичку 1с по упр учету. там и задачи реальные (а не выдуманные) и примеры с пояснениями.
39 ktvladimir
 
05.02.15
13:04
не надо ВТ использовать. У тебя есть виртуальная таблица Остатки и обороты
40 kosts
 
05.02.15
13:06
Хорошая жизненная задачка, это получение цен (или например остатков) на каждый день или на какие-то даты (документов там).
41 ktvladimir
 
05.02.15
13:07
(40) в валюте с учетом плавающего курса)
42 Kumar_K
 
05.02.15
13:10
(41)(40) Москва не сразу строилась, благо есть к кому обратиться за помощью (я имел ввиду вас)
Так глядишь не много позанимаетесь со мной и я скил прокачаю
43 Kumar_K
 
05.02.15
13:36
Вот что получилось, в замечании (37) переделаю

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

          ;
Выбрать
  ТЗ1.Номенклатура,
  Сумма(ТЗ1.остаток) как остаток,
  Сумма(ТЗ1.оборот) как оборот
  ИЗ
   ТЗ1
    Сгруппировать по    
    ТЗ1.Номенклатура



Вопрос как в запросе вывести вычесляемое поле
Оборот - Остаток
44 ktvladimir
 
05.02.15
13:41
Сумма(ТЗ1.остаток) - Сумма(ТЗ1.оборот)
и опять вопрос чем вам виртуальная таблица Остатки и обороты не угодили?
опять же про условия
РегистрНакопления.Продажи.Обороты(&ДатаО,&ДатаК, Номенклатура.Родитель = &Ном)

совершенно излищне писать ссылку для ссылки

и логичнее было бы условие вида

Номенклатура В ИЕРАРХИИ (&Ном)
45 Kumar_K
 
05.02.15
13:52
РегистрНакопления.Продажи.Обороты(&ДатаО,&ДатаК, Номенклатура В ИЕРАРХИИ  (&Ном))
Выдает ошибку не аерные параметры

Спасибо
Сумма(ТЗ1.остаток) - Сумма(ТЗ1.оборот)

А вот за это вообще огромное
Номенклатура В ИЕРАРХИИ (&Ном)
46 ktvladimir
 
05.02.15
13:56
Не очень понял к чему относится ошибка . выложите весь текст запроса интересует вторая часть из пакета
47 Kumar_K
 
05.02.15
14:00
Выбрать
ПродажиОбороты.Номенклатура,
0 как остаток,
ПродажиОбороты.КоличествоОборот Как оборот
    Из
РегистрНакопления.Продажи.Обороты(&ДатаО,&ДатаК,Номенклатура В ИЕРАРХИИ  (&Ном)) КАК ПродажиОбороты

          ;
48 ktvladimir
 
05.02.15
14:01
нет это кусок из первого пакета)
я про
Выбрать
  ТЗ1.Номенклатура,
  Сумма(ТЗ1.остаток) как остаток,
  Сумма(ТЗ1.оборот) как оборот
  ИЗ
   ТЗ1
    Сгруппировать по    
    ТЗ1.Номенклатура
как сейчас выглядит
49 ktvladimir
 
05.02.15
14:01
там же у вас вроде ошибку выдает если я правильно понял
50 iceman2112
 
05.02.15
14:03
Где модеры? я подымал тему выделение кода? и что? ее заперли, читайте мол мануал, но вот тема, запрос "охеренно" подсвечен, все работает....
51 Kumar_K
 
05.02.15
14:08
Я его не много модернизировал, но теперь тоже ошибка
Поле не входит в группу ЦеныНоменклатурыСрезПоследних.Цена


Выбрать
ТЗ1.Номенклатура,
Сумма(ТЗ1.остаток) - Сумма(ТЗ1.оборот) как Разница,
ЦеныНоменклатурыСрезПоследних.Цена
  ИЗ
   ТЗ1   Левое Соединение
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО Тз1.Номенклатура =  ЦеныНоменклатурыСрезПоследних.Номенклатура
Где
ЦеныНоменклатурыСрезПоследних.ТипЦен   = &ТипЦен

  
    Сгруппировать по    
    ТЗ1.Номенклатура
52 Kumar_K
 
05.02.15
14:10
(50) А сейчас само все нормально выделилось
А нужно как-то специально код выделять?
53 iceman2112
 
05.02.15
14:12
(52) одному богу известно как его выделять, на все форумах есть теги
54 iceman2112
 
05.02.15
14:14
надо же быть билом гейтсом чтобы ввести тег
55 kosts
 
05.02.15
14:18
(52) Без пробелов

[1 c]
Код
[/1 c]
56 Kumar_K
 
05.02.15
14:20
(37) Ты рекомендовал использовать регистр     ТоварыНаСкладахОстатки
Но в нем же движения только по Оптовым складам, если я правильно понял.
57 Kumar_K
 
05.02.15
14:21
Поможете решить проблему в запросе который в (51)
58 salvator
 
05.02.15
14:24
(57) Добавь это поле в группировку
59 Kumar_K
 
05.02.15
14:26
(58) Отлично
60 Kumar_K
 
05.02.15
14:30
А все же почему так не работает,
[1 c]

РегистрНакопления.Продажи.Обороты(&ДатаО,&ДатаК,Номенклатура В ИЕРАРХИИ  (&Ном)) КАК ПродажиОбороты
[/1 c]
А вот так все гуд
[1 c]

РегистрНакопления.Продажи.Обороты(&ДатаО,&ДатаК,) КАК ПродажиОбороты
Где
ПродажиОбороты.Номенклатура В ИЕРАРХИИ  (&Ном))

[/1 c]
61 Kumar_K
 
05.02.15
14:47
Вот еще усложнил
[1 c]


Выбрать
ТЗ1.Номенклатура,
Сумма(ТЗ1.остаток) - Сумма(ТЗ1.оборот) как Разница,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.Валюта
Поместить Тз2
ИЗ
ТЗ1   Внутреннее Соединение
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО Тз1.Номенклатура =  ЦеныНоменклатурыСрезПоследних.Номенклатура
Где
ЦеныНоменклатурыСрезПоследних.ТипЦен   = &ТипЦен
Сгруппировать по    
ТЗ1.Номенклатура ,
ЦеныНоменклатурыСрезПоследних.Цена      ,
ЦеныНоменклатурыСрезПоследних.Валюта
             ;
   Выбрать
  Тз2.Номенклатура,
  Тз2.Разница,
  Тз2.Цена * КурсыВалютСрезПоследних.Курс Как ИТОГО
  ИЗ
  ТЗ2     Внутреннее Соединение
  РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
  ПО Тз2.Валюта = КурсыВалютСрезПоследних.Валюта
        
[/1 c]

А как получить срез последних на дату?
62 Kumar_K
 
05.02.15
14:48
(55) Да и тэг не работает
63 salvator
 
05.02.15
14:48
(62) Ты прочитай (55) внимательно.
64 Kumar_K
 
05.02.15
15:07
Да и еще вопрос, как наформу СКД вынести параметры
&ТипЦен
&ДатаО
&ДатаК
&Ном
65 Kumar_K
 
05.02.15
16:41
Ап
66 salvator
 
05.02.15
16:44
(65) На форме отчета создать табличное поле с данными "КомпоновщикНастроек.Настройки.ПараметрыДанных". Как вариант.
67 iceman2112
 
05.02.15
21:42
Тест тега

Выбрать
ТЗ1.Номенклатура,
Сумма(ТЗ1.остаток) - Сумма(ТЗ1.оборот) как Разница,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.Валюта
Поместить Тз2
ИЗ
ТЗ1   Внутреннее Соединение
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО Тз1.Номенклатура =  ЦеныНоменклатурыСрезПоследних.Номенклатура
Где
ЦеныНоменклатурыСрезПоследних.ТипЦен   = &ТипЦен
Сгруппировать по    
ТЗ1.Номенклатура ,
ЦеныНоменклатурыСрезПоследних.Цена      ,
ЦеныНоменклатурыСрезПоследних.Валюта
             ;
   Выбрать
  Тз2.Номенклатура,
  Тз2.Разница,
  Тз2.Цена * КурсыВалютСрезПоследних.Курс Как ИТОГО
  ИЗ
  ТЗ2     Внутреннее Соединение
  РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
  ПО Тз2.Валюта = КурсыВалютСрезПоследних.Валют
68 iceman2112
 
05.02.15
21:43
Тест тега
[1 с]
Выбрать
ТЗ1.Номенклатура,
Сумма(ТЗ1.остаток) - Сумма(ТЗ1.оборот) как Разница,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.Валюта
Поместить Тз2
ИЗ
ТЗ1   Внутреннее Соединение
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО Тз1.Номенклатура =  ЦеныНоменклатурыСрезПоследних.Номенклатура
Где
ЦеныНоменклатурыСрезПоследних.ТипЦен   = &ТипЦен
Сгруппировать по    
ТЗ1.Номенклатура ,
ЦеныНоменклатурыСрезПоследних.Цена      ,
ЦеныНоменклатурыСрезПоследних.Валюта
             ;
   Выбрать
  Тз2.Номенклатура,
  Тз2.Разница,
  Тз2.Цена * КурсыВалютСрезПоследних.Курс Как ИТОГО
  ИЗ
  ТЗ2     Внутреннее Соединение
  РегистрСведений.КурсыВалют.СрезПоследних КАК КурсыВалютСрезПоследних
  ПО Тз2.Валюта = КурсыВалютСрезПоследних.Валют
[/1 c]
69 iceman2112
 
05.02.15
21:43
Что не так модеры?
70 salvator
 
05.02.15
22:01
(69) Ответ найдешь тут: http://www.forum.mista.ru/about.php
73 iceman2112
 
05.02.15
22:08
и что? мои сообщения удаляют? я стремлюсь сделать портал более презентабельным и админы не идет мне навстречу?
74 Kumar_K
 
06.02.15
10:21
Еще вопрос
Вот код запроса

ВЫБРАТЬ
    ОтчетОРозничныхПродажахТовары.Номенклатура Как Товары,
    СУмма(ОтчетОРозничныхПродажахТовары.Сумма)  как Суммы
ИЗ
    Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
    
    Где
    ОтчетОРозничныхПродажахТовары.Ссылка.Проведен = ИСТИНА и
    ОтчетОРозничныхПродажахТовары.Ссылка.Дата > &Дата1 и
    ОтчетОРозничныхПродажахТовары.Ссылка.Дата < &Дата2
    СГруппировать ПО
    ОтчетОРозничныхПродажахТовары.Номенклатура

А как получить данные не за период а за каждый день в периоде
75 ktvladimir
 
06.02.15
10:24
полагаю что нужно добавить поле выборки дата :)
76 Kumar_K
 
06.02.15
10:32
(75) А можно подробнее
77 ktvladimir
 
06.02.15
10:35
ВЫБРАТЬ
    ОтчетОРозничныхПродажахТовары.Номенклатура Как Товары,
    НАЧАЛОПЕРИОДА(ОтчетОРозничныхПродажахТовары.Ссылка.Дата, ДЕНЬ) КАК Дата ,
.....
.....

СГРУППИРОВАТЬ ПО
    ОтчетОРозничныхПродажахТовары.Номенклатура,
    НАЧАЛОПЕРИОДА(ОтчетОРозничныхПродажахТовары.Ссылка.Дата, ДЕНЬ)
78 ktvladimir
 
06.02.15
10:35
очевидно, чтоб появился новый разрез сперва нужно его добавить.
79 Kumar_K
 
06.02.15
10:54
(77)
В 1С есть трандартные периоды День,Декада,Месяц и т.д
А как запросом можно сгруппировать по 3 дня
80 ktvladimir
 
06.02.15
11:02
79 да есть секунда, минута, час, день, неделя, месяц, квартал, полугодие, год

для решение разбивки по 3 дням, тут уже надо а) столкнуться с такой задачей:), б) подумать. мне сейчас влом :)
81 salvator
 
06.02.15
11:12
(79) Создать вручную таблицу значений с двумя колонками: начало границы и конец границы периода. Заполнить ее.
Затем соединить ее с основным запросом по полям периода
82 Kumar_K
 
06.02.15
11:16
Вот не решаемые для вопросы в запросе

Выбрать
СУмма(ОтчетОРозничныхПродажахТовары.Сумма) как Суммы ,
НАЧАЛОПЕРИОДА(ОтчетОРозничныхПродажахТовары.Ссылка.Дата, День) КАК Дата

     ИЗ
    Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
    
    Где
    ОтчетОРозничныхПродажахТовары.Ссылка.Проведен = ИСТИНА и
    ОтчетОРозничныхПродажахТовары.Ссылка.Дата > &Дата1 и
    ОтчетОРозничныхПродажахТовары.Ссылка.Дата < &Дата2
    Сгруппировать по
    НАЧАЛОПЕРИОДА(ОтчетОРозничныхПродажахТовары.Ссылка.Дата, День)

      Упорядочить по
НАЧАЛОПЕРИОДА(ОтчетОРозничныхПродажахТовары.Ссылка.Дата, День)


1) Объединить суммы по 3 дня
2) Объединить по четным/нечетным дням
83 Kumar_K
 
06.02.15
11:17
не решаемые для меня вопросы в запросе
84 ktvladimir
 
06.02.15
11:19
(83) таки лучше набивать руку все таки на задачах приближенных к реальности сейчас, а не на абстрактных )
85 Kumar_K
 
06.02.15
11:30
(84) Ну это же может быть и реальная задача мне же в голову пришла
86 ktvladimir
 
06.02.15
11:35
давай так. тебе сперва надо освоить типовые задачи. чтоб ты даже не задумывался как делать, когда у тебя сразу в голове будет четкое понимание как делать, когда ты четко будешь понимать как это работает, тогда уже и иди по усложнению
87 Kumar_K
 
06.02.15
11:36
(84)А задачи приближенные к реальности
Можешь набросать, а то с фантазией худо
88 ktvladimir
 
06.02.15
11:36
что толку что ты разберешь сложный пример не понимая основ
89 ktvladimir
 
06.02.15
11:36
тебе в предыдущем посте, если не ошибаюсь. скидывали что искать в части реальных задач
90 ktvladimir
 
06.02.15
11:38
а не эт ов этом посте ) смотри (38)
91 ktvladimir
 
06.02.15
11:38
также можешь взять задачи для сдачи на специалиста по платформе. их порешай
92 Kumar_K
 
06.02.15
11:45
(90) Что-то я методичку с задачами не нашел
93 Kumar_K
 
06.02.15
13:35
Вот придумал как объединить по четным и нечетным


Выбрать

     СУмма(ОтчетОРозничныхПродажахТовары.Сумма) как Суммы ,
      НАЧАЛОПЕРИОДА(ОтчетОРозничныхПродажахТовары.Ссылка.Дата, День) КАК Дата  ,
      РАЗНОСТЬДАТ(ОтчетОРозничныхПродажахТовары.Ссылка.Дата,&Дата2,День)  Как Осталось  
      ПОместить  ТЗ1
     ИЗ
    Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
    
    Где
    ОтчетОРозничныхПродажахТовары.Ссылка.Проведен = ИСТИНА и
    ОтчетОРозничныхПродажахТовары.Ссылка.Дата > &Дата1 и
    ОтчетОРозничныхПродажахТовары.Ссылка.Дата < &Дата2
    Сгруппировать по
    НАЧАЛОПЕРИОДА(ОтчетОРозничныхПродажахТовары.Ссылка.Дата, День),
   РАЗНОСТЬДАТ(ОтчетОРозничныхПродажахТовары.Ссылка.Дата,&Дата2,День)

    ;
Выбрать
ТЗ1.Суммы       ,
ВЫБОР
                КОГДА Выразить((Тз1.Осталось -0.5)/2 как Число(18,0) ) =     Тз1.Осталось /2
                                ТОГДА "чет"
                ИНАЧЕ "нечет"
                КОнец  как Признак

Поместить Тз2
Из Тз1
;
Выбрать
Сумма(ТЗ2.Суммы) ,
Тз2.Признак
Из Тз2
Сгруппировать по
Тз2.Признак
94 Kumar_K
 
06.02.15
13:44
А как объединить по дням неделям, есть же наверное методики
95 kosts
 
06.02.15
15:25
(94)

ВЫБРАТЬ ДЕНЬНЕДЕЛИ(ДАТАВРЕМЯ(2015, 2, 6)) КАК ДЕНЬНЕДЕЛИ
96 Константин536
 
07.02.15
19:13
Здравствуйте. По условию задачи есть 2 склада, на которые приходят товары.
Вопрос: Как сделать, чтобы данные брались только с одного склада? Где нужно написать условие?
Если кому не сложно, напишите примерный запрос.....
97 EvgeniuXP
 
07.02.15
21:30
напиши условие в ГДЕ, или передай в параметр виртуальной таблицы остатки