|
Вывод дерева значений в макет. | ☑ | ||
---|---|---|---|---|
0
Lansi
19.03.13
✎
15:54
|
Собственно проблема с выводом дерева значений в макет.
Вот код Запрос.Текст = ТекстЗапроса; Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); //РезультатЗапроса = Запрос.Выполнить(); //ТЗОстатки = РезультатЗапроса.Выгрузить(); ВывестиДерево(мТабДок,Дерево.Строки); КонецПроцедуры // ОбновитьОтчет() Процедура ВывестиДерево(мТабДок,ВыводимаяСтрока, Уровень=0) //Обходим строки текущего уровня дерева Макет = ЭтотОбъект.ПолучитьМакет("Макет"); Для Каждого СтрДерева Из ВыводимаяСтрока Цикл ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьСтрока.Параметры.Номенклатура = СокрЛП(СтрДерева.Номенклатура.НаименованиеПолное); мТабДок.Вывести(ОбластьСтрока); ВывестиДеревоД(мТабДок,ВыводимаяСтрока); КонецЦикла; КонецПроцедуры Процедура ВывестиДеревоД(мТабДок,ВыводимаяСтрока, Уровень=1) //Обходим строки текущего уровня дерева Макет = ЭтотОбъект.ПолучитьМакет("Макет"); Для Каждого СтрДерева Из ВыводимаяСтрока Цикл ОбластьСтрокаДоп = Макет.ПолучитьОбласть("СтрокаДоп"); ОбластьСтрокаДоп.Параметры.Контрагент = СтрДерева.Контрагент; ОбластьСтрокаДоп.Параметры.НачКол = СокрЛП(СтрДерева.КоличествоНачальныйОстаток); ОбластьСтрокаДоп.Параметры.КонКол = СокрЛП(СтрДерева.КоличествоКонечныйОстаток); ОбластьСтрокаДоп.Параметры.Приход = СокрЛП(СтрДерева.КоличествоПриход); ОбластьСтрокаДоп.Параметры.Расход = СокрЛП(СтрДерева.КоличествоРасход); ОбластьСтрокаДоп.Параметры.Документ = СокрЛП(СтрДерева.Документ); мТабДок.Вывести(ОбластьСтрокаДоп); // ВывестиДеревоД(СтрДерева, Уровень = 1); КонецЦикла; КонецПроцедуры Проблема в том что первый уровень дерева значений (там где номенклтура) выводится в макет, а вот второй уровень долго думает и в итоге выдает кучу пустых строк. Подскажите пожалуйста что я не так сделал? |
|||
1
ДенисЧ
19.03.13
✎
15:57
|
Процедура ВывестиДерево(мТабДок,ВыводимаяСтрока, Уровень=0)
//Обходим строки текущего уровня дерева Макет = ЭтотОбъект.ПолучитьМакет("Макет"); Для Каждого СтрДерева Из ВыводимаяСтрока Цикл ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); ОбластьСтрока.Параметры.Номенклатура = СокрЛП(СтрДерева.Номенклатура.НаименованиеПолное); мТабДок.Вывести(ОбластьСтрока); ВывестиДеревоД(мТабДок,СтрДерева ); /////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11 КонецЦикла; КонецПроцедуры |
|||
2
Reset
19.03.13
✎
15:59
|
+ получение макета и областей из него вынести из цикла
+ избавится от запроса в цикле .Номенклатура.НаименованиеПолное |
|||
3
Lansi
19.03.13
✎
16:02
|
Проблема в том что когда я пишу вот так
ВывестиДеревоД(мТабДок,СтрДерева ); /////!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11 У меня перестает находить поля. (Поле объекта не обнаружено (Контрагент) ОбластьСтрокаДоп.Параметры.Контрагент = СтрДерева.Контрагент;) Вот сам запрос ТекстЗапроса = "ВЫБРАТЬ | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура), | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Склад КАК Склад, | ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Склад), | ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор КАК Документ, | ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор), | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования.Контрагент КАК Контрагент, | ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.ДокументОприходования.Контрагент), | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты1.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоНачальныйОстаток КАК КолАктНачОст, | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход, | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход, | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.КоличествоКонечныйОстаток КАК КолАктКонОст, | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты1.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, | ЦеныНоменклатуры.Цена КАК Цена |ИЗ | РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&НачДата, &КонДата, День, ДвиженияИГраницыПериода, Склад = &Склад) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет КАК ПартииТоваровНаСкладахБухгалтерскийУчет | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор.Дата КАК РегистраторДата, | МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период, | ЦеныНоменклатуры.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕ(ЦеныНоменклатуры.Номенклатура) КАК НоменклатураПредставление, | ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор КАК Регистратор, | ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор) КАК РегистраторПредставление, | ПартииТоваровНаСкладахБухгалтерскийУчет.Период КАК Период1 | ИЗ | РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет КАК ПартииТоваровНаСкладахБухгалтерскийУчет | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор.Дата >= ЦеныНоменклатуры.Период | И ПартииТоваровНаСкладахБухгалтерскийУчет.Номенклатура = ЦеныНоменклатуры.Номенклатура | ГДЕ | ПартииТоваровНаСкладахБухгалтерскийУчет.Склад = &Склад | И ЦеныНоменклатуры.ТипЦен = &ТипЦены | | СГРУППИРОВАТЬ ПО | ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор.Дата, | ЦеныНоменклатуры.Номенклатура, | ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор, | ПартииТоваровНаСкладахБухгалтерскийУчет.Период) КАК ПолПер | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры | ПО ПолПер.Период = ЦеныНоменклатуры.Период | И ПолПер.Номенклатура = ЦеныНоменклатуры.Номенклатура | ПО ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор = ПолПер.Регистратор | И ПартииТоваровНаСкладахБухгалтерскийУчет.Номенклатура = ПолПер.Номенклатура | ПО ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура = ПартииТоваровНаСкладахБухгалтерскийУчет.Номенклатура | И (ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Период = НАЧАЛОПЕРИОДА(ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор.Дата, ДЕНЬ)) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.ОстаткиИОбороты(&НачДата, &КонДата, , , Склад = &Склад) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты1 | ПО ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура = ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты1.Номенклатура |ГДЕ | ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор.Дата МЕЖДУ &НачДата И &КонДата | И ЦеныНоменклатуры.ТипЦен = &ТипЦены | И ПартииТоваровНаСкладахБухгалтерскийУчет.Склад = &Склад | |УПОРЯДОЧИТЬ ПО | ПартииТоваровНаСкладахБухгалтерскийУчетОстаткиИОбороты.Номенклатура.Наименование, | ПартииТоваровНаСкладахБухгалтерскийУчет.Регистратор.Дата |ИТОГИ ПО | Номенклатура"; Запрос.Текст = ТекстЗапроса; В нем точно есть подчиненные строки потому как когда конструктором выводил там группировки работали. |
|||
4
Lansi
19.03.13
✎
16:02
|
Запрос рабочий 100%
|
|||
5
kiruha
19.03.13
✎
17:28
|
(0)
ВывестиДеревоД(мТабДок,ВыводимаяСтрока); на ВывестиДеревоД(мТабДок,СтрДерева.Строки); |
|||
6
kiruha
19.03.13
✎
17:34
|
И перестаньте давать несуразные названия и не будет ошибок
ВыводимаяСтрока - СтрокиНоменклатуры во второй - СтрокиДетальныеЗаписи .. Для Каждого СтрокаНоменклатуры ИЗ СтрокиНоменклатуры .. Для Каждого СтрокаДетальнойЗаписи ИЗ СтрокиДетальныеЗаписи |
|||
7
Lansi
20.03.13
✎
06:25
|
(6) Спасибо большое, вот так действительно заработало. Жаль тут плюс в репутацию нельзя поставить :)
|
|||
8
Lansi
20.03.13
✎
07:46
|
Товарищи возник еще один вопрос нужно вывести дополнительные итоги в запросе дописываю
|ИТОГИ | СРЕДНЕЕ(КоличествоНачальныйОстаток) | СРЕДНЕЕ(КоличествоКонечныйОстаток), | СРЕДНЕЕ(Цена) |ПО | Номенклатура"; И вот не могу понять как их вывести в верхний уровень группировки. ОбластьСтрока.Параметры.СредКолНачОст = СтрНоменклатуры.Среднее(КоличествоНачальныйОстаток); Если делаю так то ругается на среднее, если в запросе пытаюсь написать | СРЕДНЕЕ(КоличествоНачальныйОстаток)как СредКолНачОст то тоже при запросе ругается. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |