Соединение Остатков с Ценами (СрезПоследних) В запросе.

1. Xlophik 20.10.20 10:59 Сейчас в теме
Доброго времени суток.

Задача следующая:
1 получить остатки через Регистр накопления и связать его с Регистром сведений ЦеныНоменклатурыСрезПоследних, и все эту благодать поместить в отчет.

Все хорошо работало, до того как я начал вносить изменения в запрос....


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

	
	Запрос.УстановитьПараметр("Склад", ФильтрПоСкладу);
	Запрос.УстановитьПараметр("Номенклатура", ФильтрПоНоменклатуре);
	
	
	РезультатЗапроса = Запрос.Выполнить();
	
	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
	ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
	ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
	ОбластьСклад = Макет.ПолучитьОбласть("Склад");
	ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

	
	
	ТабДок = ЭлементыФормы.ПолеТабличногоДокумента1;
	ТабДок.Очистить();
	ТабДок.Вывести(ОбластьЗаголовок);
	ТабДок.Вывести(ОбластьШапкаТаблицы);
	ТабДок.НачатьАвтогруппировкуСтрок();
	
	ВыборкаСклад = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

	Пока ВыборкаСклад.Следующий() Цикл
		ОбластьСклад.Параметры.Заполнить(ВыборкаСклад);
		ТабДок.Вывести(ОбластьСклад, ВыборкаСклад.Уровень());

		ВыборкаДетальныеЗаписи = ВыборкаСклад.Выбрать();

		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			ОбластьДетальныхЗаписей.Параметры.Цена=ВыборкаДетальныеЗаписи.Цена;
			ОбластьДетальныхЗаписей.Параметры.Артикул1=ВыборкаДетальныеЗаписи.Артикул;
			ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
			ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
		КонецЦикла;
	КонецЦикла;

	
	ТабДок.ЗакончитьАвтогруппировкуСтрок();
	ТабДок.Вывести(ОбластьПодвалТаблицы);
	ТабДок.Вывести(ОбластьПодвал);
Показать



Есть у кого какие соображения???
По теме из базы знаний
Найденные решения
20. DanDy 52 20.10.20 11:44 Сейчас в теме
(19)Попробуйте вот этот блок

ОбластьДетальныхЗаписей.Параметры.Цена=ВыборкаДетальныеЗаписи.Цена;
ОбластьДетальныхЗаписей.Параметры.Артикул1=ВыборкаДетальныеЗаписи.Артикул;
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);


заменить на

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ОбластьДетальныхЗаписей.Параметры.Цена=ВыборкаДетальныеЗаписи.Цена;
ОбластьДетальныхЗаписей.Параметры.Артикул1=ВыборкаДетальныеЗаписи.Артикул;


к сожалению не помню затирает ли "Заполнить" другие параметры
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. FatPanzer 20.10.20 11:04 Сейчас в теме
(1)
Есть у кого какие соображения???
Есть соображение - оформить свой код надлежащим тэгом, а то читать невозможно...
А потом написать - проблема-то в чем?
alex-l19041; +1 Ответить
3. Xlophik 20.10.20 11:07 Сейчас в теме
(2)
Прошу прощение...Я просто не знаю как это сделать (это я про тэг.)

А проблема в том что в отчете в колонку цена не выгружается эта самая цена...
7. FatPanzer 20.10.20 11:14 Сейчас в теме
(3)
А проблема в том что в отчете в колонку цена не выгружается эта самая цена...
Отчет - это смесь двух вещей: запроса и макета. Где она у вас не выгружается?
10. Xlophik 20.10.20 11:20 Сейчас в теме
(7) В отчете в колонке Цена - нет значений.
8. hiduk 125 20.10.20 11:17 Сейчас в теме
(3) Проанализируй, какие изменения внес. Проверь в отладчике в переменной ВыборкаДетальныеЗаписи.Цена - есть значения?
alex-l19041; +1 Ответить
9. Xlophik 20.10.20 11:20 Сейчас в теме
(8)Проверил значения нет.
11. FatPanzer 20.10.20 11:21 Сейчас в теме
(9) Ну... Значит его нет в регистре.
12. alex-l19041 8 20.10.20 11:21 Сейчас в теме
(9) в регистре ЦеныНоменклатуры данные по нужным номенклатурам есть ?
13. Xlophik 20.10.20 11:23 Сейчас в теме
14. alex-l19041 8 20.10.20 11:26 Сейчас в теме
(13) в отладке проверьте что в таблице РезультатЗапроса.Выгрузить()
15. FatPanzer 20.10.20 11:28 Сейчас в теме
4. Vladimir-R 168 20.10.20 11:08 Сейчас в теме
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатур

а где соединение по дате?
5. FatPanzer 20.10.20 11:11 Сейчас в теме
18. Vladimir-R 168 20.10.20 11:37 Сейчас в теме
(5)точно, не проснулся еще
6. Xlophik 20.10.20 11:11 Сейчас в теме
(4)А за чем дата? Сдесь просто срезпоследних цен....
16. oleg-x 27 20.10.20 11:30 Сейчас в теме
(1) Ну для начала добавьте даты в параметрах запроса. А то непонятно на какую дату получаете остатки и срез цен.
А так подозреваю срез цен получился на начало периода (что то вроде такой даты 01.01.1900), а там ни каких установок цен нет конечно же.
17. DanDy 52 20.10.20 11:34 Сейчас в теме
(16)Не пудрите человеку мозг. Если дата не указана то виртуальные таблицы "СрезПоследних" равно как и "Остатки" возвращают самые последние значения.

А если указать дату то это замедлит выполнение запроса. Потому что без указанной даты он берет значения из системных таблиц (которые всегда рассчитаны) а если указать дату, даже текущую то система будет вычислять виртуальную таблицу среза последних.
FatPanzer; +1 Ответить
19. Xlophik 20.10.20 11:37 Сейчас в теме
(16) Мне дата не нужна это точно. Выгрузка идет по последним.
20. DanDy 52 20.10.20 11:44 Сейчас в теме
(19)Попробуйте вот этот блок

ОбластьДетальныхЗаписей.Параметры.Цена=ВыборкаДетальныеЗаписи.Цена;
ОбластьДетальныхЗаписей.Параметры.Артикул1=ВыборкаДетальныеЗаписи.Артикул;
ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);


заменить на

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ОбластьДетальныхЗаписей.Параметры.Цена=ВыборкаДетальныеЗаписи.Цена;
ОбластьДетальныхЗаписей.Параметры.Артикул1=ВыборкаДетальныеЗаписи.Артикул;


к сожалению не помню затирает ли "Заполнить" другие параметры
21. Xlophik 20.10.20 11:48 Сейчас в теме
(20)Спасибо. заработало. Хотя не понимаю почему))))
22. DanDy 52 20.10.20 11:50 Сейчас в теме
(21)видимо метод "Заполнить" очищает параметры которые не смог заполнить по источнику.
23. Xlophik 20.10.20 11:50 Сейчас в теме
(22)Но с артиклом работало и так.... Вообще причуды 1с)))
24. DanDy 52 20.10.20 13:37 Сейчас в теме
(23)У артикула видимо имя параметра совпадало с именем поля в запросе
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот