|
ВПФ одна строка дублируется при печати | ☑ | ||
---|---|---|---|---|
0
nequiza
28.06.23
✎
10:40
|
Всем привет, делаю ВПФ, из запроса в макет выводятся строки из документа, но они дублируются кучу раз, подскажите, как решить эту проблему?
Код модуля: Функция СформироватьПечатнуюФорму(СсылкаНаОбъект, СсылкаОбъект, ОбъектыПечати) Экспорт ТабДок = Новый ТабличныйДокумент; ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПереработчику"; Макет = ПолучитьМакет("Макет"); ОбластьШапки = Макет.ПолучитьОбласть("Шапка"); ОбластьДанные = Макет.ПолучитьОбласть("Данные"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапки.Параметры.ТекстЗаголовка = "Отчет об использовании материалов, переданных заказчиком"; ОбластьШапки.Параметры.ТекстЗаголовка1 = "по счету №" + ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СсылкаНаОбъект.Договор.Номер, Истина, Ложь) + " от " + Формат(СсылкаНаОбъект.Договор.Дата,"ДФ=dd.MM.yyyy"); ОбластьШапки.Параметры.ТекстЗаголовка2 = " Подрядчиком были получены от Заказчика и использованы на выполнение работ по изготовлению изделий материалы в следующем объеме" + Символы.ПС + "(количестве):"; ОбластьДанные.Параметры.НомерДата = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СсылкаОбъект.Договор.Номер, Истина, Ложь) + " от " + Формат(СсылкаОбъект.Договор.Дата,"ДФ=dd.MM.yyyy"); ТабДок.Вывести(ОбластьШапки); // ПУНКТ 1 и 3 Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказПереработчику2_5Услуги.Номенклатура.НаименованиеПолное КАК ВидРабот, | ЗаказПереработчику2_5ВыходныеИзделия.Номенклатура.НаименованиеПолное КАК Номер, | ЗаказПереработчику2_5ОбеспечениеМатериаламиИРаботами.Номенклатура.НаименованиеПолное КАК НаименованиеПолное, | ЗаказПереработчику2_5ОбеспечениеМатериаламиИРаботами.Номенклатура КАК Номенклатура |ИЗ | Документ.ЗаказПереработчику2_5 КАК ЗаказПереработчику2_5 | ПРАВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5.ВыходныеИзделия КАК ЗаказПереработчику2_5ВыходныеИзделия | ПО ЗаказПереработчику2_5ВыходныеИзделия.Ссылка = ЗаказПереработчику2_5.Ссылка | ПРАВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5.Услуги КАК ЗаказПереработчику2_5Услуги | ПО ЗаказПереработчику2_5Услуги.Ссылка = ЗаказПереработчику2_5.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПереработчику2_5.ОбеспечениеМатериаламиИРаботами КАК ЗаказПереработчику2_5ОбеспечениеМатериаламиИРаботами | ПО ЗаказПереработчику2_5ОбеспечениеМатериаламиИРаботами.Ссылка = ЗаказПереработчику2_5.Ссылка |ГДЕ | ЗаказПереработчику2_5.Ссылка = &Ссылка"; // Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект); // // Выборка = Запрос.Выполнить().Выбрать(); // // // //Пока Выборка.Следующий() Цикл // // ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры,Выборка); // // КонецЦикла; //ПУНКТ 2 ОбластьДанные.Параметры.НомерДата = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СсылкаОбъект.Договор.Номер, Истина, Ложь) + " от " + Формат(СсылкаОбъект.Договор.Дата,"ДФ=dd.MM.yyyy"); //ОбластьДанные.Параметры.НомерДата = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СсылкаОбъект.Номер, Истина, Ложь) + " от " + Формат(СсылкаОбъект.Дата,"ДФ=dd.MM.yyyy"); // ПУНКТ 4 ЗапросБ = Новый Запрос; ЗапросБ.Текст = "ВЫБРАТЬ | ПередачаТоваровХранителюТовары.Цена КАК ЦенаНоменклатура, | ПередачаТоваровХранителю.Дата КАК Дата, | ПередачаТоваровХранителю.Номер КАК Номер, | ПередачаТоваровХранителюТовары.Количество КАК Количество, | ПередачаТоваровХранителюТовары.Сумма КАК Сумма |ИЗ | Документ.ПередачаТоваровХранителю.Товары КАК ПередачаТоваровХранителюТовары | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаТоваровХранителю КАК ПередачаТоваровХранителю | ПО ПередачаТоваровХранителюТовары.Ссылка = ПередачаТоваровХранителю.Ссылка |ГДЕ | ПередачаТоваровХранителюТовары.ЗаказКлиента = &Ссылка | И ПередачаТоваровХранителюТовары.Номенклатура = &НоменклатураЗаказа"; Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ЗапросБ.УстановитьПараметр("Ссылка", СсылкаНаОбъект); ЗапросБ.УстановитьПараметр("НоменклатураЗаказа", Выборка.Номенклатура); ВыборкаБ = ЗапросБ.Выполнить().Выбрать(); Пока ВыборкаБ.Следующий() Цикл ОбластьДанные.Параметры.ЦенаНоменклатура = ВыборкаБ.ЦенаНоменклатура; ОбластьДанные.Параметры.НомерДата = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаБ.Номер)+ " от " +Формат(ВыборкаБ.Дата,"ДФ=dd.MM.yyyy");; Сообщить(СсылкаНаОбъект); КонецЦикла; КонецЦикла; ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры,Выборка); ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры,ВыборкаБ); // ПУНКТ 5 ЗапросГ = Новый Запрос; ЗапросГ.Текст = "ВЫБРАТЬ | ПередачаСырьяПереработчикуТовары.Количество КАК ПолученоКоличество |ИЗ | Документ.ПередачаСырьяПереработчику КАК ПередачаСырьяПереработчику | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаСырьяПереработчику.Товары КАК ПередачаСырьяПереработчикуТовары | ПО ПередачаСырьяПереработчикуТовары.Ссылка = ПередачаСырьяПереработчику.Товары.Номенклатура.НаименованиеПолное |ГДЕ | ПередачаСырьяПереработчику.Ссылка = &Ссылка"; ЗапросГ.УстановитьПараметр("Ссылка",СсылкаОбъект); ВыборкаГ = ЗапросГ.Выполнить().Выбрать(); Пока ВыборкаГ.Следующий() Цикл ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры,ВыборкаГ); КонецЦикла; ЗапросГ = Новый Запрос; ЗапросГ.Текст = "ВЫБРАТЬ | ПередачаТоваровХранителюТовары.Цена КАК ЦенаНоменклатура, | ПередачаТоваровХранителю.Дата КАК Дата, | ПередачаТоваровХранителю.Номер КАК Номер, | ПередачаТоваровХранителюТовары.Количество КАК ПолученоКоличество, | ПередачаТоваровХранителюТовары.Сумма КАК ПолученоЦена, | ПередачаТоваровХранителюТовары.Количество КАК ФактическиКоличество, | ПередачаТоваровХранителюТовары.Сумма КАК ФактическиЦена |ИЗ | Документ.ПередачаТоваровХранителю.Товары КАК ПередачаТоваровХранителюТовары | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаТоваровХранителю КАК ПередачаТоваровХранителю | ПО ПередачаТоваровХранителюТовары.Ссылка = ПередачаТоваровХранителю.Ссылка |ГДЕ | ПередачаТоваровХранителюТовары.ЗаказКлиента = &Ссылка"; ЗапросГ.УстановитьПараметр("Ссылка", СсылкаНаОбъект); ВыборкаГ = ЗапросГ.Выполнить().Выбрать(); Пока ВыборкаГ.Следующий() Цикл ЗаполнитьЗначенияСвойств(ОбластьДанные.Параметры,ВыборкаГ); КонецЦикла; ТабДок.Вывести(ОбластьДанные); // ПУНКТ 7 ЗапросВ = Новый Запрос; ЗапросВ.Текст = "ВЫБРАТЬ | ЗаказПереработчику2_5.Контрагент.НаименованиеПолное КАК Подрядчик |ИЗ | Документ.ЗаказПереработчику2_5 КАК ЗаказПереработчику2_5 |ГДЕ | ЗаказПереработчику2_5.Ссылка = &Ссылка"; ЗапросВ.УстановитьПараметр("Ссылка",СсылкаНаОбъект); ВыборкаВ = ЗапросВ.Выполнить().Выбрать(); Пока ВыборкаВ.Следующий() Цикл ЗаполнитьЗначенияСвойств(ОбластьПодвал.Параметры,ВыборкаВ); КонецЦикла; // //"ВЫБРАТЬ //| ОтветственныеЛицаОрганизаций.Должность КАК Должность, //| ОтветственныеЛицаОрганизаций.ФизическоеЛицо КАК ФизическоеЛицо //|ИЗ //| Справочник.ОтветственныеЛицаОрганизаций КАК ОтветственныеЛицаОрганизаций //|ГДЕ //| ОтветственныеЛицаОрганизаций.Должность = &Должность" // ТабДок.Вывести(ОбластьПодвал); Возврат ТабДок; КонецФункции Проблема в первом запросе. Наименования начинают дублироваться. |
|||
1
vicof
28.06.23
✎
10:56
|
Зачем тебе там правые соединения?
|
|||
2
vicof
28.06.23
✎
10:57
|
И зачем вообще соединения?
|
|||
3
ColonelAp4u
28.06.23
✎
11:16
|
(0) // ПУНКТ 1 и 3 убери соединения, сделай объединение, помести в вт, добавь выборку из // ПУНКТ 4, так же в // ПУНКТ 4 убери соединение оно там не нужно, в условии добавь
| И ПередачаТоваровХранителюТовары.Номенклатура В (Выбрать ВТ.НоменклатураЗаказаИЗВТ КАК НоменклатураЗаказаИЗВТ ИЗ ВТ КАК ВТ" // ПУНКТ 5 в первом запросе убери соединение оно там не нужно, во втором убери соединение а | ПередачаТоваровХранителюТовары.Сссылка.Дата/Номер бери вот так. Не забывай группировать все запросы |
|||
4
nequiza
28.06.23
✎
11:45
|
(3) Спасибо за подсказку!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |