Условие в запросе при печати нескольких документов

1. KirsKay 11.10.19 10:08 Сейчас в теме
Всем привет, такой вопрос, есть документ, при выводе его на печать подставляется из регистра сведений Материально ответственное лицо срез последних под дату этого документа и с одним документом это работает, но вот при выборе нескольких документов для всех выбирается только одна дата, как можно сделать параметр или условие в самом запросе, что бы он подбирал нужные даты под каждый выбранный документ, голова уже не варит, подскажите, как это можно реализовать

Процедура Печать(ТабДок, Ссылка, ПолноеФИО, СтруктураВозврата, ЭтотОбъект) Экспорт
	Макет = Документы.ПеремещениеМатериалов.ПолучитьМакет("Печать");
	ИнициалыМассив = Новый Массив;
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ПеремещениеМатериалов.Дата КАК Дата,
	|	ПеремещениеМатериалов.СкладОтправитель КАК СкладОтправитель,
	|	ПеремещениеМатериалов.СкладПолучатель КАК СкладПолучатель,
	|	ПеремещениеМатериалов.ПМ.(
	|		НомерСтроки КАК НомерСтроки,
	|		Номенклатура КАК Номенклатура,
	|		ОстатокНаСкладе КАК ОстатокНаСкладе,
	|		Цена КАК Цена,
	|		Количество КАК Количество,
	|		ЦенаСумма КАК ЦенаСумма
	|	),
	|	СкладМолСрезПоследних.МатериальноОтветственноеЛицо КАК ФИООтправил,
	|	СкладМолСрезПоследних1.МатериальноОтветственноеЛицо КАК ФИОПринял,
	|	ВЫБОР
	|		КОГДА НЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 1, 1) = ""0""
	|			ТОГДА ПОДСТРОКА(ПеремещениеМатериалов.Номер, 1, 10)
	|		КОГДА НЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 2, 1) = ""0""
	|			ТОГДА ПОДСТРОКА(ПеремещениеМатериалов.Номер, 2, 9)
	|		КОГДА НЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 3, 1) = ""0""
	|			ТОГДА ПОДСТРОКА(ПеремещениеМатериалов.Номер, 3, 8)
	|		КОГДА НЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 4, 1) = ""0""
	|			ТОГДА ПОДСТРОКА(ПеремещениеМатериалов.Номер, 4, 7)
	|		КОГДА НЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 5, 1) = ""0""
	|			ТОГДА ПОДСТРОКА(ПеремещениеМатериалов.Номер, 5, 6)
	|		КОГДА НЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 6, 1) = ""0""
	|			ТОГДА ПОДСТРОКА(ПеремещениеМатериалов.Номер, 6, 5)
	|		КОГДА НЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 7, 1) = ""0""
	|			ТОГДА ПОДСТРОКА(ПеремещениеМатериалов.Номер, 7, 4)
	|		КОГДА НЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 8, 1) = ""0""
	|			ТОГДА ПОДСТРОКА(ПеремещениеМатериалов.Номер, 8, 3)
	|		КОГДА НЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 9, 1) = ""0""
	|			ТОГДА ПОДСТРОКА(ПеремещениеМатериалов.Номер, 9, 2)
	|		ИНАЧЕ ПОДСТРОКА(ПеремещениеМатериалов.Номер, 10, 1)
	|	КОНЕЦ КАК Номер
	|ИЗ
	|	РегистрСведений.СкладМол.СрезПоследних(&Дата, ) КАК СкладМолСрезПоследних1
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкладМол.СрезПоследних(&Дата, ) КАК СкладМолСрезПоследних
	|			ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеМатериалов КАК ПеремещениеМатериалов
	|			ПО СкладМолСрезПоследних.Склад = ПеремещениеМатериалов.СкладОтправитель
	|		ПО (ПеремещениеМатериалов.СкладПолучатель = СкладМолСрезПоследних1.Склад)
	|ГДЕ
	|	ПеремещениеМатериалов.Ссылка В(&Ссылка)";
	Запрос.Параметры.Вставить("Ссылка", Ссылка);
	Запрос.Параметры.Вставить("Дата", Ссылка[0].Ссылка.Дата);
	Выборка = Запрос.Выполнить().Выбрать();	
	ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
	Шапка = Макет.ПолучитьОбласть("Шапка");
	ОбластьПМШапка = Макет.ПолучитьОбласть("ПМШапка");
	ОбластьПМ = Макет.ПолучитьОбласть("ПМ");
	Подвал = Макет.ПолучитьОбласть("Подвал");

	ТабДок.Очистить();
	ВставлятьРазделительСтраниц = Ложь;
	Пока Выборка.Следующий() Цикл
		Если ВставлятьРазделительСтраниц Тогда
			ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ФИОО = Выборка.ФИООтправил;
		РаботаСДокументами.ФИОИнициалыО(ФИОО);

		ФИОП = Выборка.ФИОПринял;
		РаботаСДокументами.ФИОИнициалыП(ФИОП);
	 	
		ОбластьЗаголовок.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(ОбластьЗаголовок, Выборка.Уровень());
		Шапка.Параметры.Заполнить(Выборка);        
		ТабДок.Вывести(Шапка, Выборка.Уровень());
		
  		ТабДок.Вывести(ОбластьПМШапка);
		ВыборкаПМ = Выборка.ПМ.Выбрать();
		Пока ВыборкаПМ.Следующий() Цикл
			ОбластьПМ.Параметры.Заполнить(ВыборкаПМ);
			ТабДок.Вывести(ОбластьПМ, ВыборкаПМ.Уровень());
		КонецЦикла;
      
		Подвал.Параметры.Заполнить(Выборка);
        Подвал.Параметры.ФИООтправил = ФИОО;
		Подвал.Параметры.ФИОПринял = ФИОП;
		ТабДок.Вывести(Подвал);

		ВставлятьРазделительСтраниц = Истина;
	КонецЦикла;
	//}}
 КонецПроцедуры
Показать


Вот код страницы, в том почему одна дата подбирается я понимаю, а как сделать, что бы под каждый документ подбиралась своя, не очень понимаю.
По теме из базы знаний
Найденные решения
3. razars 18 11.10.19 10:40 Сейчас в теме
Тема старая, вариантов много, забей в поиск что-то типа "Получение в запросе цен на дату документа"..

выбрать
	ПеремещениеМатериалов.Ссылка КАК Ссылка,
	максимум(СкладМол.Период) КАК Период
	поместить ВТ
ИЗ
	Документ.ПеремещениеМатериалов КАК ПеремещениеМатериалов
		левое СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМол
		ПО ПеремещениеМатериалов.Дата >= СкладМол.Период
			

СГРУППИРОВАТЬ ПО
	ПеремещениеМатериалов.Ссылка
	;
/////////////
выбрать вт.Ссылка КАК Ссылка, 
СкладМолОтправитель.МатериальноОтветственноеЛицо как Отправил,
СкладМолПолучатель.МатериальноОтветственноеЛицо как Получил
из
вт КАК вт
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМолОтправитель
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМолПолучатель
		ПО вт.Период = СкладМолОтправитель.Период     и   вт.Ссылка.СкладОтправитель = СкладМолОтправитель.Склад
ПО вт.Период = СкладМолПолучатель.Период     и   вт.Ссылка.СкладПолучатель = СкладМолПолучатель.Склад
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YannikAlx 27 11.10.19 10:34 Сейчас в теме
А что тут думать - вы в одном запросе это реализовать ну никак не сможете...
3. razars 18 11.10.19 10:40 Сейчас в теме
Тема старая, вариантов много, забей в поиск что-то типа "Получение в запросе цен на дату документа"..

выбрать
	ПеремещениеМатериалов.Ссылка КАК Ссылка,
	максимум(СкладМол.Период) КАК Период
	поместить ВТ
ИЗ
	Документ.ПеремещениеМатериалов КАК ПеремещениеМатериалов
		левое СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМол
		ПО ПеремещениеМатериалов.Дата >= СкладМол.Период
			

СГРУППИРОВАТЬ ПО
	ПеремещениеМатериалов.Ссылка
	;
/////////////
выбрать вт.Ссылка КАК Ссылка, 
СкладМолОтправитель.МатериальноОтветственноеЛицо как Отправил,
СкладМолПолучатель.МатериальноОтветственноеЛицо как Получил
из
вт КАК вт
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМолОтправитель
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМолПолучатель
		ПО вт.Период = СкладМолОтправитель.Период     и   вт.Ссылка.СкладОтправитель = СкладМолОтправитель.Склад
ПО вт.Период = СкладМолПолучатель.Период     и   вт.Ссылка.СкладПолучатель = СкладМолПолучатель.Склад
Показать
Оставьте свое сообщение

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