|   |   | 
| 
 | Дополнительное поле в ТЗ | ☑ | ||
|---|---|---|---|---|
| 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 Цикл НоваяСтрока[Кол] = ТЗ.Итог(кол); КонецЦикла; ТабличноеПоле.Очистить(); ЭлементыФормы.ТабличноеПоле.Значение = ТЗ; ЭлементыФормы.ТабличноеПоле.СоздатьКолонки(); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |