1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
ДатаНач = НачалоМесяца(ПериодРегистрацииНач);
ДатаКон = КонецМесяца(ПериодРегистрацииКон);
НачалоПериода = НачалоДня(ДатаНач);
КонецПериода = КонецДня(ДатаКон);
Пока Месяц(НачалоПериода) <= Месяц(КонецПериода) цикл
СуммаВыпуска = ВыборкаНоменклатураВыпуска.ОбщаяСуммаВыпуска;
СуммаВыпускаПР = ?(ВариантОтчета = 3, ВыборкаНоменклатураВыпуска.ОбщаяСуммаВыпускаПР, 0);
СуммаВыпускаВР = ?(ВариантОтчета = 3, ВыборкаНоменклатураВыпуска.ОбщаяСуммаВыпускаВР, 0);
Коэффициент = ?(ВсегоВыпуск = 0, 0, СуммаВыпуска / ВсегоВыпуск);
КоэффициентПР = ?(ВсегоВыпускПР = 0, 0, СуммаВыпускаПР / ВсегоВыпускПР);
КоэффициентВР = ?(ВсегоВыпускВР = 0, 0, СуммаВыпускаВР / ВсегоВыпускВР);
ВыборкаПрямыеЗатраты = ВыборкаНоменклатураВыпуска.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ПрямыеЗатраты");
ИтогоСуммаЗатрат20 = 0;
ИтогоСуммаЗатрат20ПР = 0;
ИтогоСуммаЗатрат20ВР = 0;
ДокументРезультат.НачатьАвтогруппировкуСтрок();
Пока ВыборкаПрямыеЗатраты.Следующий() Цикл
Если ВыборкаПрямыеЗатраты.СуммаПрямыхЗатрат = 0 Тогда
Продолжить;
КонецЕсли;
СуммаПрямыхЗатрат = 0;
СуммаПрямыхЗатратПР = 0;
СуммаПрямыхЗатратВР = 0;
ВыборкаСчетПрямыхЗатрат = ВыборкаПрямыеЗатраты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "КорСчетПрямыхЗатрат");
Если ВыборкаСчетПрямыхЗатрат.Количество() = 0 Тогда
СуммаПрямыхЗатрат = ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатрат;
Если ВариантОтчета = 3 Тогда
СуммаПрямыхЗатратПР = ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатратПР;
СуммаПрямыхЗатратВР = ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатратВР;
КонецЕсли;
Иначе
Пока ВыборкаСчетПрямыхЗатрат.Следующий() Цикл
ВыборкаНоменклатураЗатрат = ВыборкаСчетПрямыхЗатрат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НоменклатураПрямыхЗатрат");
Если ВыборкаНоменклатураЗатрат.Количество() = 0 Тогда
СуммаПрямыхЗатрат = СуммаПрямыхЗатрат + ВыборкаПрямыеЗатраты.СуммаПрямыхЗатрат;
Если ВариантОтчета = 3 Тогда
СуммаПрямыхЗатратПР = СуммаПрямыхЗатратПР + ВыборкаПрямыеЗатраты.СуммаПрямыхЗатратПР;
СуммаПрямыхЗатратВР = СуммаПрямыхЗатратВР + ВыборкаПрямыеЗатраты.СуммаПрямыхЗатратВР;
КонецЕсли;
Иначе
Пока ВыборкаНоменклатураЗатрат.Следующий() Цикл
СуммаПрямыхЗатрат = СуммаПрямыхЗатрат + ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатрат;
Если ВариантОтчета = 3 Тогда
СуммаПрямыхЗатратПР = СуммаПрямыхЗатратПР + ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатратПР;
СуммаПрямыхЗатратВР = СуммаПрямыхЗатратВР + ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатратВР;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ОбластьСтрокаЗатрат.Параметры.НаименованиеЗатрат = ВыборкаПрямыеЗатраты.ПрямыеЗатраты;
ОбластьСтрокаЗатрат.Параметры.СуммаЗатрат = СуммаПрямыхЗатрат * Коэффициент;
ВывестиОбласть(ДокументРезультат, ОбластьСтрокаЗатрат, ОбластьСтрокаЗатратРазницы, ОбластьСтрокаЗатратОкончание, 2, "Группа2", Ложь, "СуммаЗатрат", ВыборкаПрямыеЗатраты, СуммаПрямыхЗатратПР * КоэффициентПР, СуммаПрямыхЗатратВР * КоэффициентВР);
ВыборкаСчетПрямыхЗатрат = ВыборкаПрямыеЗатраты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "КорСчетПрямыхЗатрат");
Пока ВыборкаСчетПрямыхЗатрат.Следующий() Цикл
Если ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатрат = 0 Тогда
Если ВариантОтчета = 3 Тогда
Если ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатратПР = 0 И ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатратВР = 0 Тогда
Продолжить;
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;
КонецЕсли;
ВыборкаНоменклатураЗатрат = ВыборкаСчетПрямыхЗатрат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НоменклатураПрямыхЗатрат");
СуммаПрямыхЗатрат = 0;
СуммаПрямыхЗатратПР = 0;
СуммаПрямыхЗатратВР = 0;
Пока ВыборкаНоменклатураЗатрат.Следующий() Цикл
СуммаПрямыхЗатрат = СуммаПрямыхЗатрат + ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатрат;
Если ВариантОтчета = 3 Тогда
СуммаПрямыхЗатратПР = СуммаПрямыхЗатратПР + ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатратПР;
СуммаПрямыхЗатратВР = СуммаПрямыхЗатратВР + ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатратВР;
КонецЕсли;
КонецЦикла;
СуммаПрямыхЗатрат = ?(СуммаПрямыхЗатрат = 0, ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатрат, СуммаПрямыхЗатрат);
ОбластьСчетЗатрат.Параметры.НаименованиеСчетаЗатрат = РазъяснитьЗатраты(ВыборкаСчетПрямыхЗатрат.КорСчетПрямыхЗатрат);
ОбластьСчетЗатрат.Параметры.СуммаСчетаЗатрат = СуммаПрямыхЗатрат * Коэффициент;
ВывестиОбласть(ДокументРезультат, ОбластьСчетЗатрат, ОбластьСчетЗатратРазницы, ОбластьСчетЗатратОкончание, 3, "Группа3", Ложь, "СуммаСчетаЗатрат", ВыборкаСчетПрямыхЗатрат, СуммаПрямыхЗатратПР * КоэффициентПР, СуммаПрямыхЗатратВР * КоэффициентВР);
ВыборкаНоменклатураЗатрат = ВыборкаСчетПрямыхЗатрат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НоменклатураПрямыхЗатрат");
Пока ВыборкаНоменклатураЗатрат.Следующий() Цикл
ОбластьНоменклатураЗатрат.Параметры.НаименованиеНоменклатурыЗатрат = УправлениеПроизводством.ВыводНаименованияВыпуска(ВыборкаНоменклатураЗатрат.НоменклатураПрямыхЗатрат);
ОбластьНоменклатураЗатрат.Параметры.СуммаНоменклатурыЗатрат = ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатрат * Коэффициент;
ОбластьНоменклатураЗатрат.Параметры.КоличествоНоменклатурыЗатрат = ВыборкаНоменклатураЗатрат.КоличествоПрямыхЗатрат * Коэффициент;
ОбластьНоменклатураЗатрат.Параметры.ЦенаНоменклатурыЗатрат = ?(ВыборкаНоменклатураЗатрат.КоличествоПрямыхЗатрат = 0, 0, ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатрат / ВыборкаНоменклатураЗатрат.КоличествоПрямыхЗатрат);
ВывестиОбласть(ДокументРезультат, ОбластьНоменклатураЗатрат, ОбластьНоменклатураЗатратРазницы, ОбластьНоменклатураЗатратОкончание, 4, "Группа4", Ложь, "СуммаНоменклатурыЗатрат", ВыборкаНоменклатураЗатрат, ?(ВариантОтчета = 3, (ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатратПР) * КоэффициентПР, 0), ?(ВариантОтчета = 3, (ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатратВР) * КоэффициентВР, 0));
ИтогоСуммаЗатрат20 = ИтогоСуммаЗатрат20 + ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатрат * Коэффициент;
Если ВариантОтчета = 3 Тогда
ИтогоСуммаЗатрат20ПР = ИтогоСуммаЗатрат20ПР + ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатратПР * КоэффициентПР;
ИтогоСуммаЗатрат20ВР = ИтогоСуммаЗатрат20ВР + ВыборкаНоменклатураЗатрат.СуммаПрямыхЗатратВР * КоэффициентВР;
КонецЕсли;
КонецЦикла; // НоменклатураЗатрат
Если ВыборкаНоменклатураЗатрат.Количество() = 0 Тогда
ИтогоСуммаЗатрат20 = ИтогоСуммаЗатрат20 + ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатрат * Коэффициент;
Если ВариантОтчета = 3 Тогда
ИтогоСуммаЗатрат20ПР = ИтогоСуммаЗатрат20ПР + ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатратПР * КоэффициентПР;
ИтогоСуммаЗатрат20ВР = ИтогоСуммаЗатрат20ВР + ВыборкаСчетПрямыхЗатрат.СуммаПрямыхЗатратВР * КоэффициентВР;
КонецЕсли;
КонецЕсли;
КонецЦикла; // СчетЗатрат
КонецЦикла; // ПрямыеЗатраты
ОбластьИтого20.Параметры.ИтогоСуммаЗатрат20 = ИтогоСуммаЗатрат20;
ВывестиОбласть(ДокументРезультат, ОбластьИтого20, ОбластьИтого20Разницы, ОбластьИтого20Окончание, 2, "Группа2", Ложь, "ИтогоСуммаЗатрат20", ВыборкаСчетПрямыхЗатрат, ИтогоСуммаЗатрат20ПР, ИтогоСуммаЗатрат20ВР);
Всего25 = ВыборкаНоменклатураВыпуска.Сумма25;
ВсегоСуммаЗатрат = 0;
ВсегоСуммаЗатратПР = 0;
ВсегоСуммаЗатратВР = 0;
Если НЕ Всего25 = 0 Тогда
ВывестиОбласть(ДокументРезультат, ОбластьШапка25, ОбластьШапка25Разницы, ОбластьШапка25Окончание, 2, "Группа2", Ложь, "Текст", ВыборкаНоменклатураВыпуска, "", "");
Выборка25 = ВыборкаНоменклатураВыпуска.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Затраты25");
Пока Выборка25.Следующий() Цикл
ОбластьСтрокаЗатрат.Параметры.НаименованиеЗатрат = Выборка25.Затраты25;
ОбластьСтрокаЗатрат.Параметры.СуммаЗатрат = Выборка25.Сумма25 * Коэффициент;
ВсегоСуммаЗатрат = ВсегоСуммаЗатрат + Выборка25.Сумма25 * Коэффициент;
Если ВариантОтчета = 3 Тогда
Сумма25ПР = (Выборка25.Сумма25ПР) * КоэффициентПР;
Сумма25ВР = (Выборка25.Сумма25ВР) * КоэффициентВР;
Иначе
Сумма25ПР = 0;
Сумма25ВР = 0;
КонецЕсли;
ВсегоСуммаЗатратПР = ВсегоСуммаЗатратПР + Сумма25ПР;
ВсегоСуммаЗатратВР = ВсегоСуммаЗатратВР + Сумма25ВР;
ВывестиОбласть(ДокументРезультат, ОбластьСтрокаЗатрат, ОбластьСтрокаЗатратРазницы, ОбластьСтрокаЗатратОкончание, 0, 0, Ложь, "СуммаЗатрат", Выборка25, Сумма25ПР, Сумма25ВР);
КонецЦикла;
ОбластьИтого25.Параметры.ИтогоСуммаЗатрат25 = ВсегоСуммаЗатрат;
ВывестиОбласть(ДокументРезультат, ОбластьИтого25, ОбластьИтого25Разницы, ОбластьИтого25Окончание, 2, "Группа2", Ложь, "ИтогоСуммаЗатрат25", Выборка25, ВсегоСуммаЗатратПР, ВсегоСуммаЗатратВР);
КонецЕсли; // Затраты25
Всего26 = ВыборкаНоменклатураВыпуска.Сумма26;
ВсегоСуммаЗатрат = 0;
ВсегоСуммаЗатратПР = 0;
ВсегоСуммаЗатратВР = 0;
Если НЕ Всего26 = 0 Тогда
ВывестиОбласть(ДокументРезультат, ОбластьШапка26, ОбластьШапка26Разницы, ОбластьШапка26Окончание, 2, "Группа2", Ложь, "Текст", ВыборкаНоменклатураВыпуска, "", "");
Выборка26 = ВыборкаНоменклатураВыпуска.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Затраты26");
Пока Выборка26.Следующий() Цикл
ОбластьСтрокаЗатрат.Параметры.НаименованиеЗатрат = Выборка26.Затраты26;
ОбластьСтрокаЗатрат.Параметры.СуммаЗатрат = Выборка26.Сумма26 * Коэффициент;
ВсегоСуммаЗатрат = ВсегоСуммаЗатрат + Выборка26.Сумма26 * Коэффициент;
Если ВариантОтчета = 3 Тогда
Сумма26ПР = (Выборка26.Сумма26ПР) * КоэффициентПР;
Сумма26ВР = (Выборка26.Сумма26ВР) * КоэффициентВР;
Иначе
Сумма26ПР = 0;
Сумма26ВР = 0;
КонецЕсли;
ВсегоСуммаЗатратПР = ВсегоСуммаЗатратПР + Сумма26ПР;
ВсегоСуммаЗатратВР = ВсегоСуммаЗатратВР + Сумма26ВР;
ВывестиОбласть(ДокументРезультат, ОбластьСтрокаЗатрат, ОбластьСтрокаЗатратРазницы, ОбластьСтрокаЗатратОкончание, 0, 0, Ложь, "СуммаЗатрат", Выборка26, Сумма26ПР, Сумма26ВР);
КонецЦикла;
ОбластьИтого26.Параметры.ИтогоСуммаЗатрат26 = ВсегоСуммаЗатрат;
ВывестиОбласть(ДокументРезультат, ОбластьИтого26, ОбластьИтого26Разницы, ОбластьИтого26Окончание, 2, "Группа2", Ложь, "ИтогоСуммаЗатрат26", Выборка26, ВсегоСуммаЗатратПР, ВсегоСуммаЗатратВР);
КонецЕсли; // Затраты26
НачОстНЗП = ВыборкаНоменклатураВыпуска.НачОстНЗП * Коэффициент;
КонОстНЗП = ВыборкаНоменклатураВыпуска.КонОстНЗП * Коэффициент;
НачОстНЗППР = 0;
КонОстНЗППР = 0;
НачОстНЗПВР = 0;
КонОстНЗПВР = 0;
Если ВариантОтчета = 3 Тогда
НачОстНЗППР = (ВыборкаНоменклатураВыпуска.НачОстНЗППР) * КоэффициентПР;
КонОстНЗППР = (ВыборкаНоменклатураВыпуска.КонОстНЗППР) * КоэффициентПР;
НачОстНЗПВР = (ВыборкаНоменклатураВыпуска.НачОстНЗПВР) * КоэффициентВР;
КонОстНЗПВР = (ВыборкаНоменклатураВыпуска.КонОстНЗПВР) * КоэффициентВР;
КонецЕсли;
Если НачОстНЗП <> 0 Или КонОстНЗП <> 0
Или НачОстНЗППР <> 0 Или КонОстНЗППР <> 0
Или НачОстНЗПВР <> 0 Или КонОстНЗПВР <> 0 Тогда
ОбластьНЗПНач.Параметры.СуммаНЗПнаНачало = НачОстНЗП;
ОбластьНЗПКон.Параметры.СуммаНЗПнаКонец = КонОстНЗП;
ОбластьНЗПИтого.Параметры.ИтогоНЗП = НачОстНЗП - КонОстНЗП;
ОбластьНЗПНач.Параметры.НачалоПериода = ДатаНач;
ОбластьНЗПКон.Параметры.КонецПериода = ДатаКон;
ВывестиОбласть(ДокументРезультат, ОбластьНЗПНач, ОбластьНЗПНачРазницы, ОбластьНЗПНачОкончание, 2, "Группа2", Ложь, "НачОстНЗП", ВыборкаНоменклатураВыпуска, НачОстНЗППР, НачОстНЗПВР);
ВывестиОбласть(ДокументРезультат, ОбластьНЗПКон, ОбластьНЗПКонРазницы, ОбластьНЗПКонОкончание, 2, "Группа2", Ложь, "КонОстНЗП", ВыборкаНоменклатураВыпуска, КонОстНЗППР, КонОстНЗПВР);
ВывестиОбласть(ДокументРезультат, ОбластьНЗПИтого, ОбластьНЗПИтогоРазницы, ОбластьНЗПИтогоОкончание, 2, "Группа2", Ложь, "ИтогоНЗП", ВыборкаНоменклатураВыпуска, - КонОстНЗППР + НачОстНЗППР, - КонОстНЗПВР + НачОстНЗПВР);
КонецЕсли; // НЗП
ДокументРезультат.ЗакончитьАвтогруппировкуСтрок();
ВывестиОбласть(ДокументРезультат, ОбластьОкончаниеТаблицы, ОбластьОкончаниеТаблицыРазницы, ОбластьОкончаниеТаблицыОкончание, 1, "Группа1", Ложь, "Текст", ВыборкаНоменклатураВыпуска, "", "");
КонецЦикла; // НоменклатураВыпуска
КонецЦикла; // НоменклатурнаяГруппа
КонецЦикла; // Подразделение
ОбластьПодвал.Параметры.ТекстПримечания = ?(ВариантОтчета = 3, "Постоянные разницы: Постоянные разницы в оценке стоимости активов и обязательств.
|Временные разницы: Временные разницы в оценке стоимости активов и обязательств.", "");
ДокументРезультат.Вывести(ОбластьПодвал);
ВысотаПодписи = ДокументРезультат.Области.Подвал.Низ - ДокументРезультат.Области.Подвал.Верх;
ДокументРезультат.Области.Подвал.Видимость = ПоказыватьПодписи;
ДокументРезультат.ИмяПараметровПечати = "Калькуляция себестоимости";
УправлениеОтчетами.УстановитьКолонтитулыПоУмолчанию(ДокументРезультат, ЗаголовокОтчета, Строка(глЗначениеПеременной("глТекущийПользователь")));
НачалоПериода = ДобавитьМесяц(НачалоПериода,1);
КонецЦикла; // Дублирование отчета
КонецПроцедуры // СформироватьОтчет
#КонецЕсли |