|
Как в запросе рассчитать итог, по ТЧ документа? | ☑ | ||
---|---|---|---|---|
0
SherifSP
20.02.14
✎
12:04
|
В запросе есть 3 виртуальные таблицы, ПартииТоваровНаСкладахУпр,Бух и Нал, видов у регистратора порядка 10 документов, как в запросе можно рассчитать итоги по сумме каждой из тч "Товары", "ВозвратнаяТара", "Услуги"?
ВЫБРАТЬ ВЫБОР КОГДА НЕ ТоварыНаСкладахОбороты.Регистратор ЕСТЬ NULL ТОГДА ТоварыНаСкладахОбороты.Регистратор КОГДА НЕ ПартииТоваровНаСкладахОбороты.Регистратор ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор КОГДА НЕ ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор КОГДА НЕ ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор КОНЕЦ КАК Регистратор, ВЫБОР КОГДА ТоварыНаСкладахОбороты.КоличествоПриход <> 0 ТОГДА ТоварыНаСкладахОбороты.КоличествоПриход ИНАЧЕ 0 КОНЕЦ КАК КоличествоПриход, ВЫБОР КОГДА ТоварыНаСкладахОбороты.КоличествоРасход <> 0 ТОГДА ТоварыНаСкладахОбороты.КоличествоРасход ИНАЧЕ 0 КОНЕЦ КАК КоличествоРасход, ВЫБОР КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьПриход <> 0 ТОГДА ПартииТоваровНаСкладахОбороты.СтоимостьПриход ИНАЧЕ 0 КОНЕЦ КАК СтоимостьПриход, ВЫБОР КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход <> 0 ТОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход ИНАЧЕ 0 КОНЕЦ КАК СтоимостьРасход, ВЫБОР КОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьПриход <> 0 ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьПриход ИНАЧЕ 0 КОНЕЦ КАК СтоимостьБУПриход, ВЫБОР КОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьРасход <> 0 ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.СтоимостьРасход ИНАЧЕ 0 КОНЕЦ КАК СтоимостьБУРасход, ВЫБОР КОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьПриход <> 0 ТОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьПриход ИНАЧЕ 0 КОНЕЦ КАК СтоимостьНУПриход, ВЫБОР КОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьРасход <> 0 ТОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.СтоимостьРасход ИНАЧЕ 0 КОНЕЦ КАК СтоимостьНУРасход, ВЫБОР КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьПриход <> 0 ТОГДА "1" КОГДА ПартииТоваровНаСкладахОбороты.СтоимостьРасход <> 0 ТОГДА "2" КОНЕЦ КАК Поле1, ВЫБОР КОГДА НЕ ТоварыНаСкладахОбороты.Регистратор.ОтражатьВБухгалтерскомУчете ЕСТЬ NULL ТОГДА ТоварыНаСкладахОбороты.Регистратор.ОтражатьВБухгалтерскомУчете КОГДА НЕ ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.ОтражатьВБухгалтерскомУчете ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.ОтражатьВБухгалтерскомУчете КОГДА НЕ ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.ОтражатьВБухгалтерскомУчете ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.ОтражатьВБухгалтерскомУчете КОГДА НЕ ПартииТоваровНаСкладахОбороты.Регистратор.ОтражатьВБухгалтерскомУчете ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор.ОтражатьВБухгалтерскомУчете КОНЕЦ КАК БухгалтерскийУчет, ВЫБОР КОГДА НЕ ТоварыНаСкладахОбороты.Регистратор.ОтражатьВУправленческомУчете ЕСТЬ NULL ТОГДА ТоварыНаСкладахОбороты.Регистратор.ОтражатьВУправленческомУчете КОГДА НЕ ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.ОтражатьВУправленческомУчете ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.ОтражатьВУправленческомУчете КОГДА НЕ ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.ОтражатьВУправленческомУчете ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.ОтражатьВУправленческомУчете КОГДА НЕ ПартииТоваровНаСкладахОбороты.Регистратор.ОтражатьВУправленческомУчете ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор.ОтражатьВУправленческомУчете КОНЕЦ КАК УправленческийУчет, ВЫБОР КОГДА НЕ ТоварыНаСкладахОбороты.Регистратор.ОтражатьВНалоговомУчете ЕСТЬ NULL ТОГДА ТоварыНаСкладахОбороты.Регистратор.ОтражатьВНалоговомУчете КОГДА НЕ ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.ОтражатьВНалоговомУчете ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.ОтражатьВНалоговомУчете КОГДА НЕ ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.ОтражатьВНалоговомУчете ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.ОтражатьВНалоговомУчете КОГДА НЕ ПартииТоваровНаСкладахОбороты.Регистратор.ОтражатьВНалоговомУчете ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор.ОтражатьВНалоговомУчете КОНЕЦ КАК НалоговыйУчет, ВЫБОР КОГДА НЕ ТоварыНаСкладахОбороты.Регистратор.Комментарий ЕСТЬ NULL ТОГДА ТоварыНаСкладахОбороты.Регистратор.Комментарий КОГДА НЕ ПартииТоваровНаСкладахОбороты.Регистратор.Комментарий ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор.Комментарий КОГДА НЕ ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.Комментарий ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.Комментарий КОГДА НЕ ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.Комментарий ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.Комментарий КОНЕЦ КАК Комментарий, ВЫБОР КОГДА НЕ ТоварыНаСкладахОбороты.Регистратор.Контрагент ЕСТЬ NULL ТОГДА ТоварыНаСкладахОбороты.Регистратор.Контрагент КОГДА НЕ ПартииТоваровНаСкладахОбороты.Регистратор.Контрагент ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор.Контрагент КОГДА НЕ ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.Контрагент ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор.Контрагент КОГДА НЕ ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.Контрагент ЕСТЬ NULL ТОГДА ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор.Контрагент КОНЕЦ КАК Контрагент, ПартииТоваровНаСкладахОбороты.Регистратор.СкладОтправитель КАК СкладОтправитель, ПартииТоваровНаСкладахОбороты.Регистратор.СкладПолучатель КАК СкладПолучатель ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад В (&Склад)) КАК ТоварыНаСкладахОбороты ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахБухгалтерскийУчет.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад В (&Склад)) КАК ПартииТоваровНаСкладахБухгалтерскийУчетОбороты ПО ТоварыНаСкладахОбороты.Регистратор = ПартииТоваровНаСкладахБухгалтерскийУчетОбороты.Регистратор ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахНалоговыйУчет.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад В (&Склад)) КАК ПартииТоваровНаСкладахНалоговыйУчетОбороты ПО ТоварыНаСкладахОбороты.Регистратор = ПартииТоваровНаСкладахНалоговыйУчетОбороты.Регистратор ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&ДатаНач, &ДатаКон, Регистратор, Склад В (&Склад)) КАК ПартииТоваровНаСкладахОбороты ПО ТоварыНаСкладахОбороты.Регистратор = ПартииТоваровНаСкладахОбороты.Регистратор УПОРЯДОЧИТЬ ПО Поле1 |
|||
1
SherifSP
20.02.14
✎
12:08
|
У меня сейчас вот так рассчитывается итог, но он не оптимален по скорости
ВидДокумента = Документ.Метаданные().Имя; Если ВидДокумента = "РеализацияТоваровУслуг" Тогда ДопСвойства.Контрагент = КонтрагентДок; ДопСвойства.СуммаПродажи = Документ.Товары.Итог("Сумма")+Документ.ВозвратнаяТара.Итог("Сумма")+Документ.Услуги.Итог("Сумма"); ДопСвойства.НДС = Документ.Товары.Итог("СуммаНДС")+Документ.Услуги.Итог("СуммаНДС"); ДопСвойства.Комментарий = КомментарийДок; ИначеЕсли ВидДокумента = "ПоступлениеТоваровУслуг" Тогда ДопСвойства.Контрагент = КонтрагентДок; ДопСвойства.СуммаПродажи = Документ.Товары.Итог("Сумма")+Документ.ВозвратнаяТара.Итог("Сумма")+Документ.Услуги.Итог("Сумма")+Документ.Оборудование.Итог("Сумма")+Документ.ОбъектыСтроительства.Итог("Сумма"); ДопСвойства.НДС = Документ.Товары.Итог("СуммаНДС")+Документ.Услуги.Итог("СуммаНДС")+Документ.Оборудование.Итог("СуммаНДС")+Документ.ОбъектыСтроительства.Итог("СуммаНДС"); ДопСвойства.Комментарий = КомментарийДок; ИначеЕсли ВидДокумента = "ВозвратТоваровПоставщику" Тогда Множитель = ?(СуммаУчета<0,-1,1); ДопСвойства.Контрагент = КонтрагентДок; ДопСвойства.СуммаПродажи = Множитель*(Документ.Товары.Итог("Сумма")+Документ.ВозвратнаяТара.Итог("Сумма")+Документ.Оборудование.Итог("Сумма")); ДопСвойства.НДС = Множитель*(Документ.Товары.Итог("СуммаНДС")+Документ.Оборудование.Итог("СуммаНДС")); ДопСвойства.Комментарий = КомментарийДок; ИначеЕсли ВидДокумента = "ВозвратТоваровОтПокупателя" Тогда Множитель = ?(СуммаУчета<0,-1,1); ДопСвойства.Контрагент = КонтрагентДок; ДопСвойства.СуммаПродажи = Множитель*(Документ.Товары.Итог("Сумма")+Документ.ВозвратнаяТара.Итог("Сумма")); ДопСвойства.НДС = Множитель*Документ.Товары.Итог("СуммаНДС"); ДопСвойства.Комментарий = КомментарийДок; ИначеЕсли ВидДокумента = "ПеремещениеТоваров" Тогда ДопСвойства.Контрагент = ?(ВидДвижения=Перечисления.ВидыДвиженийПриходРасход.Приход,СкладОтправитель,СкладПолучатель); ДопСвойства.СуммаПродажи = 0; ДопСвойства.НДС = 0; ДопСвойства.Комментарий = КомментарийДок; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |