Имя: Пароль:
1C
1С v8
v8: Вопрос по построителю отчета!
0 p1C
 
10.12.12
14:14
Проблема такая: Есть отчет "Анализ продаж"  создан на основании построителя отчета. Клиент попросил добавить нормативную стоимость и соответственно маржу =  (СуммаПродаж-НормативнаяСтоимость)/СуммаПродаж.
Вроде все просто, но проблема возникает с маржой. Чтобы вывести в отчете ее надо поставить в итогах - что не правильно. Вы как решили эту проблему?
1 ShoGUN
 
10.12.12
14:16
Переделай вывод - в итоговых строках не выводи это поле. А что там в результате запроса - по барабану.
2 PR
 
10.12.12
14:18
(1) Пипец
3 Повелитель
 
10.12.12
14:18
(0) не вижу проблемы.
По итогам будет считаться маржа по итоговым цифрам.
4 mih_io
 
10.12.12
14:18
(0) мне непонятно, почему неправильно в итогах. Типовая ут 10.3 отчет продажи, нормально считает рентабельность по этой теме
5 p1C
 
10.12.12
14:19
есть какая-то предопределнная процедура приВыводеСтроки() ?
6 PR
 
10.12.12
14:19
(0) ВЫРАЗИТЬ((СУММА(СуммаПродаж) - СУММА(НормативнаяСтоимость)) / СУММА(СуммаПродаж) КАК ЧИСЛО(15, 2)
7 Повелитель
 
10.12.12
14:19
(5) Ты в запросе в итогах видимо не прописал.
там примерно так должно быть:
(Сумма(СуммаПродаж)-Сумма(НормативнаяСтоимость))/Сумма(СуммаПродаж)
8 ShoGUN
 
10.12.12
14:20
(6) Я думаю, у него и так есть агрегатные функции, раз уж он итоги считает.
9 PR
 
10.12.12
14:20
+(:) Плюс еще одна скобка ессно
10 Повелитель
 
10.12.12
14:20
(8) Судя по текст нет
11 PR
 
10.12.12
14:21
(8) Готов поспорить на ящик коньяка? :))
12 p1C
 
10.12.12
14:21
(6), (7) - точно так и написал. В итогах поставил маржу как сумма - так он в итоге сумирует все проценты по всем группировкам
13 ShoGUN
 
10.12.12
14:21
(11) Что ж у него в итогах тогда... О_о
14 PR
 
10.12.12
14:21
+(9) Это к (6) ессно
15 Повелитель
 
10.12.12
14:22
(12) Кидай запрос :)
16 PR
 
10.12.12
14:22
(12) Да пипец!
В итогах так напиши.
17 p1C
 
10.12.12
14:26
Например: Есть 2 группировки: Торговый представитель и номенклатура. Маржа у торг. представителя считает как сумма марж по номенклатуре - вот тут меня не устраивает
18 ShoGUN
 
10.12.12
14:28
(17) Сразу бы сказал, я не понял, чё те надо :) В (6) всё правильно, итоги просто надо нормально считать. Ты поставил сумму, вот тебе сумму и считает.
19 mih_io
 
10.12.12
14:28
тяжелый случай )
(17) тебе же в (6),(7) сказали как надо сделать. Если не понимаешь, выложи текст запроса, тебе в нем поправят строку, где ты сделал неправильно
20 p1C
 
10.12.12
14:28
(18) что надо тогда выбрать в итогах ?
21 p1C
 
10.12.12
14:30
(19) я также сделал  - не переживай столько. В итогах по некоторым группировкам не правильно считается
22 ShoGUN
 
10.12.12
14:31
(21) Код давай.
23 Повелитель
 
10.12.12
14:31
(21) кидай запрос, бесполезно с тобой спорить ))
24 p1C
 
10.12.12
14:32
на английском поймете ?
25 ShoGUN
 
10.12.12
14:33
(24) Нет, переводи давай!)))))
26 ShoGUN
 
10.12.12
14:35
Блин, я пошутил! )
27 Повелитель
 
10.12.12
14:37
(26) Шутник блин, человек в американское посольство побежал из-за тебя.
28 p1C
 
10.12.12
14:38
SELECT
   SalesTurnovers.QuantityTurnover AS Quantity,
   SalesTurnovers.SumManagementTurnover AS Sum,
   SalesTurnovers.Agent AS Agent,
   SalesTurnovers.Contract.Owner AS Client,
   SalesTurnovers.Nomenclature AS Nomenclature,
   SalesTurnovers.Recorder,
   BEGINOFPERIOD(SalesTurnovers.Period, DAY) AS ПериодДень,
   BEGINOFPERIOD(SalesTurnovers.Period, WEEK) AS ПериодНеделя,
   BEGINOFPERIOD(SalesTurnovers.Period, TENDAYS) AS ПериодДекада,
   BEGINOFPERIOD(SalesTurnovers.Period, MONTH) AS ПериодМесяц,
   BEGINOFPERIOD(SalesTurnovers.Period, QUARTER) AS ПериодКвартал,
   BEGINOFPERIOD(SalesTurnovers.Period, HALFYEAR) AS ПериодПолугодие,
   BEGINOFPERIOD(SalesTurnovers.Period, YEAR) AS ПериодГод,
   SalesTurnovers.Recorder.PriceType AS ТипЦены,
   SalesTurnovers.QuantityTurnover * ISNULL(NormativeExpensesCostsSliceLast.Sum, 0) AS НормативнаяСтоимость,
   CASE
       WHEN SalesTurnovers.SumManagementTurnover = 0
           THEN 0
       ELSE CAST((SalesTurnovers.SumManagementTurnover - SalesTurnovers.QuantityTurnover * ISNULL(NormativeExpensesCostsSliceLast.Sum, 0)) / SalesTurnovers.SumManagementTurnover AS NUMBER(15, 2))
   END AS Маржа
{SELECT
   Quantity AS Количество,
   Sum AS Сумма,
   Agent.* AS Агент,
   Client.* AS Клиент,
   Nomenclature.* AS Номенклатура,
   SalesTurnovers.Contract.* AS Магазин,
   SalesTurnovers.Organization.* AS Организация,
   SalesTurnovers.TerritorialDivision.* AS Регион,
   SalesTurnovers.AccountingType.* AS ТипУчета,
   SalesTurnovers.Warehouse.* AS Склад,
   Recorder.* AS Регистратор,
   ПериодДень,
   ПериодНеделя,
   ПериодДекада,
   ПериодМесяц,
   ПериодКвартал,
   ПериодПолугодие,
   ПериодГод,
   ТипЦены.*,
   НормативнаяСтоимость,
   Маржа}
FROM
   AccumulationRegister.Sales.Turnovers(
           &DateStart,
           &DateEnd,
           Recorder,
           CASE
                   WHEN &Organization = VALUE(Catalog.Organizations.EmptyRef)
                       THEN TRUE
                   ELSE Organization = &Organization
               END
               AND CASE
                   WHEN &TerritorialDivision = VALUE(Catalog.TerritorialDivisions.EmptyRef)
                       THEN TRUE
                   ELSE TerritorialDivision = &TerritorialDivision
               END) AS SalesTurnovers
       LEFT JOIN InformationRegister.NormativeExpensesCosts.SliceLast(&DateEnd, Organization = &Organization) AS NormativeExpensesCostsSliceLast
       ON SalesTurnovers.Nomenclature = NormativeExpensesCostsSliceLast.Nomenclature
{WHERE
   SalesTurnovers.QuantityTurnover AS Количество,
   SalesTurnovers.SumManagementTurnover AS Сумма,
   SalesTurnovers.Agent.* AS Агент,
   SalesTurnovers.Contract.Owner.* AS Клиент,
   SalesTurnovers.Nomenclature.* AS Номенклатура,
   SalesTurnovers.Warehouse.* AS Склад,
   SalesTurnovers.Contract.* AS Магазин,
   SalesTurnovers.AccountingType.* AS ТипУчета,
   SalesTurnovers.Organization.* AS Организация,
   SalesTurnovers.TerritorialDivision.* AS Регион,
   SalesTurnovers.Recorder.* AS Регистратор,
   SalesTurnovers.VATSumManagementTurnover AS НДС,
   (CASE
           WHEN SalesTurnovers.Nomenclature.КоэфициентВУпаковке = 0
               THEN SalesTurnovers.QuantityTurnover
           ELSE SalesTurnovers.QuantityTurnover / SalesTurnovers.Nomenclature.КоэфициентВУпаковке
       END) AS КоличествоУпаковок,
   SalesTurnovers.Recorder.PriceType.* AS ТипЦены,
   (SalesTurnovers.QuantityTurnover * ISNULL(NormativeExpensesCostsSliceLast.Sum, 0)) AS НормативнаяСтоимость,
   (CASE
           WHEN SalesTurnovers.SumManagementTurnover = 0
               THEN 0
           ELSE CAST((SalesTurnovers.SumManagementTurnover - SalesTurnovers.QuantityTurnover * ISNULL(NormativeExpensesCostsSliceLast.Sum, 0)) / SalesTurnovers.SumManagementTurnover AS NUMBER(15, 2))
       END) AS Маржа}
{ORDER BY
   Quantity,
   Sum,
   Agent.* AS Агент,
   Client.* AS Клиент,
   Nomenclature.* AS Номенклатура,
   SalesTurnovers.Warehouse.* AS Склад,
   SalesTurnovers.Contract.* AS Магазин,
   SalesTurnovers.AccountingType.* AS ТипУчета,
   SalesTurnovers.Organization.* AS Организация,
   SalesTurnovers.TerritorialDivision.* AS Регион,
   Recorder.* AS Регистратор,
   ТипЦены.*,
   НормативнаяСтоимость,
   Маржа}
TOTALS
   SUM(Quantity),
   SUM(Sum),
   SUM(Маржа)
BY
   OVERALL,
   Client,
   Nomenclature,
   Agent
{TOTALS BY
   Agent.* AS Агент,
   Client.* AS Клиент,
   Nomenclature.* AS Номенклатура,
   SalesTurnovers.Warehouse.* AS Склад,
   SalesTurnovers.Contract.* AS Магазин,
   SalesTurnovers.Organization.* AS Организация,
   SalesTurnovers.TerritorialDivision.* AS Регион,
   SalesTurnovers.AccountingType.* AS ТипУчета,
   Recorder.* AS Регистратор,
   ПериодДень,
   ПериодНеделя,
   ПериодДекада,
   ПериодМесяц,
   ПериодКвартал,
   ПериодПолугодие,
   ПериодГод,
   ТипЦены.*,
   НормативнаяСтоимость,
   Маржа}
AUTOORDER
29 p1C
 
10.12.12
14:38
Извините но у меня конфа английская
30 Повелитель
 
10.12.12
14:41
Вот тут:
TOTALS
за место
SUM(Маржа)
вставь:
ВЫРАЗИТЬ((СУММА(СуммаПродаж) - СУММА(НормативнаяСтоимость)) / СУММА(СуммаПродаж) КАК ЧИСЛО(15, 2)

Тока свои значения вставь, тебе про это и писали все время
31 p1C
 
10.12.12
14:42
(30) щас попробую. извиняюсь что неправильно вас понял
32 ShoGUN
 
10.12.12
14:45
(30) Лучше всё же по-английски, а то мешанину читать - убиться веником.
33 p1C
 
10.12.12
14:46
Все заработало. Спасибо всем и извините за нервотрепку )