Условие в запросе при печати нескольких документов
Всем привет, такой вопрос, есть документ, при выводе его на печать подставляется из регистра сведений Материально ответственное лицо срез последних под дату этого документа и с одним документом это работает, но вот при выборе нескольких документов для всех выбирается только одна дата, как можно сделать параметр или условие в самом запросе, что бы он подбирал нужные даты под каждый выбранный документ, голова уже не варит, подскажите, как это можно реализовать
Вот код страницы, в том почему одна дата подбирается я понимаю, а как сделать, что бы под каждый документ подбиралась своя, не очень понимаю.
Процедура Печать(ТабДок, Ссылка, ПолноеФИО, СтруктураВозврата, ЭтотОбъект) Экспорт
Макет = Документы.ПеремещениеМатериалов.ПолучитьМакет("Печать");
ИнициалыМассив = Новый Массив;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПеремещениеМатериалов.Дата КАК Дата,
| ПеремещениеМатериалов.СкладОтправитель КАК СкладОтправитель,
| ПеремещениеМатериалов.СкладПолучатель КАК СкладПолучатель,
| ПеремещениеМатериалов.ПМ.(
| НомерСтроки КАК НомерСтроки,
| Номенклатура КАК Номенклатура,
| ОстатокНаСкладе КАК ОстатокНаСкладе,
| Цена КАК Цена,
| Количество КАК Количество,
| ЦенаСумма КАК ЦенаСумма
| ),
| СкладМолСрезПоследних.МатериальноОтветственноеЛицо КАК ФИООтправил,
| СкладМолСрезПоследних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].Ссылка.Дата);
Выборка = Запрос.Выполнить().Выбрать();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьПМШапка = Макет.ПолучитьОбласть("ПМШапка");
ОбластьПМ = Макет.ПолучитьОбласть("ПМ");
Подвал = Макет.ПолучитьОбласть("Подвал");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ФИОО = Выборка.ФИООтправил;
РаботаСДокументами.ФИОИнициалыО(ФИОО);
ФИОП = Выборка.ФИОПринял;
РаботаСДокументами.ФИОИнициалыП(ФИОП);
ОбластьЗаголовок.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьЗаголовок, Выборка.Уровень());
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьПМШапка);
ВыборкаПМ = Выборка.ПМ.Выбрать();
Пока ВыборкаПМ.Следующий() Цикл
ОбластьПМ.Параметры.Заполнить(ВыборкаПМ);
ТабДок.Вывести(ОбластьПМ, ВыборкаПМ.Уровень());
КонецЦикла;
Подвал.Параметры.Заполнить(Выборка);
Подвал.Параметры.ФИООтправил = ФИОО;
Подвал.Параметры.ФИОПринял = ФИОП;
ТабДок.Вывести(Подвал);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры
ПоказатьВот код страницы, в том почему одна дата подбирается я понимаю, а как сделать, что бы под каждый документ подбиралась своя, не очень понимаю.
По теме из базы знаний
- Использование Стека вызовов в качестве условия оператора Если [...] Тогда
- Переход с 1С:УПП на 1C:ERP: Задача переноса печатных форм в сжатые сроки. Конструктор печати
- Оригиналы документов
- Проверка документов
- Универсальная печать документов, справочников по шаблонам Word, Р7, Libre Office,Open Office и др.
Найденные решения
Тема старая, вариантов много, забей в поиск что-то типа "Получение в запросе цен на дату документа"..
выбрать
ПеремещениеМатериалов.Ссылка КАК Ссылка,
максимум(СкладМол.Период) КАК Период
поместить ВТ
ИЗ
Документ.ПеремещениеМатериалов КАК ПеремещениеМатериалов
левое СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМол
ПО ПеремещениеМатериалов.Дата >= СкладМол.Период
СГРУППИРОВАТЬ ПО
ПеремещениеМатериалов.Ссылка
;
/////////////
выбрать вт.Ссылка КАК Ссылка,
СкладМолОтправитель.МатериальноОтветственноеЛицо как Отправил,
СкладМолПолучатель.МатериальноОтветственноеЛицо как Получил
из
вт КАК вт
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМолОтправитель
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМолПолучатель
ПО вт.Период = СкладМолОтправитель.Период и вт.Ссылка.СкладОтправитель = СкладМолОтправитель.Склад
ПО вт.Период = СкладМолПолучатель.Период и вт.Ссылка.СкладПолучатель = СкладМолПолучатель.Склад
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Тема старая, вариантов много, забей в поиск что-то типа "Получение в запросе цен на дату документа"..
выбрать
ПеремещениеМатериалов.Ссылка КАК Ссылка,
максимум(СкладМол.Период) КАК Период
поместить ВТ
ИЗ
Документ.ПеремещениеМатериалов КАК ПеремещениеМатериалов
левое СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМол
ПО ПеремещениеМатериалов.Дата >= СкладМол.Период
СГРУППИРОВАТЬ ПО
ПеремещениеМатериалов.Ссылка
;
/////////////
выбрать вт.Ссылка КАК Ссылка,
СкладМолОтправитель.МатериальноОтветственноеЛицо как Отправил,
СкладМолПолучатель.МатериальноОтветственноеЛицо как Получил
из
вт КАК вт
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМолОтправитель
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СкладМол КАК СкладМолПолучатель
ПО вт.Период = СкладМолОтправитель.Период и вт.Ссылка.СкладОтправитель = СкладМолОтправитель.Склад
ПО вт.Период = СкладМолПолучатель.Период и вт.Ссылка.СкладПолучатель = СкладМолПолучатель.Склад
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот