По конкретному номеру инвентаризации выводятся все результаты вместо одной, как исправить?
Написал такой код:
&НаСервере
Процедура ИнвентаризацияОСВывод()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|ИнвентаризацияОС.Ссылка КАК Ссылка,
|ИнвентаризацияОС.Номер КАК Номер,
|ИнвентаризацияОС.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
|РегСведПерв.ИнвентарныйНомер КАК ИнвентарныйНомер
|ИЗ
|Документ.ИнвентаризацияОС КАК ИнвентаризацияОС, РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПервых КАК РегСведПерв
|ГДЕ
|ИнвентаризацияОС.ПодразделениеОрганизации = &ПодразделениеОрганизации
|И РегСведПерв.ИнвентарныйНомер = &ИнвентарныйНомер";
Запрос.УстановитьПараметр(
"ПодразделениеОрганизации",
Справочники.ПодразделенияОрганизаций.НайтиПоНаименованию("ПринтерыИКО")
);
Запрос.УстановитьПараметр(
"ИнвентарныйНомер",
"1357"
);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДокументов = РезультатЗапроса.Выбрать();
Пока ВыборкаДокументов.Следующий() Цикл
Док = ВыборкаДокументов.Ссылка.ПолучитьОбъект();
Для каждого Стр из Док.ОС Цикл
Сообщить(Стр.ОсновноеСредство);
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Здесь мы выбираем конкретную организацию: ПринтерыИКО и конкретный инвентарный номер: 1357. В результате выводятся все результаты, которые касаются организации ПринтерыИКО.
Как сделать так, чтобы вывелся только позиция по инвентарному номеру: 1357?
P.S. Инвентарный номер находится здесь: РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПервых
Ответы (1 шт):
У вас в запросе нет связи по Основному средству. Поэтому и выводит все что попало в выборку. Используйте соединения(аналог JOIN из SQL). Также в запросе обращайтесь к табличной части документа, где содержится ОС
Пример:
ВЫБРАТЬ
|ИнвентаризацияОС.Ссылка КАК Ссылка,
|ИнвентаризацияОС.Ссылка.Номер КАК Номер,
|ИнвентаризацияОС.Ссылка.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
|РегСведПерв.ИнвентарныйНомер КАК ИнвентарныйНомер
|ИЗ
|Документ.ИнвентаризацияОС.ОС КАК ИнвентаризацияОС,
|ВНУТРЕННУУ СОЕДИНЕНИЕ РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПервых КАК РегСведПерв
|ПО ИнвентаризацияОС.ОсновноеСредство = РегСведПерв.ОсновноеСредство
|ГДЕ
|ИнвентаризацияОС.Ссылка.ПодразделениеОрганизации = &ПодразделениеОрганизации
|И РегСведПерв.ИнвентарныйНомер = &ИнвентарныйНомер
Возможно для вашего варианта необходимо будет что то подправить. Но главное, работайте не с документом ИнвентаризацияОС а с его табличной частью.
Пример обработки результата запроса:
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДокументов = РезультатЗапроса.Выбрать();
Пока ВыборкаДокументов.Следующий() Цикл
Сообщить("Инв. номер: " + ВыборкаДокументов.ИнвентарныйНомер);
КонецЦикла;