Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 19:16

Избавиться от дублей в запросе

Автор stillenough, 13 апр 2015, 17:03

0 Пользователей и 1 гость просматривают эту тему.

stillenough

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

УПОРЯДОЧИТЬ ПО
Период1

Подскажите, пожалуйста как поправить можно. Пока что пытался менять тип связи - безрезультатно.

LexaK

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

ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ...
И ТоварыНаСкладахОстаткиИОбороты.Склад = ...
И (ТоварыНаСкладахОстаткиИОбороты.Регистратор = ...
ИЛИ ТоварыНаСкладахОстаткиИОбороты.Регистратор.ДокументОснование = ... )

существует по несколько записей в регистре сведений ДвижениеСебестоимостиСрезПоследних
и у вас происходит мультиплицирование,
поэтому необходимо
или
ввести дополнительное условие связи, которое однозначно свяжет данные регистров

или
использовать агрегацию, например взять Минимум/Максимум/... от Себестоимость/Количество
с группировкой по всем остальным полям (иногда этого достаточно).

все зависит от конкретики вашей задачи
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск