|
Получение нужных итогов в запросе. | ☑ | ||
---|---|---|---|---|
0
Solitar
24.07.12
✎
11:59
|
В чем суть, в бп 2.0 доработатывается механизм закрытия 25 на 20. Теперь он должен закрываться следующим образом.
Берутся подразделения (сделана возможность указания сразу нескольких подразеделний) из регистра "Методы распределения общепроизводственных и общехозяйственных затрат". В этих подразеделниях есть остатки по номенклатурным группам. Нужно получить только те номенклатурные группы, по которым была выручка. Затем, посчитать итог по выручке для этих номенклатурных групп (т.е. вывести итог в отдельный столбец) и узнать, какой процент выручки занимает каждая номенклатруная группа. Вот текст запроса, отвечу на любые вопросы. ВЫБРАТЬ ВложенныйЗапрос.Счет КАК Счет20, ВложенныйЗапрос.Субконто1 КАК НоменклатурнаяГруппа20, ВложенныйЗапрос.ОстатокПо20 КАК ОстатокПо20, ВложенныйЗапрос.Счет1 КАК Счет90, ВложенныйЗапрос.Субконто11 КАК НоменклатурнаяГруппа90, ВложенныйЗапрос.ОстатокПо90, ВложенныйЗапрос.ОстатокПо25, ВложенныйЗапрос.Субконто12 КАК СтатьяЗатрат ПОМЕСТИТЬ ВТ_Остатки ИЗ (ВЫБРАТЬ ОстаткиПо20.Счет КАК Счет, ОстаткиПо20.СуммаОборотДт - ОстаткиПо20.СуммаОборотКт КАК ОстатокПо20, ОстаткиПо20.Субконто1 КАК Субконто1, ОстаткиПо90.Счет КАК Счет1, ЕСТЬNULL(ОстаткиПо90.СуммаОборотКт - ОстаткиПо90.СуммаОборотДт, 0) КАК ОстатокПо90, ОстаткиПо90.Субконто1 КАК Субконто11, ОстаткиПо25.СуммаОборотДт - ОстаткиПо25.СуммаОборотКт КАК ОстатокПо25, ОстаткиПо25.Подразделение КАК Подразделение25, ОстаткиПо25.Субконто1 КАК Субконто12 ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство), , Организация = &Организация) КАК ОстаткиПо20 ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД), , Организация = &Организация) КАК ОстаткиПо90 ПО ОстаткиПо20.Субконто1 = ОстаткиПо90.Субконто1, РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, , , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОбщепроизводственныеРасходы), , Организация = &Организация) КАК ОстаткиПо25 ГДЕ ОстаткиПо20.Подразделение В (ВЫБРАТЬ СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1Подразделения.Подразделение КАК Подразделение1 ИЗ РегистрСведений.МетодыРаспределенияКосвенныхРасходовОрганизаций.СрезПоследних(&Конец, ) КАК МетодыРаспределенияКосвенныхРасходовОрганизацийСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1 КАК СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1.Подразделения КАК СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1Подразделения ПО СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1.Ссылка = СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1Подразделения.Ссылка ПО МетодыРаспределенияКосвенныхРасходовОрганизацийСрезПоследних.ПодразделенияРаспределения = СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1.Ссылка ГДЕ МетодыРаспределенияКосвенныхРасходовОрганизацийСрезПоследних.БазаРаспределения = ЗНАЧЕНИЕ(Перечисление.БазыРаспределенияКосвенныхРасходов.Выручка)) И ОстаткиПо25.Подразделение В (ВЫБРАТЬ МетодыРаспределенияКосвенныхРасходовОрганизацийСрезПоследних.Подразделение ИЗ РегистрСведений.МетодыРаспределенияКосвенныхРасходовОрганизаций.СрезПоследних(&Конец, ) КАК МетодыРаспределенияКосвенныхРасходовОрганизацийСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1 КАК СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1.Подразделения КАК СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1Подразделения ПО СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1.Ссылка = СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1Подразделения.Ссылка ПО МетодыРаспределенияКосвенныхРасходовОрганизацийСрезПоследних.ПодразделенияРаспределения = СписокПодразделенияВключенныхВБазуРаспределенияКосвенныхРасходов1.Ссылка ГДЕ МетодыРаспределенияКосвенныхРасходовОрганизацийСрезПоследних.БазаРаспределения = ЗНАЧЕНИЕ(Перечисление.БазыРаспределенияКосвенныхРасходов.Выручка)) СГРУППИРОВАТЬ ПО ОстаткиПо90.Счет, ОстаткиПо20.Субконто1, ОстаткиПо20.Счет, ОстаткиПо20.СуммаОборотДт - ОстаткиПо20.СуммаОборотКт, ОстаткиПо90.Субконто1, ЕСТЬNULL(ОстаткиПо90.СуммаОборотКт - ОстаткиПо90.СуммаОборотДт, 0), ОстаткиПо25.СуммаОборотДт - ОстаткиПо25.СуммаОборотКт, ОстаткиПо25.Подразделение, ОстаткиПо25.Субконто1) КАК ВложенныйЗапрос ГДЕ ВложенныйЗапрос.ОстатокПо90 <> 0 СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Счет, ВложенныйЗапрос.Счет1, ВложенныйЗапрос.ОстатокПо20, ВложенныйЗапрос.Субконто1, ВложенныйЗапрос.Субконто11, ВложенныйЗапрос.ОстатокПо90, ВложенныйЗапрос.ОстатокПо25, ВложенныйЗапрос.Субконто12 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СУММА(ВТ.ОстатокПо90) КАК ОстатокПо90 ПОМЕСТИТЬ ВТ_Итоги ИЗ ВТ_Остатки КАК ВТ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Счет20, ВТ.НоменклатурнаяГруппа20, ВТ.ОстатокПо20, ВТ.Счет90, ВТ.НоменклатурнаяГруппа90, ВТ.ОстатокПо90 КАК ВыручкаПо90ПоНГ, СУММА(ВТ2.ОстатокПо90) КАК ОстатокПо90, ВТ.ОстатокПо25, ВЫРАЗИТЬ(ВЫБОР КОГДА ВТ.ОстатокПо90 <> 0 ТОГДА ВТ.ОстатокПо90 / (ВТ2.ОстатокПо90 / 100) КОНЕЦ КАК ЧИСЛО(15, 3)) КАК Коэффицент, ВЫРАЗИТЬ(ВТ.ОстатокПо25 / 100 * (ВЫРАЗИТЬ(ВЫБОР КОГДА ВТ.ОстатокПо90 <> 0 ТОГДА ВТ.ОстатокПо90 / (ВТ2.ОстатокПо90 / 100) КОНЕЦ КАК ЧИСЛО(15, 3))) КАК ЧИСЛО(15, 2)) КАК СуммаДляРаспределения, ВТ.СтатьяЗатрат ПОМЕСТИТЬ ВТ_Вычисления ИЗ ВТ_Остатки КАК ВТ, ВТ_Итоги КАК ВТ2 СГРУППИРОВАТЬ ПО ВТ.НоменклатурнаяГруппа20, ВТ.Счет20, ВТ.Счет90, ВТ.НоменклатурнаяГруппа90, ВТ.ОстатокПо20, ВТ.ОстатокПо90, ВТ.ОстатокПо25, ВТ.СтатьяЗатрат, ВЫРАЗИТЬ(ВЫБОР КОГДА ВТ.ОстатокПо90 <> 0 ТОГДА ВТ.ОстатокПо90 / (ВТ2.ОстатокПо90 / 100) КОНЕЦ КАК ЧИСЛО(15, 3)), ВЫРАЗИТЬ(ВТ.ОстатокПо25 / 100 * (ВЫРАЗИТЬ(ВЫБОР КОГДА ВТ.ОстатокПо90 <> 0 ТОГДА ВТ.ОстатокПо90 / (ВТ2.ОстатокПо90 / 100) КОНЕЦ КАК ЧИСЛО(15, 3))) КАК ЧИСЛО(15, 2)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СУММА(ВТ_Вычисления.СуммаДляРаспределения) КАК СуммаДляРаспределения ПОМЕСТИТЬ ВТ_ИТОГ2 ИЗ ВТ_Вычисления КАК ВТ_Вычисления ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Вычисления.Счет20, ВТ_Вычисления.НоменклатурнаяГруппа20, ВТ_Вычисления.ОстатокПо20, ВТ_Вычисления.Счет90, ВТ_Вычисления.НоменклатурнаяГруппа90, ВТ_Вычисления.ВыручкаПо90ПоНГ, ВТ_Вычисления.ОстатокПо90, ВТ_Вычисления.ОстатокПо25, ВТ_Вычисления.Коэффицент, ВТ_Вычисления.СуммаДляРаспределения, ВТ_ИТОГ2.СуммаДляРаспределения КАК ИтогПоСуммеДляРаспределения, ВТ_Вычисления.СтатьяЗатрат ИЗ ВТ_Вычисления КАК ВТ_Вычисления, ВТ_ИТОГ2 КАК ВТ_ИТОГ2 в данный момент, в столбец "ОстатокПо90" выводится итог по всем строкам, а мне нужно, чтобы оно считалось только по номенклатурным группам без повторений. Потому что в разных подразеделниях могут повторятся номенклатурные группы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |