|
Как присоединить таблицу за прошлый год и вывести ее в отчет. | ☑ | ||
---|---|---|---|---|
0
progaoff
18.09.15
✎
14:58
|
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ РАЗРЕШЕННЫЕ |ДвижениеДенежныхСредствОбороты.Организация КАК Организация, |ДвижениеДенежныхСредствОбороты.Период КАК Неделя, |ЕСТЬNULL(ДвижениеДенежныхСредствОбороты.СуммаОборот, 0) КАК Сумма, |ВесьМесяц.Месяц КАК Месяц, |ВесьМесяц.СуммаЗаМесяц КАК СуммаЗаМесяц, |ВесьМесяцСтарый.МесяцСтарый, |ЕСТЬNULL(ВесьМесяцСтарый.СредняяВыручкаЗаСмену,0) КАК СуммаЗаМесяцСтарый |ИЗ |РегистрНакопления.ДвижениеДенежныхСредств.Обороты(&НачПериода, &КонПериода, Неделя, Статья В (&СЗ)) КАК ДвижениеДенежныхСредствОбороты | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ДвижениеДенежныхСредствОбороты.Организация КАК Организация, | СУММА(ЕСТЬNULL(ДвижениеДенежныхСредствОбороты.СуммаОборот, 0)) КАК СуммаЗаМесяц, | ДвижениеДенежныхСредствОбороты.Период КАК Месяц | ИЗ | РегистрНакопления.ДвижениеДенежныхСредств.Обороты(&НачПериодаМес, &КонПериодаМес, Месяц, Статья В (&СЗ)) КАК ДвижениеДенежныхСредствОбороты | | СГРУППИРОВАТЬ ПО | ДвижениеДенежныхСредствОбороты.Организация, | ДвижениеДенежныхСредствОбороты.Период) КАК ВесьМесяц | ПО ДвижениеДенежныхСредствОбороты.Организация = ВесьМесяц.Организация | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | УчетнаяПолитика.Организация КАК Организация, | УчетнаяПолитика.Период КАК МесяцСтарый, | УчетнаяПолитика.СредняяВыручкаЗаСмену КАК СредняяВыручкаЗаСмену | ИЗ | РегистрСведений.УчетнаяПолитика КАК УчетнаяПолитика | ГДЕ | УчетнаяПолитика.Период МЕЖДУ &НачПериодаМесСтарый И &КонПериодаМесСтарый | | СГРУППИРОВАТЬ ПО | УчетнаяПолитика.Организация, | УчетнаяПолитика.Период, | УчетнаяПолитика.СредняяВыручкаЗаСмену) КАК ВесьМесяцСтарый | ПО ДвижениеДенежныхСредствОбороты.Организация = ВесьМесяцСтарый.Организация | | УПОРЯДОЧИТЬ ПО |Организация, |Неделя | ИТОГИ |СУММА(Сумма), |СУММА(СуммаЗаМесяц) | ПО |Организация, |Неделя"; СЗ=Новый СписокЗначений; СЗ.Добавить(Справочники.СтатьиРасходов.ВыручкаПарикмахерскийЗал); СЗ.Добавить(Справочники.СтатьиРасходов.ВыручкаМаникюрныйКабинет); СЗ.Добавить(Справочники.СтатьиРасходов.ВыручкаКосметология); СЗ.Добавить(Справочники.СтатьиРасходов.ВыручкаМассажныйКабинет); СЗ.Добавить(Справочники.СтатьиРасходов.В); СЗ.Добавить(Справочники.СтатьиРасходов.В); СЗ.Добавить(Справочники.СтатьиРасходов.П); СЗ.Добавить(Справочники.СтатьиРасходов.П); СЗ.Добавить(Справочники.СтатьиРасходов.П); СЗ.Добавить(Справочники.СтатьиРасходов.П); СЗ.Добавить(Справочники.СтатьиРасходов.И); СЗ.Добавить(Справочники.СтатьиРасходов.Пр); СЗ.Добавить(Справочники.СтатьиРасходов.Пр); НачПериода1=НачалоНедели(НачПериода); КонПериода1=КонецНедели(КонПериода); НачПериодаМес=НачалоДня(НачПериода); КонПериодаМес=КонецДня(КонПериода); НачПериодаМесСтарый=НачалоМесяца(ДобавитьМесяц(НачПериода,-12)); КонПериодаМесСтарый=КонецМесяца(ДобавитьМесяц(КонПериода,-12)); Запрос.УстановитьПараметр("НачПериода",НачПериода1); Запрос.УстановитьПараметр("КонПериода",КонПериода1); Запрос.УстановитьПараметр("НачПериодаМес",НачПериодаМес); Запрос.УстановитьПараметр("КонПериодаМес",КонПериодаМес); Запрос.УстановитьПараметр("НачПериодаМесСтарый",НачПериодаМесСтарый); Запрос.УстановитьПараметр("КонПериодаМесСтарый",КонПериодаМесСтарый); Запрос.УстановитьПараметр("СЗ",СЗ); КолвоДнейВМесяце=Цел((КонПериодаМес-НачПериодаМес)/86400)+1; КолвоДнейВМесяцеСтаром=Цел((КонПериодаМесСтарый-НачПериодаМесСтарый)/86400)+1; Результат=Запрос.Выполнить(); ТабличныйДокумент = ЭлементыФормы.ПолеТабличногоДокумента1; ТабличныйДокумент.Очистить(); Макет = ПолучитьМакет("Макет"); Область = Макет.ПолучитьОбласть("Шапка|Общая"); ТабличныйДокумент.Вывести(Область); Область = Макет.ПолучитьОбласть("Шапка|Выручка"); Область.Параметры.Неделя=ПредставлениеПериода(НачПериодаМесСтарый,КонПериодаМесСтарый); ТабличныйДокумент.Присоединить(Область); ВыборкаДетальныеЗаписи = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Неделя","Все"); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Область.Параметры.Неделя=ПредставлениеПериода(ВыборкаДетальныеЗаписи.Неделя,КонецНедели(ВыборкаДетальныеЗаписи.Неделя)); ТабличныйДокумент.Присоединить(Область); КонецЦикла; Область.Параметры.Неделя=ПредставлениеПериода(НачПериодаМес,КонПериодаМес); ТабличныйДокумент.Присоединить(Область); ВыборкаОрганизация=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Организация"); Пока ВыборкаОрганизация.Следующий() Цикл Область = Макет.ПолучитьОбласть("Город|Общая"); Область.Параметры.Город=ВыборкаОрганизация.Организация; ТабличныйДокумент.Вывести(Область); Область = Макет.ПолучитьОбласть("Город|Выручка"); ВыборкаДетальныеЗаписи = ВыборкаОрганизация.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Неделя","Все"); ПерваяНеделя=Истина; Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Попытка СуммаЗаМесяц=Окр(ВыборкаДетальныеЗаписи.СуммаЗаМесяц/КолвоДнейВМесяце,2); Исключение СуммаЗаМесяц=0; КонецПопытки; Попытка СуммаЗаМесяцСтарый Исключение СуммаЗаМесяцСтарый=0; КонецПопытки; Если ПерваяНеделя Тогда Область.Параметры.ОбщаяВыручка=СуммаЗаМесяцСтарый; ТабличныйДокумент.Присоединить(Область); ПерваяНеделя=Ложь; КонецЕсли; Попытка Область.Параметры.ОбщаяВыручка=Окр(ВыборкаДетальныеЗаписи.Сумма/7); Исключение Область.Параметры.ОбщаяВыручка=0; КонецПопытки; ТабличныйДокумент.Присоединить(Область); КонецЦикла; Область = Макет.ПолучитьОбласть("Город|Выручка"); Область.Параметры.ОбщаяВыручка=СуммаЗаМесяц; ТабличныйДокумент.Присоединить(Область); СоотношениеКПрошломуГоду = Окр(СуммаЗаМесяц-СуммаЗаМесяцСтарый)/СуммаЗаМесяцСтарый*100; Область = Макет.ПолучитьОбласть("ПрошлыйГод|Город"); Область.Параметры.ОбщаяВыручкаП = СоотношениеКПрошломуГоду; ТабличныйДокумент.Присоединить(Область); КонецЦикла; //установим параметры отображения табличного документа ТабличныйДокумент.ТолькоПросмотр = Ложь; ТабличныйДокумент.ОтображатьЗаголовки = Ложь; ТабличныйДокумент.ОтображатьСетку = Ложь; ТабличныйДокумент.АвтоМасштаб=Истина; ТабличныйДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт; ТабличныйДокумент.ФиксацияСверху=3; //покажем табличный документ на экране ТабличныйДокумент.Показать(); Есть данные за прошлый год они хранятся в РС УчетныеПолитики данные за этот год я беру из РН движениеДС потом их считаю и вывожу за каждую неделю. Не могу вывести данные из РС при расчете пишет либо null либо деление на ноль |
|||
1
ВедущийП
18.09.15
✎
15:04
|
Зачем два соединения с РН?
|
|||
2
ВедущийП
18.09.15
✎
15:05
|
Понял зачем. Ошибка в том что группировки есть, а функций нет. Добавь Сумма() в ресерсе РС
|
|||
3
ВедущийП
18.09.15
✎
15:06
|
т.е. среднюювыручкузасмену надо сделать ресурсом а не группировкой
|
|||
4
progaoff
18.09.15
✎
15:17
|
ЕСТЬNULL(ВесьМесяцСтарый.СредняяВыручкаЗаСмену,0) КАК СуммаЗаМесяцСтарый сюда еще сумму прилепить? (3) (3)
|
|||
5
ВедущийП
18.09.15
✎
15:18
|
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| УчетнаяПолитика.Организация КАК Организация, | УчетнаяПолитика.Период КАК МесяцСтарый, | СУММА(УчетнаяПолитика.СредняяВыручкаЗаСмену) КАК СредняяВыручкаЗаСмену | ИЗ | РегистрСведений.УчетнаяПолитика КАК УчетнаяПолитика | ГДЕ | УчетнаяПолитика.Период МЕЖДУ &НачПериодаМесСтарый И &КонПериодаМесСтарый | | СГРУППИРОВАТЬ ПО | УчетнаяПолитика.Организация, | УчетнаяПолитика.Период) КАК ВесьМесяцСтарый |
|||
6
progaoff
18.09.15
✎
15:26
|
да, результат есть, но цифра сильно маленькая...
|
|||
7
progaoff
18.09.15
✎
15:28
|
блин ступил она же делится у меня на количество дней в месяце
|
|||
8
ВедущийП
18.09.15
✎
15:30
|
(7) убери период и группировку по периоду, оставь только отбор по периоду.тогда у тебя будет сумма за месяц
|
|||
9
ВедущийП
18.09.15
✎
15:32
|
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| УчетнаяПолитика.Организация КАК Организация, | СУММА(УчетнаяПолитика.СредняяВыручкаЗаСмену) КАК СредняяВыручкаЗаСмену | ИЗ | РегистрСведений.УчетнаяПолитика КАК УчетнаяПолитика | ГДЕ | УчетнаяПолитика.Период МЕЖДУ &НачПериодаМесСтарый И &КонПериодаМесСтарый | | СГРУППИРОВАТЬ ПО | УчетнаяПолитика.Организация) КАК ВесьМесяцСтарый |
|||
10
ВедущийП
18.09.15
✎
15:34
|
а это что?
Попытка СуммаЗаМесяцСтарый Исключение СуммаЗаМесяцСтарый=0; КонецПопытки; |
|||
11
ВедущийП
18.09.15
✎
15:36
|
А это?
СоотношениеКПрошломуГоду = Окр(СуммаЗаМесяц-СуммаЗаМесяцСтарый)/СуммаЗаМесяцСтарый*100; окр применяется к разнице сумм, а не к результату выражения. |
|||
12
ВедущийП
18.09.15
✎
15:37
|
А проверку деленияна ноль через попытку..исключение я вообще первый раз вижу :)
|
|||
13
progaoff
18.09.15
✎
15:40
|
(9) красота) я попытку делал что бы увидеть результат)
|
|||
14
progaoff
18.09.15
✎
15:40
|
(13) спасибо большое
|
|||
15
progaoff
18.09.15
✎
15:41
|
(11) это соотношение к прошлому году вычисляется
|
|||
16
progaoff
18.09.15
✎
15:42
|
(11) а че там не так??
|
|||
17
ВедущийП
18.09.15
✎
15:43
|
(15) да, но ты наверное хочешь процент округлить до целых.
СоотношениеКПрошломуГоду = Окр((СуммаЗаМесяц-СуммаЗаМесяцСтарый)/СуммаЗаМесяцСтарый*100); |
|||
18
ВедущийП
18.09.15
✎
15:43
|
(16) смысла нет округлять результат вычитания
|
|||
19
progaoff
18.09.15
✎
15:45
|
ааа....понял...ну да тоже тупость
|
|||
20
ВедущийП
18.09.15
✎
15:53
|
(13) Увидеть результат чего? не совсем понял.
Попытка СуммаЗаМесяц=Окр(ВыборкаДетальныеЗаписи.СуммаЗаМесяц/КолвоДнейВМесяце,2); Исключение СуммаЗаМесяц=0; КонецПопытки; нужно заменить на СуммаЗаМесяц=Окр(?(КолвоДнейВМесяце=0, 0, ВыборкаДетальныеЗаписи.СуммаЗаМесяц/КолвоДнейВМесяце,2); |
|||
21
ВедущийП
18.09.15
✎
15:54
|
скобку пропустил...
СуммаЗаМесяц=Окр(?(КолвоДнейВМесяце=0, 0, ВыборкаДетальныеЗаписи.СуммаЗаМесяц/КолвоДнейВМесяце),2); |
|||
22
progaoff
18.09.15
✎
15:56
|
а что это даст?
|
|||
23
ВедущийП
18.09.15
✎
15:56
|
Тут "Исключение" никогда не сработает, можно оставить только то, что в блоке "Попытка"
Попытка Область.Параметры.ОбщаяВыручка=Окр(ВыборкаДетальныеЗаписи.Сумма/7); Исключение Область.Параметры.ОбщаяВыручка=0; КонецПопытки; |
|||
24
ВедущийП
18.09.15
✎
15:57
|
(22) А зачем ты делал блок "Попытка", не для проверки на ноль? Т.к. он срабатывает только если вызывается исключение, в данном случае оно может быть только при делении на ноль. Вот я и проверяю КолвоДнейВМесяце на равенство нулю, если выполняется, возвращается 0, иначе расчитывается выражение.
|
|||
25
progaoff
18.09.15
✎
16:06
|
(24) т.е можно было без попыток сделать все?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |