|
Дополнительное поле в ТЗ | ☑ | ||
---|---|---|---|---|
0
poet
29.12.11
✎
17:35
|
Есть запрос в который помимо количества потребовалось выводить еще и сумму не подскажите ли как это грамотно сделать?
ТабДок = Новый ТабличныйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Номер, | ПоступлениеТоваровУслуг.Дата, | ПоступлениеТоваровУслуг.Контрагент, | ПоступлениеТоваровУслуг.Проведен, | ПоступлениеТоваровУслуг.ДатаВходящегоДокумента, | ПоступлениеТоваровУслуг.НомерВходящегоДокумента, | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения, | ПоступлениеТоваровУслугТовары.Количество, | ПоступлениеТоваровУслугТовары.Сумма, | ПоступлениеТоваровУслугТовары.Цена, | ПоступлениеТоваровУслуг.СкладОрдер |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг | ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка |ГДЕ | ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаС И &ДатаПо | И ПоступлениеТоваровУслуг.Проведен = ИСТИНА" + ?(ЗначениеЗаполнено(Контрагент)," И ПоступлениеТоваровУслуг.Контрагент В(&Контрагент)", "") + ?(ЗначениеЗаполнено(СкладОрдер)," И ПоступлениеТоваровУслуг.СкладОрдер В(&СкладОрдер)", ""); Запрос.УстановитьПараметр("ДатаС", НачалоДня(ДатаС)); Запрос.УстановитьПараметр("ДатаПо", КонецДня(ДатаПо)); Запрос.УстановитьПараметр("Контрагент", Контрагент); Запрос.УстановитьПараметр("СкладОрдер", СкладОрдер); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Дата",,,7); ТЗ.Колонки.Добавить("Номер",,,10); ТЗ.Колонки.Добавить("ДатаВходящая",,,10); ТЗ.Колонки.Добавить("НомерВходящий",,,10); ТЗ.Колонки.Добавить("Контрагент",,,15); Если ОтображатьСклад = Истина Тогда ТЗ.Колонки.Добавить("Склад",,,15); КонецЕсли; Номер = "0"; Пока Выборка.Следующий() Цикл Если Выборка.Номер <> Номер Тогда НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Дата = Формат(Дата(СокрЛП(Выборка.Дата)), "ДЛФ=Д"); НоваяСтрока.Номер = СокрЛП(Выборка.Номер); НоваяСтрока.ДатаВходящая = Формат(Дата(СокрЛП(Выборка.ДатаВходящегоДокумента)), "ДЛФ=Д"); НоваяСтрока.НомерВходящий = СокрЛП(Выборка.НомерВходящегоДокумента); НоваяСтрока.Контрагент = СокрЛП(Выборка.Контрагент); Если ОтображатьСклад = Истина Тогда НоваяСтрока.Склад = СокрЛП(Выборка.СкладОрдер); КонецЕсли; КонецЕсли; НазваниеКолонки = Строка("н"+СокрЛП(Выборка.Номенклатура.Код)); ОтображениеНазванияКолонки = СокрЛП(Выборка.Номенклатура); НазваниеСумма = Если ТЗ.Колонки.Найти(НазваниеКолонки) = Неопределено Тогда ТЗ.Колонки.Добавить(НазваниеКолонки,,ОтображениеНазванияКолонки, 15); НоваяСтрока[НазваниеКолонки] = Выборка.Количество; ТЗ.Колонки.Добавить(); Иначе НоваяСтрока[НазваниеКолонки] = Выборка.Количество; КонецЕсли; Номер = Выборка.Номер; КонецЦикла; НоваяСтрока = ТЗ.Добавить(); Для кол = 0 По ТЗ.Колонки.Количество()-1 Цикл НоваяСтрока[Кол] = ТЗ.Итог(кол); КонецЦикла; ТабличноеПоле.Очистить(); ЭлементыФормы.ТабличноеПоле.Значение = ТЗ; ЭлементыФормы.ТабличноеПоле.СоздатьКолонки(); |
|||
1
golden-pack
29.12.11
✎
17:38
|
Зачем все это ... есть СКД
|
|||
2
Alex S D
29.12.11
✎
17:38
|
(1) когда есть чето древенее иногда бывает влом его переделывать на СКД)
|
|||
3
poet
29.12.11
✎
17:58
|
как всегда спасибо за умные ответы
решение: ТабДок = Новый ТабличныйДокумент; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.Номер, | ПоступлениеТоваровУслуг.Дата, | ПоступлениеТоваровУслуг.Контрагент, | ПоступлениеТоваровУслуг.Проведен, | ПоступлениеТоваровУслуг.ДатаВходящегоДокумента, | ПоступлениеТоваровУслуг.НомерВходящегоДокумента, | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.ЕдиницаИзмерения, | ПоступлениеТоваровУслугТовары.Количество, | ПоступлениеТоваровУслугТовары.Сумма, | ПоступлениеТоваровУслугТовары.Цена, | ПоступлениеТоваровУслуг.СкладОрдер |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг | ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка |ГДЕ | ПоступлениеТоваровУслуг.Дата МЕЖДУ &ДатаС И &ДатаПо | И ПоступлениеТоваровУслуг.Проведен = ИСТИНА" + ?(ЗначениеЗаполнено(Контрагент)," И ПоступлениеТоваровУслуг.Контрагент В(&Контрагент)", "") + ?(ЗначениеЗаполнено(СкладОрдер)," И ПоступлениеТоваровУслуг.СкладОрдер В(&СкладОрдер)", ""); Запрос.УстановитьПараметр("ДатаС", НачалоДня(ДатаС)); Запрос.УстановитьПараметр("ДатаПо", КонецДня(ДатаПо)); Запрос.УстановитьПараметр("Контрагент", Контрагент); Запрос.УстановитьПараметр("СкладОрдер", СкладОрдер); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("Дата",,,7); ТЗ.Колонки.Добавить("Номер",,,10); ТЗ.Колонки.Добавить("ДатаВходящая",,,10); ТЗ.Колонки.Добавить("НомерВходящий",,,10); ТЗ.Колонки.Добавить("Контрагент",,,15); Если ОтображатьСклад = Истина Тогда ТЗ.Колонки.Добавить("Склад",,,15); КонецЕсли; Номер = "0"; Пока Выборка.Следующий() Цикл Если Выборка.Номер <> Номер Тогда НоваяСтрока = ТЗ.Добавить(); НоваяСтрока.Дата = Формат(Дата(СокрЛП(Выборка.Дата)), "ДЛФ=Д"); НоваяСтрока.Номер = СокрЛП(Выборка.Номер); НоваяСтрока.ДатаВходящая = Формат(Дата(СокрЛП(Выборка.ДатаВходящегоДокумента)), "ДЛФ=Д"); НоваяСтрока.НомерВходящий = СокрЛП(Выборка.НомерВходящегоДокумента); НоваяСтрока.Контрагент = СокрЛП(Выборка.Контрагент); Если ОтображатьСклад = Истина Тогда НоваяСтрока.Склад = СокрЛП(Выборка.СкладОрдер); КонецЕсли; КонецЕсли; НазваниеКолонки = Строка("н"+СокрЛП(Выборка.Номенклатура.Код)); НазваниеКолонкиЦена = Строка("ц"+СокрЛП(Выборка.Номенклатура.Код)); ОтображениеНазванияКолонки = СокрЛП(Выборка.Номенклатура); ОтображениеНазванияКолонкиЦ = "Сумма"; Если ТЗ.Колонки.Найти(НазваниеКолонки) = Неопределено Тогда ТЗ.Колонки.Добавить(НазваниеКолонки,,ОтображениеНазванияКолонки, 15); НоваяСтрока[НазваниеКолонки] = Выборка.Количество; Если ФлагСуммы = Истина Тогда Если ТЗ.Колонки.Найти(НазваниеКолонкиЦена) = Неопределено Тогда ТЗ.Колонки.Добавить(НазваниеКолонкиЦена,,ОтображениеНазванияКолонкиЦ, 15); НоваяСтрока[НазваниеКолонкиЦена] = Выборка.Сумма; КонецЕсли; КонецЕсли; Иначе НоваяСтрока[НазваниеКолонки] = Выборка.Количество; Если ФлагСуммы = Истина Тогда НоваяСтрока[НазваниеКолонкиЦена] = Выборка.Сумма; КонецЕсли; КонецЕсли; Номер = Выборка.Номер; КонецЦикла; НоваяСтрока = ТЗ.Добавить(); Для кол = 0 По ТЗ.Колонки.Количество()-1 Цикл НоваяСтрока[Кол] = ТЗ.Итог(кол); КонецЦикла; ТабличноеПоле.Очистить(); ЭлементыФормы.ТабличноеПоле.Значение = ТЗ; ЭлементыФормы.ТабличноеПоле.СоздатьКолонки(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |