Имя: Пароль:
1C
1С v8
Отфильтровать продублированные записи в запросе
0 R0m1n
 
04.06.13
10:02
Имеется следующий запрос который выбирает документы для товарного отчета формы торг-29:
"ВЫБРАТЬ
                      |    ТоварыНаСкладахОбороты.Регистратор КАК Регистратор,
                      |    ТоварыНаСкладахОбороты.Регистратор.Дата КАК Дата,
                      |    ТоварыНаСкладахОбороты.Регистратор.Номер КАК НомерДок,
                      |    ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура,
                      |    СУММА(ТоварыНаСкладахОбороты.КоличествоПриход) КАК КоличествоПриход,
                      |    СУММА(ТоварыНаСкладахОбороты.КоличествоРасход) КАК КоличествоРасход
                      |ПОМЕСТИТЬ втБезЦены
                      |ИЗ
                      |    РегистрНакопления.ТоварыНаСкладах.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ТоварыНаСкладахОбороты
                      |ГДЕ
                      |    ТоварыНаСкладахОбороты.Склад = &Склад
                      |
                      |СГРУППИРОВАТЬ ПО
                      |    ТоварыНаСкладахОбороты.Регистратор,
                      |    ТоварыНаСкладахОбороты.Номенклатура,
                      |    ТоварыНаСкладахОбороты.Регистратор.Дата,
                      |    ТоварыНаСкладахОбороты.Регистратор.Номер
                      |
                      |ИНДЕКСИРОВАТЬ ПО
                      |    Регистратор,
                      |    Номенклатура,
                      |    КоличествоПриход,
                      |    КоличествоРасход
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ
                      |    втБезЦены.Регистратор КАК Регистратор,
                      |    втБезЦены.Дата КАК Дата,
                      |    втБезЦены.НомерДок КАК НомерДок,
                      |    втБезЦены.Номенклатура КАК Номенклатура,
                      |    втБезЦены.КоличествоПриход,
                      |    втБезЦены.КоличествоРасход,
                      |    МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период
                      |ПОМЕСТИТЬ втМаксПериод
                      |ИЗ
                      |    втБезЦены КАК втБезЦены
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
                      |        ПО втБезЦены.Номенклатура = ЦеныНоменклатуры.Номенклатура
                      |            И втБезЦены.Дата >= ЦеныНоменклатуры.Период
                      |
                      |СГРУППИРОВАТЬ ПО
                      |    втБезЦены.Дата,
                      |    втБезЦены.НомерДок,
                      |    втБезЦены.Регистратор,
                      |    втБезЦены.Номенклатура,
                      |    втБезЦены.КоличествоПриход,
                      |    втБезЦены.КоличествоРасход
                      |
                      |ИНДЕКСИРОВАТЬ ПО
                      |    Номенклатура,
                      |    Дата,
                      |    Регистратор,
                      |    Период
                      |;
                      |
                      |////////////////////////////////////////////////////////////////////////////////
                      |ВЫБРАТЬ
                      |    МАКСИМУМ(втМаксПериод.Дата) КАК ДатаДок,
                      |    втМаксПериод.Регистратор КАК Док,
                      |    МАКСИМУМ(втМаксПериод.НомерДок) КАК НомерДок,
                      |    СУММА(втМаксПериод.КоличествоПриход * ЦеныНоменклатуры.Цена) КАК Приход,
                      |    СУММА(втМаксПериод.КоличествоРасход * ЦеныНоменклатуры.Цена) КАК Расход,
                      |    NULL КАК НачОст,
                      |    NULL КАК КонОст
                      |ИЗ
                      |    втМаксПериод КАК втМаксПериод
                      |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
                      |        ПО втМаксПериод.Номенклатура = ЦеныНоменклатуры.Номенклатура
                      |            И втМаксПериод.Период = ЦеныНоменклатуры.Период
                      |ГДЕ
                      |    ЦеныНоменклатуры.ТипЦен = &ТипЦен
                      |
                      |СГРУППИРОВАТЬ ПО
                      |    втМаксПериод.Регистратор
                      |
                      |УПОРЯДОЧИТЬ ПО
                      |    ДатаДок";

проблема следующая: имеется много продублированных документов "Установка цен номенклатуры", соответственно имеем множество продублированных записей в регистре цены номенклатуры(все одинаковое - номенклатура, дата, цена - кроме регистратора). в результате в отчете по некоторым документам сумма увеличивается в два раза и сам отчет не идет. как можно переписать запрос, чтобы корректно отображалось?
1 vicof
 
04.06.13
10:08
ВЫБРАТЬ РАЗЛИЧНЫЕ?
2 Laerys
 
04.06.13
10:08
срез последних по регистру цен возми
3 rbcvg
 
04.06.13
10:08
ЦеныНоменклатуры.СрезПоследних?
4 Галахад
 
гуру
04.06.13
10:09
ГДЕ убери.
5 1Сергей
 
04.06.13
10:11
(2) +1
6 Ненавижу 1С
 
гуру
04.06.13
10:12
(0) либо тип цен разный, либо у тебя периодичность регистра не день
7 lxndr
 
04.06.13
10:17
а зачем индексировать по количествам?
8 R0m1n
 
05.06.13
12:55
а как сделать СрезПоследних, если цена мне нужна на каждую дату документа?
(6)периодичность - по позиции регистратора
9 R0m1n
 
05.06.13
13:49
ап
Ошибка? Это не ошибка, это системная функция.