|
Дублируются строки отчета | ☑ | ||
---|---|---|---|---|
0
prilforreal
26.06.17
✎
11:24
|
Добрый день! Помогите найти ошибку в отчете, при формировании дублируются строки отчета. Вот код процедуры с кодом запроса, заранее очень благодарен!
Процедура ЗаказыНажатие(Элемент) //СформироватьАдрес(Запрос.Заказ.АГород,Запрос.Заказ.АУлица,Запрос.Заказ.АДом,Запрос.Заказ.АКв) //Перем Запрос, ТекстЗапроса, Таб; ////Создание объекта типа Запрос //Запрос = СоздатьОбъект("Запрос"); //ТекстЗапроса = //"//{{ЗАПРОС(Заказы) //|Период с ВыбНачПериода по ВыбКонПериода; //|Заказ = Регистр.Розница.Заказ; //|ТекДок = Регистр.Розница.ТекущийДокумент; //|ЗакДок = Регистр.Розница.Заказ.ДатаДок; //|ДатаДок = Регистр.Розница.ТекущийДокумент.ДатаДок; //|Клиент = Регистр.Розница.Клиент; //|Реклама = Регистр.Розница.Реклама; //|Замерщик = Регистр.Розница.Замерщик; //|Сумма = Регистр.Розница.Сумма; //|КэшФло = Регистр.Розница.КэшФло; //|Площадь = Регистр.Розница.Площадь; //|Периметр = Регистр.Розница.Периметр; //|Функция СуммаКонОст = КонОст(Сумма); //|Функция КэшФлоНачОст = НачОст(КэшФло); //|Функция КэшФлоПриход = Приход(КэшФло); //|Функция КэшФлоРасход = Расход(КэшФло); //|Функция КэшФлоКонОст = КонОст(КэшФло); //|Функция ПлощадьРасход = Расход(Площадь); //|Функция ПериметрРасход = Расход(Периметр); //|Группировка Заказ упорядочить по Заказ.ДатаДок; //|Группировка ТекДок упорядочить по ТекДок.ДатаДок; //|Условие(Заказ в ВыбЗаказ); //|Условие(Клиент в ВыбКлиент); //|Условие(Реклама в ВыбРеклама); //|Условие(Замерщик в ВыбЗамерщик); //|";//}}ЗАПРОС Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ | РозницаОстаткиИОбороты.Заказ КАК Заказ |ПОМЕСТИТЬ ДокиДвиж |ИЗ | РегистрНакопления.Розница.ОстаткиИОбороты( | &ВыбНачПериода, | &ВыбКонПериода, | Регистратор, | Движения, | (Заказ В (&ВыбЗаказ) | ИЛИ &ВыбЗаказ = ЗНАЧЕНИЕ(Документ.Заказ.ПустаяСсылка)) | И (Клиент В (&ВыбКлиент) | ИЛИ &ВыбКлиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)) | И (Реклама В (&ВыбРеклама) | ИЛИ &ВыбРеклама = ЗНАЧЕНИЕ(Справочник.Реклама.ПустаяСсылка)) | И (Замерщик В (&ВыбЗамерщик) | ИЛИ &ВыбЗамерщик = ЗНАЧЕНИЕ(Справочник.Контрагент.ПустаяСсылка))) КАК РозницаОстаткиИОбороты |ГДЕ | (&флпер = 1 | И (РозницаОстаткиИОбороты.Заказ.Дата МЕЖДУ &ВыбНачПериода И &ВыбКонПериода) | ИЛИ НЕ &флпер = 1) | И (&флпер = 2 | И (РозницаОстаткиИОбороты.КэшФлоРасход <> 0 | ИЛИ РозницаОстаткиИОбороты.КэшФлоПриход <> 0) | ИЛИ НЕ &флпер = 2) | |СГРУППИРОВАТЬ ПО | РозницаОстаткиИОбороты.Заказ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | РозницаОстаткиИОбороты.Заказ.Дата КАК ЗаказДата, | РозницаОстаткиИОбороты.Заказ КАК Заказ, | РозницаОстаткиИОбороты.Регистратор, | РозницаОстаткиИОбороты.Регистратор.Дата КАК ДокДата, | РозницаОстаткиИОбороты.Заказ.Клиент КАК Клиент, | РозницаОстаткиИОбороты.Заказ.Клиент.Телефон1 КАК Телефон1, | """" + ВЫБОР | КОГДА РозницаОстаткиИОбороты.Заказ.Агород <> """" | ТОГДА РозницаОстаткиИОбороты.Заказ.Агород.Наименование | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА РозницаОстаткиИОбороты.Заказ.Аулица <> """" | ТОГДА "","" + РозницаОстаткиИОбороты.Заказ.Аулица | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА РозницаОстаткиИОбороты.Заказ.Адом <> """" | ТОГДА "",д."" + РозницаОстаткиИОбороты.Заказ.Адом | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА РозницаОстаткиИОбороты.Заказ.Акв <> """" | ТОГДА "",кв. "" + РозницаОстаткиИОбороты.Заказ.Акв | ИНАЧЕ """" | КОНЕЦ КАК КлиентАдрес, | ВЫБОР | КОГДА РозницаОстаткиИОбороты.Регистратор ССЫЛКА Документ.Монтаж | ТОГДА РозницаОстаткиИОбороты.Регистратор | ИНАЧЕ """" | КОНЕЦ КАК ТДМ, | ВЫБОР | КОГДА РозницаОстаткиИОбороты.Регистратор ССЫЛКА Документ.ДилЗаказ | ТОГДА РозницаОстаткиИОбороты.Регистратор | ИНАЧЕ """" | КОНЕЦ КАК ТДДЗ, | ВЫБОР | КОГДА РозницаОстаткиИОбороты.Регистратор ССЫЛКА Документ.Монтаж | ТОГДА ""М"" | ИНАЧЕ """" | КОНЕЦ КАК флМонтаж, | ВЫБОР | КОГДА РозницаОстаткиИОбороты.Регистратор ССЫЛКА Документ.ДилЗаказ | ТОГДА ""ДЗ"" | ИНАЧЕ """" | КОНЕЦ КАК флДилЗаказ, | ВЫБОР | КОГДА НЕ НарядЗаказа.Монтажник1 ЕСТЬ NULL | ТОГДА """" + НарядЗаказа.Монтажник1.Наименование + ""; "" + НарядЗаказа.Монтажник2.Наименование | ИНАЧЕ """" | КОНЕЦ КАК Наряд, | МАКСИМУМ(НарядЗаказа.Дата) КАК НарядДата, | РозницаОстаткиИОбороты.КэшФлоНачальныйОстаток КАК КэшФлоНачОст, | РозницаОстаткиИОбороты.КэшФлоПриход КАК КэшФлоПриход, | РозницаОстаткиИОбороты.КэшФлоРасход КАК КэшФлоРасход, | РозницаОстаткиИОбороты.КэшФлоКонечныйОстаток КАК КэшФлоКонОст, | РозницаОстаткиИОбороты.ПлощадьРасход КАК ПлощадьРасход, | РозницаОстаткиИОбороты.ПериметрРасход КАК ПериметрРасход, | РозницаОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаКонОст |ИЗ | РегистрНакопления.Розница.ОстаткиИОбороты( | &ВыбНачПериода, | &ВыбКонПериода, | Регистратор, | ДвиженияИГраницыПериода, | (Заказ В (&ВыбЗаказ) | ИЛИ &ВыбЗаказ = ЗНАЧЕНИЕ(Документ.Заказ.ПустаяСсылка)) | И (Клиент В (&ВыбКлиент) | ИЛИ &ВыбКлиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)) | И (Реклама В (&ВыбРеклама) | ИЛИ &ВыбРеклама = ЗНАЧЕНИЕ(Справочник.Реклама.ПустаяСсылка)) | И (Замерщик В (&ВыбЗамерщик) | ИЛИ &ВыбЗамерщик = ЗНАЧЕНИЕ(Справочник.Контрагент.ПустаяСсылка))) КАК РозницаОстаткиИОбороты | ЛЕВОЕ СОЕДИНЕНИЕ Документ.НарядЗаказа КАК НарядЗаказа | ПО РозницаОстаткиИОбороты.Заказ = НарядЗаказа.ДокОснование | |ГДЕ | (&флпер = 1 | И (РозницаОстаткиИОбороты.Заказ.Дата МЕЖДУ &ВыбНачПериода И &ВыбКонПериода) | ИЛИ НЕ &флпер = 1) | И (&флпер = 2 | И (РозницаОстаткиИОбороты.КэшФлоРасход <> 0 | ИЛИ РозницаОстаткиИОбороты.КэшФлоПриход <> 0) | ИЛИ НЕ &флпер = 2) | И (РозницаОстаткиИОбороты.Регистратор <> НЕОПРЕДЕЛЕНО | ИЛИ РозницаОстаткиИОбороты.Заказ <> ЗНАЧЕНИЕ(Документ.Заказ.ПустаяСсылка) | И НЕ РозницаОстаткиИОбороты.Заказ В | (ВЫБРАТЬ | Доки.Заказ | ИЗ | ДокиДвиж КАК Доки)) | |СГРУППИРОВАТЬ ПО | РозницаОстаткиИОбороты.Регистратор, | РозницаОстаткиИОбороты.Заказ, | ВЫБОР | КОГДА НЕ НарядЗаказа.Монтажник1 ЕСТЬ NULL | ТОГДА """" + НарядЗаказа.Монтажник1.Наименование + ""; "" + НарядЗаказа.Монтажник2.Наименование | ИНАЧЕ """" | КОНЕЦ, | РозницаОстаткиИОбороты.Заказ.Дата, | РозницаОстаткиИОбороты.Регистратор.Дата, | РозницаОстаткиИОбороты.Заказ.Клиент, | РозницаОстаткиИОбороты.Заказ.Клиент.Телефон1, | """" + ВЫБОР | КОГДА РозницаОстаткиИОбороты.Заказ.Агород <> """" | ТОГДА РозницаОстаткиИОбороты.Заказ.Агород.Наименование | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА РозницаОстаткиИОбороты.Заказ.Аулица <> """" | ТОГДА "","" + РозницаОстаткиИОбороты.Заказ.Аулица | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА РозницаОстаткиИОбороты.Заказ.Адом <> """" | ТОГДА "",д."" + РозницаОстаткиИОбороты.Заказ.Адом | ИНАЧЕ """" | КОНЕЦ + ВЫБОР | КОГДА РозницаОстаткиИОбороты.Заказ.Акв <> """" | ТОГДА "",кв. "" + РозницаОстаткиИОбороты.Заказ.Акв | ИНАЧЕ """" | КОНЕЦ, | ВЫБОР | КОГДА РозницаОстаткиИОбороты.Регистратор ССЫЛКА Документ.Монтаж | ТОГДА ""М"" | ИНАЧЕ """" | КОНЕЦ, | ВЫБОР | КОГДА РозницаОстаткиИОбороты.Регистратор ССЫЛКА Документ.ДилЗаказ | ТОГДА ""ДЗ"" | ИНАЧЕ """" | КОНЕЦ, | РозницаОстаткиИОбороты.КэшФлоНачальныйОстаток, | РозницаОстаткиИОбороты.КэшФлоПриход, | РозницаОстаткиИОбороты.КэшФлоРасход, | РозницаОстаткиИОбороты.КэшФлоКонечныйОстаток, | РозницаОстаткиИОбороты.ПлощадьРасход, | РозницаОстаткиИОбороты.ПериметрРасход, | РозницаОстаткиИОбороты.СуммаКонечныйОстаток | |УПОРЯДОЧИТЬ ПО | ЗаказДата, | ДокДата"; Запрос.УстановитьПараметр("флпер",флпер); Запрос.УстановитьПараметр("флУсл",флУсл); Запрос.УстановитьПараметр("ВыбНачПериода",ВыбНачПериода); Запрос.УстановитьПараметр("ВыбКонПериода",ВыбКонПериода); Запрос.УстановитьПараметр("ВыбЗаказ",ВыбЗаказ); Запрос.УстановитьПараметр("ВыбКлиент",ВыбКлиент); Запрос.УстановитьПараметр("ВыбРеклама",ВыбРеклама); Запрос.УстановитьПараметр("ВыбЗамерщик",ВыбЗамерщик); //Если флпер=1 тогда // ТекстЗапроса =ТекстЗапроса +"Условие((ЗакДок>=ВыбНачПериода)и(ЗакДок<=ВыбКонПериода));"; //КонецЕсли; //// Если ошибка в запросе, то выход из процедуры //Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда // Возврат; //КонецЕсли; Рез=Запрос.Выполнить().Выбрать(); //СуммаКонОст = 0; //КэшФлоНачОст = 0; //КэшФлоПриход = 0; //КэшФлоРасход = 0; //КэшФлоКонОст = 0; //ПлощадьРасход = 0; //ПериметрРасход = 0; СтрИтогов=Новый Структура("СуммаКонОст,КэшФлоНачОст,КэшФлоПриход,КэшФлоРасход,КэшФлоКонОст,ПлощадьРасход,ПериметрРасход",0,0,0,0,0,0,0); //// Подготовка к заполнению выходных форм данными запроса //Таб = СоздатьОбъект("Таблица"); Таб=Новый ТабличныйДокумент; //Таб.ИсходнаяТаблица("Заказы"); Макет=ПолучитьМакет("Заказы"); ОбластьЗаголовок=Макет.ПолучитьОбласть("Заголовок"); ОбластьЗаказ=Макет.ПолучитьОбласть("Заказ"); ОбластьИтого=Макет.ПолучитьОбласть("Итого"); //// Заполнение полей "Заголовок" //Таб.ВывестиСекцию("Заголовок"); Таб.Вывести(ОбластьЗаголовок); //Состояние("Заполнение выходной таблицы..."); //Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); ии=0; //док=создатьобъект("Документ"); //Пока Запрос.Группировка(1) = 1 Цикл Пока Рез.Следующий() Цикл // ТДМ=""; // ТДДЗ=""; // // Заполнение полей Заказ Если ((Рез.СуммаКонОст=0 и флусл=1) или (Рез.СуммаКонОст<>0 и флусл=2) или флусл=3) //и ((флпер=2 и (Запрос.КэшФлоРасход<>0 или Запрос.КэшФлоПриход<>0)) или флпер<>2) Тогда ии=ии+1; // СуммаКонОст = СуммаКонОст+Запрос.СуммаКонОст; // КэшФлоНачОст =КэшФлоНачОст+Запрос.КэшФлоНачОст; // КэшФлоПриход =КэшФлоПриход+Запрос.КэшФлоПриход; // КэшФлоРасход =КэшФлоРасход+Запрос.КэшФлоРасход; // КэшФлоКонОст =КэшФлоКонОст+Запрос.КэшФлоКонОст; // ПлощадьРасход =ПлощадьРасход+Запрос.ПлощадьРасход; // ПериметрРасход =ПериметрРасход+Запрос.ПериметрРасход; // СуммаКонОст = СуммаКонОст+Запрос.СуммаКонОст; СтрИтогов.КэшФлоНачОст =СтрИтогов.КэшФлоНачОст+Рез.КэшФлоНачОст; СтрИтогов.КэшФлоПриход =СтрИтогов.КэшФлоПриход+Рез.КэшФлоПриход; СтрИтогов.КэшФлоРасход =СтрИтогов.КэшФлоРасход+Рез.КэшФлоРасход; СтрИтогов.КэшФлоКонОст =СтрИтогов.КэшФлоКонОст+Рез.КэшФлоКонОст; СтрИтогов.ПлощадьРасход =СтрИтогов.ПлощадьРасход+Рез.ПлощадьРасход; СтрИтогов.ПериметрРасход =СтрИтогов.ПериметрРасход+Рез.ПериметрРасход; // флМонтаж=""; // флДилЗаказ=""; // Наряд=""; // док.ВыбратьПодчиненныеДокументы(Запрос.Заказ.ДатаДок,,Запрос.Заказ); // Пока док.ПолучитьДокумент()=1 цикл // если док.Вид()="НарядЗаказа" тогда // Наряд=""+док.ДатаДок+" - ("+док.Монтажник1+"; "+док.Монтажник2+")"; // конецесли; // // конеццикла; // Пока Запрос.Группировка(2) = 1 Цикл // Если СокрЛП(Запрос.ТекДок.Вид())="Монтаж" Тогда флМонтаж="М";ТДМ=Запрос.ТекДок; КонецЕсли; // Если СокрЛП(Запрос.ТекДок.Вид())="ДилЗаказ" Тогда флДилЗаказ="ДЗ";ТДДЗ=Запрос.ТекДок; КонецЕсли; // КонецЦикла; // Таб.ВывестиСекцию("Заказ"); ОбластьЗаказ.Параметры.Заполнить(Рез); ОбластьЗаказ.Параметры.ии=ии; ОбластьЗаказ.Параметры.Наряд=?(ЗначениеЗаполнено(Рез.Наряд),""+Формат(Рез.НарядДата,"ДЛФ=Д")+"- ("+Рез.Наряд+")",""); Таб.Вывести(ОбластьЗаказ); КонецЕсли; КонецЦикла; //// Заполнение полей "Итого" //Таб.ВывестиСекцию("Итого"); ОбластьИтого.Параметры.Заполнить(СтрИтогов); Таб.Вывести(ОбластьИтого); //// Вывод заполненной формы //Таб.ТолькоПросмотр(1); Таб.ТолькоПросмотр=Истина; //Таб.Показать("Заказы", ""); Таб.Показать("Заказы"); КонецПроцедуры |
|||
1
Buster007
26.06.17
✎
11:27
|
Сгруппируй строки и уйдут дубли )
|
|||
2
prilforreal
26.06.17
✎
12:46
|
Buster007 Сделал АвтогруппировкуСтрок, но отчет также формируется с дубликатами строк..
|
|||
3
pessok
26.06.17
✎
13:08
|
(2) ну дык ресурсы то надо суммировать, а у тебя и по ним группирвока
|
|||
4
pessok
26.06.17
✎
13:08
|
+(3) все суммы/количества перетащи в "нижнее окошко" :D
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |