С Новым годом! Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 20.06.2013
Сообщений: 12
1

1C ЗУП при запуске отработки происходит экстренное прерывание работы с ошибкой

03.09.2013, 16:58. Показов 3522. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv8.exe
Версия приложения: 8.2.14.528
Отметка времени приложения: 4e30380c
Имя модуля с ошибкой: 1cv8.exe
Версия модуля с ошибкой: 8.2.14.528
Отметка времени модуля с ошибкой: 4e30380c
Код исключения: c0000005
Смещение исключения: 0001ddd0
Версия ОС: 6.1.7601.2.1.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789

вот ешо вариант

Имя события проблемы: BEX
Имя приложения: 1cv8.exe
Версия приложения: 8.2.14.528
Отметка времени приложения: 4e30380c
Имя модуля с ошибкой: StackHash_0a9e
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 00000000
Смещение исключения: 0018e294
Код исключения: c0000005
Данные исключения: 00000008
Версия ОС: 6.1.7601.2.1.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789

Платформа 1С ЗУП. При изменении условия подсчёта итогов в запросе модуля обработки 1С "вываливается" с такими вот стаками ошибок, НО при выполнении этого же запроса в консоле запросов он проходит без малейшего намёка на "тяжесть" выполнения, запрос зело велик)) посему привожу только часть, 1-ая часть запрос до:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|УПОРЯДОЧИТЬ ПО
|   ВТДанныеОНачислениях.ВидРасчета.КатегорияРасчета.Код,
|   ВТДанныеОНачислениях.ВидРасчета.Наименование,
|   ВидРасчета
|ИТОГИ
|   СУММА(ОтработаноДней),
|   СУММА(ОтработаноЧасов),
|   СУММА(ОстатокНаНачало),
|   СУММА(Начислено),
|   СУММА(Удержано),
|   СУММА(Выплачено),
|   СУММА(ОстатокНаОкончание)
|ПО
|   ФизЛицо,
|   Раздел,
|   МестоРаботы,
|   ВидРасчета,
|   ПериодДействия,
|   Регистратор
2-ая часть после:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|УПОРЯДОЧИТЬ ПО
|   ВТДанныеОНачислениях.ВидРасчета.КатегорияРасчета.Код,
|   ВТДанныеОНачислениях.ВидРасчета.Наименование,
|   ВидРасчета
|ИТОГИ
|   СУММА(ОтработаноДней),
|   СУММА(ОтработаноЧасов),
|   СУММА(ОстатокНаНачало),
|   СУММА(ВЫБОР КОГДА ВТДанныеОНачислениях.ВидРасчета <> ""Мат.выгода"" 
|               ТОГДА ВТДанныеОНачислениях.Начислено конец) как Начислено,
|   СУММА(Удержано),
|   СУММА(Выплачено),
|   СУММА(ОстатокНаОкончание)
|ПО
|   ФизЛицо,
|   Раздел,
|   МестоРаботы,
|   ВидРасчета,
|   ПериодДействия,
|   Регистратор
Поможите советом как с этим бороться, а ешо лучше объясните как читать подобные стаки с ошибками или где об этом можно почитать

Добавлено через 3 часа 59 минут
да ладно, неужели нет ни каких идей ?!
гурЫ 1С-а подмогните чуток, всё до чего удалось додумать перепробовал даже ТиИ делал не помогло)
также пробовал обойти это условие в модуле формы обработки дык там получается презамечательнейшая весЧ дано:

1C
1
2
3
4
5
6
7
8
9
10
11
12
Если ВидРасч = "Мат.выгода" тогда НатурДоход = НатурДоход + ВыборкаНачальная.Начислено;
КонецЕсли;
Если (СчРазделов>1) и (СчРазделов<5) тогда 
    ОбластьРазделНачало.Параметры.Раздел = Отступ + ВыборкаТекущая.Раздел;
        Если (ФлагСумма=1) и (СчРазделов=2) тогда 
            ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено - НатурДоход;
        ИначеЕсли (ФлагСумма=1) и (СчРазделов<>2) тогда
            ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено;
        Иначе
            ОбластьРазделСумма.Параметры.Результат = 0;
        КонецЕсли;
КонецЕсли;
нужная мне сумма запихивается в переменную НатурДоход далее начинается для меня не понятное: в первом разделе условия, там где мне нужно,
Если (ФлагСумма=1) и (СчРазделов=2) тогда
ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено - НатурДоход;
переменная НатурДоход приходит пустой = 0, а если поставить её во 2-ую часть условия,
ИначеЕсли (ФлагСумма=1) и (СчРазделов<>2) тогда
ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено;
то отрабатывается как надо, почему так?! Понимаю что не очень информативно, но как смог.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.09.2013, 16:58
Ответы с готовыми решениями:

Почему при чтении бинарного файла происходит экстренное завершение программы?
в Windows XP при чтение бинарного файла происходит екстренное завершение программы !!! /*Writing...

В каких случаях происходит прерывание при нарушении границ массива?
volatile int x, y; int d = (int*)x - (int*)y; y = 4; ////или так volatile int x, y; y = 4;...

Происходит экстренное завершение приложения без каких-либо ошибок
Привет всем. В общем такая проблема. Написал я прогу и начал с ней работать. Запускаю прямо...

При запуске программа выпадает с ошибкой
Подскажите почему программа при запуске завершается с ошибкой? Народ никак не могу разобраться в...

7
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
03.09.2013, 20:17 2
дык, не поймёшь же ничего: о чём вопрос-то?
Цитата Сообщение от g_r_a_y Посмотреть сообщение
Платформа 1С ЗУП.
это конфигурацияш. Платформа - 8.2.14 Поставьте посвежее
Цитата Сообщение от g_r_a_y Посмотреть сообщение
в запросе модуля обработки 1С
одна она, что ли?
0
1 / 1 / 0
Регистрация: 20.06.2013
Сообщений: 12
04.09.2013, 10:54  [ТС] 3
странно как-то, вы увидели ошибку в терминологии, но не увидели вопроса..
хорошо, попробую по новой и кратко, если разбить мои первые объединнённые посты, то получится следующее:
в первой части мною приведен текст 2-ух ошибок
Кликните здесь для просмотра всего текста
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: 1cv8.exe
Версия приложения: 8.2.14.528
Отметка времени приложения: 4e30380c
Имя модуля с ошибкой: 1cv8.exe
Версия модуля с ошибкой: 8.2.14.528
Отметка времени модуля с ошибкой: 4e30380c
Код исключения: c0000005
Смещение исключения: 0001ddd0
Версия ОС: 6.1.7601.2.1.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789

вот ешо вариант

Имя события проблемы: BEX
Имя приложения: 1cv8.exe
Версия приложения: 8.2.14.528
Отметка времени приложения: 4e30380c
Имя модуля с ошибкой: StackHash_0a9e
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 00000000
Смещение исключения: 0018e294
Код исключения: c0000005
Данные исключения: 00000008
Версия ОС: 6.1.7601.2.1.0.16.7
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
и кратко описано действие при котором "вызываются" эти ошибки
При изменении условия подсчёта итогов в запросе модуля обработки 1С "вываливается" с такими вот стаками ошибок, НО при выполнении этого же запроса в консоле запросов он проходит без малейшего намёка на "тяжесть" выполнения
далее приведены два куска кода обозначенные как до и после, соответственно до - кусок кода выполняемый без ошибок, после - кусок кода "вызовающий" упомянутые ошибки
Кликните здесь для просмотра всего текста
1-ая часть запрос до:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|УПОРЯДОЧИТЬ ПО
|   ВТДанныеОНачислениях.ВидРасчета.КатегорияРасчета.Код,
|   ВТДанныеОНачислениях.ВидРасчета.Наименование,
|   ВидРасчета
|ИТОГИ
|   СУММА(ОтработаноДней),
|   СУММА(ОтработаноЧасов),
|   СУММА(ОстатокНаНачало),
|   СУММА(Начислено),
|   СУММА(Удержано),
|   СУММА(Выплачено),
|   СУММА(ОстатокНаОкончание)
|ПО
|   ФизЛицо,
|   Раздел,
|   МестоРаботы,
|   ВидРасчета,
|   ПериодДействия,
|   Регистратор
2-ая часть после:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|УПОРЯДОЧИТЬ ПО
|   ВТДанныеОНачислениях.ВидРасчета.КатегорияРасчета.Код,
|   ВТДанныеОНачислениях.ВидРасчета.Наименование,
|   ВидРасчета
|ИТОГИ
|   СУММА(ОтработаноДней),
|   СУММА(ОтработаноЧасов),
|   СУММА(ОстатокНаНачало),
|   СУММА(ВЫБОР КОГДА ВТДанныеОНачислениях.ВидРасчета <> ""Мат.выгода"" 
|               ТОГДА ВТДанныеОНачислениях.Начислено конец) как Начислено,
|   СУММА(Удержано),
|   СУММА(Выплачено),
|   СУММА(ОстатокНаОкончание)
|ПО
|   ФизЛицо,
|   Раздел,
|   МестоРаботы,
|   ВидРасчета,
|   ПериодДействия,
|   Регистратор
далее приведена моя "мольба" к 1С сообществу и в ней, как я наивно полагал, присутствует вопрос правда без знака ?
Поможите советом как с этим бороться, а ешо лучше объясните как читать подобные стаки с ошибками или где об этом можно почитать
если дополнить "мольбу", то
Поможите советом как с этим бороться или подскажите как (верно,по другому) наложить условие на формирование итогов, а ешо лучше объясните как читать подобные стаки с ошибками или где об этом можно почитать
далле приведены мои скромные потуги в попытке получить требуемое
Кликните здесь для просмотра всего текста
1C
1
2
3
4
5
6
7
8
9
10
11
12
Если ВидРасч = "Мат.выгода" тогда НатурДоход = НатурДоход + ВыборкаНачальная.Начислено;
КонецЕсли;
Если (СчРазделов>1) и (СчРазделов<5) тогда 
    ОбластьРазделНачало.Параметры.Раздел = Отступ + ВыборкаТекущая.Раздел;
        Если (ФлагСумма=1) и (СчРазделов=2) тогда 
            ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено - НатурДоход;
        ИначеЕсли (ФлагСумма=1) и (СчРазделов<>2) тогда
            ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено;
        Иначе
            ОбластьРазделСумма.Параметры.Результат = 0;
        КонецЕсли;
КонецЕсли;
но и тут столкунулся с непреодолимыми трудностями))
Кликните здесь для просмотра всего текста
нужная мне сумма запихивается в переменную НатурДоход далее начинается для меня не понятное: в первом разделе условия, там где мне нужно,
Если (ФлагСумма=1) и (СчРазделов=2) тогда
ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено - НатурДоход;
переменная НатурДоход приходит пустой = 0, а если поставить её во 2-ую часть условия,
ИначеЕсли (ФлагСумма=1) и (СчРазделов<>2) тогда
ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено - НатурДоход;
то отрабатывается как надо, почему так?!
тут, наверное не лишним будет упомянуть, что в этом модуле формы внешней обработки компануются данные для вывода в макет есессна с обходом запросов группировками, в данном случае код находиться в разделе группировки по разделам, переменные СчРазделов(n) являются "вместилищем" наименований разделов, причём в ВыборкаНачальная.Начислено для раздела СчРазделов = 2 есть данные, а на выходе только 0 ?!
Может кто-нибудь объяснить, почему переменная НатурДоход находясь в рамках одной и тойже группировки имеет разные значения в приведенном выше условии ? Укажите (предположите) какие ещё могут быть ошибки, а они могут быть, так как я далеко не специалист 1с, и могу их просто не заметить.
0
Модератор
Эксперт 1С
4029 / 2974 / 591
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
04.09.2013, 11:59 4
Либо это условие не Истинно
1C
1
2
Если ВидРасч = "Мат.выгода" тогда НатурДоход = НатурДоход + ВыборкаНачальная.Начислено;
КонецЕсли;
Сложно понять по приведенному вами куску!! Нужно видеть где инициализируется переменная НатурДоход

Добавлено через 4 минуты
Win 7 ?
0
1 / 1 / 0
Регистрация: 20.06.2013
Сообщений: 12
04.09.2013, 13:10  [ТС] 5
windows 2008 r2
проверял Истинно.
переменная НатурДоход инициализируется в самом начале модуля формы внешней обработки
1C
1
Перем НатурДоход;
вот код процедуры где разворачивается основная драмма)
1C
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
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
Процедура ВывестиГруппировку(ВыборкаНачальная, НомерГруппировки=0, СчРазделов=0, Отступ="")
    ЗначениеГруппировки = ТЗ_Группировки.Получить(НомерГруппировки).Группировка;
    Если ЗначениеГруппировки = "МестоРаботы" тогда
        //ЗначениеГруппировки = "Сотрудник";
    ИначеЕсли ЗначениеГруппировки = "Раздел" тогда
        СчРазделов = 0;
        НомерРаздела = 0;
    КонецЕсли;
    ВыборкаТекущая = ВыборкаНачальная.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, ЗначениеГруппировки);
    ВидРасч = СокрЛП(ВыборкаНачальная.ВидРасчета);                                                                                              // © MS
    Если ВидРасч = "Мат.выгода" тогда НатурДоход = НатурДоход + ВыборкаНачальная.Начислено;
    КонецЕсли;
    Пока ВыборкаТекущая.Следующий() Цикл
        ОбработкаПрерыванияПользователя();
        Если ЗначениеГруппировки = "Раздел" тогда
            СчРазделов = СчРазделов + 1;
            НомерРаздела = ?(ЗначениеЗаполнено(ВыборкаТекущая.Раздел),Число(Лев(ВыборкаТекущая.Раздел,1)),0);
            //Разделы 1 и 5 (Остаток) выводим всегда, даже если они нулевые 
            //2,3,4 нулевые не выводим
            Если (СчРазделов = 1) тогда
                Если ВыборкаТекущая.ОстатокНаНачало >= 0 тогда
                    //ОбластьРазделНачало.Параметры.Раздел = " "+ВыборкаРазделов.Раздел + " за учреждением";
                    ОбластьРазделНачало.Параметры.Раздел = Отступ + "1. Долг на начало за учреждением";
                    ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.ОстатокНаНачало;
                Иначе
                    //ОбластьРазделНачало.Параметры.Раздел = " "+ВыборкаРазделов.Раздел + " за сотрудником";
                    ОбластьРазделНачало.Параметры.Раздел = Отступ + "1. Долг на начало за сотрудником";
                    ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.ОстатокНаНачало;
                КонецЕсли;
                Если СчРазделов<>НомерРаздела тогда
                    ДокументРезультат.Вывести(ОбластьРазделНачало);
                    ДокументРезультат.Присоединить(ОбластьРазделПериод);
                    ДокументРезультат.Присоединить(ОбластьРазделВремя);
                    ДокументРезультат.Присоединить(ОбластьРазделСумма);
                    Если ДвеКолонки Тогда
                        ДокументРезультат.Присоединить(ОбластьРазделРазделитель);
                        ДокументРезультат.Присоединить(ОбластьРазделНачало);
                        ДокументРезультат.Присоединить(ОбластьРазделПериод);
                        ДокументРезультат.Присоединить(ОбластьРазделВремя);
                        ДокументРезультат.Присоединить(ОбластьРазделСумма);
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
            СчРазделов=НомерРаздела;
            Если (СчРазделов = 5) тогда
                Если ВыборкаТекущая.ОстатокНаОкончание >= 0 тогда
                    //ОбластьРазделНачало.Параметры.Раздел = " "+ВыборкаРазделов.Раздел + " за учреждением";
                    ОбластьРазделНачало.Параметры.Раздел = Отступ + "5. К выдаче";//"5. Долг на окончание за учреждением";    // © MS
                    ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.ОстатокНаОкончание;
                Иначе
                    //ОбластьРазделНачало.Параметры.Раздел = " "+ВыборкаРазделов.Раздел + " за сотрудником";
                    ОбластьРазделНачало.Параметры.Раздел = Отступ + "5. Долг на окончание за сотрудником";
                    ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.ОстатокНаОкончание;
                КонецЕсли;
            КонецЕсли;
            
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            Если (СчРазделов>1) и (СчРазделов<5) 
                ОбластьРазделНачало.Параметры.Раздел = Отступ + ВыборкаТекущая.Раздел;
                
                Если (ФлагСумма=1) и (СчРазделов=2) тогда //В 1 и 2 разделах сумму выводим всегда, в 3, 4, 5 - в зависимости от флага
                    ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено - НатурДоход;
                ИначеЕсли (ФлагСумма=1) и (СчРазделов<>2) тогда
                    ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.Начислено + ВыборкаТекущая.Удержано + ВыборкаТекущая.Выплачено;
                Иначе
                    ОбластьРазделСумма.Параметры.Результат = 0;
                КонецЕсли;
            КонецЕсли;
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            Если СчРазделов <> 1 Тогда                                                        // © MS
                ДокументРезультат.Вывести(ОбластьРазделНачало);
                ДокументРезультат.Присоединить(ОбластьРазделПериод);
                ДокументРезультат.Присоединить(ОбластьРазделВремя);
                ДокументРезультат.Присоединить(ОбластьРазделСумма);
                Если ДвеКолонки Тогда
                    ДокументРезультат.Присоединить(ОбластьРазделРазделитель);
                    ДокументРезультат.Присоединить(ОбластьРазделНачало);
                    ДокументРезультат.Присоединить(ОбластьРазделПериод);
                    ДокументРезультат.Присоединить(ОбластьРазделВремя);
                    ДокументРезультат.Присоединить(ОбластьРазделСумма);
                КонецЕсли;
            КонецЕсли;
        ИначеЕсли (ЗначениеГруппировки = "МестоРаботы") тогда
            Если (СчРазделов=2) и (ЗначениеЗаполнено(ВыборкаТекущая.МестоРаботы)) тогда
                //Форматируем таб.номер
                ТН = СокрЛП(ВыборкаТекущая.МестоРаботы.Код);
                ТН = СтрЗаменить(ТН,"0"," ");
                ТН = СокрЛ(ТН);
                ТН = СтрЗаменить(ТН," ","0");
                
                    //Данные сотрудника (места работы)
                    Должность = "";
                    Подразделение = "";
                    ЗанимаемыхСтавок = "";
                    ВидРасчета = "";
                    Размер = "";
                    НормаВремени = "";
                    НайденыДанныеСотрудника = Истина;
                    Если ВыборкаДанныеСотрудников.Сотрудник <> ВыборкаТекущая.МестоРаботы тогда
                        СтруктураПоиска = Новый Структура("Сотрудник");
                        СтруктураПоиска.Сотрудник = ВыборкаТекущая.МестоРаботы;
                        ВыборкаДанныеСотрудников.Сбросить();
                        НайденыДанныеСотрудника = ВыборкаДанныеСотрудников.НайтиСледующий(СтруктураПоиска);
                    КонецЕсли;
                    Если НайденыДанныеСотрудника тогда
                        Должность = СокрЛП(ВыборкаДанныеСотрудников.Должность);
                        Подразделение = "/"+СокрЛП(ВыборкаДанныеСотрудников.Подразделение);
                        ЗанимаемыхСтавок = СокрЛП(ВыборкаДанныеСотрудников.ЗанимаемыхСтавок);
                        ВидРасчета = СокрЛП(ВыборкаДанныеСотрудников.ВидРасчета);
                        Если ЗначениеЗаполнено(ВидРасчета) тогда
                            ВидРасчета = ВидРасчета +": ";  
                        КонецЕсли;
                        Размер = Формат(ВыборкаДанныеСотрудников.Размер,"ЧДЦ=2");
                        Если ЗначениеЗаполнено(ВыборкаДанныеСотрудников.НормаДнейПоИндГрафику) или ЗначениеЗаполнено(ВыборкаДанныеСотрудников.НормаЧасовПоИндГрафику) тогда
                            НормаВремени = СокрЛП(ВыборкаДанныеСотрудников.НормаДнейПоИндГрафику)+"/"+СокрЛП(ВыборкаДанныеСотрудников.НормаЧасовПоИндГрафику);
                        Иначе
                            НормаВремени = СокрЛП(ВыборкаДанныеСотрудников.НормаДней)+"/"+СокрЛП(ВыборкаДанныеСотрудников.НормаЧасов);
                        КонецЕсли;
                    Иначе
                        Если ВыборкаТекущая.МестоРаботы.ВидДоговора = Перечисления.ВидыДоговоровСФизЛицами.Подряда тогда
                            Должность = "По договору подряда";
                        КонецЕсли;
                    КонецЕсли;
                    
                    //ШАПКА МЕСТОРАБОТЫ ДЛЯ НАЧИСЛЕНИЙ 
                    ОбластьРаздел1Начало.Параметры.Раздел = "Таб.№"+ТН+" "+Должность+Подразделение;
                    ДокументРезультат.Вывести(ОбластьРаздел1Начало);
                    ДокументРезультат.Присоединить(ОбластьРаздел1Период);
                    ДокументРезультат.Присоединить(ОбластьРаздел1Время);
                    ДокументРезультат.Присоединить(ОбластьРаздел1Сумма);
                    Если ДвеКолонки Тогда
                        ДокументРезультат.Присоединить(ОбластьРаздел1Разделитель);
                        ДокументРезультат.Присоединить(ОбластьРаздел1Начало);
                        ДокументРезультат.Присоединить(ОбластьРаздел1Период);
                        ДокументРезультат.Присоединить(ОбластьРаздел1Время);
                        ДокументРезультат.Присоединить(ОбластьРаздел1Сумма);
                    КонецЕсли;
                        ОбластьСтрокаНачало.Параметры.Строка = "Кол.ставок: "+ЗанимаемыхСтавок+", " + ВидРасчета+Размер+ ","+ "Норма: "+НормаВремени;
                        ДокументРезультат.Вывести(ОбластьСтрокаНачало);
                        ДокументРезультат.Присоединить(ОбластьСтрокаПериод);
                        ДокументРезультат.Присоединить(ОбластьСтрокаВремя);
                        ДокументРезультат.Присоединить(ОбластьСтрокаСумма);
                        Если ДвеКолонки Тогда
                            ДокументРезультат.Присоединить(ОбластьСтрокаРазделитель);
                            ДокументРезультат.Присоединить(ОбластьСтрокаНачало);
                            ДокументРезультат.Присоединить(ОбластьСтрокаПериод);
                            ДокументРезультат.Присоединить(ОбластьСтрокаВремя);
                            ДокументРезультат.Присоединить(ОбластьСтрокаСумма);
                        КонецЕсли;
            КонецЕсли;
        Иначе
            ОбластьРазделНачало.Параметры.Раздел = Отступ + ВыборкаТекущая[ЗначениеГруппировки];
            //До группировки раздел - результат не выводим
            //Для 1, 5 раздела - выводим всегда, для 2, 3, 4 - взависимости от флага 
            Если ((СчРазделов > 0) и (ФлагСумма=1)) или (СчРазделов=1) или (СчРазделов=5) тогда                                                            // © MS
                ОбластьРазделСумма.Параметры.Результат = ВыборкаТекущая.ОстатокНаНачало+ВыборкаТекущая.Начислено+ВыборкаТекущая.Удержано+ВыборкаТекущая.Выплачено+ВыборкаТекущая.ОстатокНаОкончание;
            Иначе
                ОбластьРазделСумма.Параметры.Результат = 0;
            КонецЕсли;
            ДокументРезультат.Вывести(ОбластьРазделНачало);
            ДокументРезультат.Присоединить(ОбластьРазделПериод);
            ДокументРезультат.Присоединить(ОбластьРазделВремя);
            ДокументРезультат.Присоединить(ОбластьРазделСумма);
            Если ДвеКолонки Тогда
                ДокументРезультат.Присоединить(ОбластьРазделРазделитель);
                ДокументРезультат.Присоединить(ОбластьРазделНачало);
                ДокументРезультат.Присоединить(ОбластьРазделПериод);
                ДокументРезультат.Присоединить(ОбластьРазделВремя);
                ДокументРезультат.Присоединить(ОбластьРазделСумма);
            КонецЕсли;
        КонецЕсли;
        
        //Следующая группировка
        ВывестиВидыРасчетов = 1;
        Если НомерГруппировки < (ТЗ_Группировки.Количество()-1) тогда
            Для СчГруппировки = НомерГруппировки+1 по ТЗ_Группировки.Количество()-1 Цикл
                Если ((ТЗ_Группировки.Получить(СчГруппировки).ФлагНачисления
                    + ТЗ_Группировки.Получить(СчГруппировки).ФлагУдержания
                    + ТЗ_Группировки.Получить(СчГруппировки).ФлагВыплаты
                    + ТЗ_Группировки.Получить(СчГруппировки).ФлагСальдо) > 0)
                    или (ТЗ_Группировки.Получить(СчГруппировки).Группировка="Раздел") тогда
                    Если (СчРазделов = 0) и (ТЗ_Группировки.Получить(СчГруппировки).Группировка="МестоРаботы") тогда 
                        //место работы может быть только после разделов
                    ИначеЕсли (СчРазделов = 0) или (ТЗ_Группировки.Получить(СчГруппировки).Группировка="Раздел") //Разделы выводим всегда
                    или ((СчРазделов = 1) и (ТЗ_Группировки.Получить(СчГруппировки).ФлагСальдо = 1))      //находимся внутри 1 раздела и стоит флаг сальдо
                    или ((СчРазделов = 5) и (ТЗ_Группировки.Получить(СчГруппировки).ФлагСальдо = 1))      //находимся внутри 5 раздела и стоит флаг сальдо
                    или ((СчРазделов = 2) и (ТЗ_Группировки.Получить(СчГруппировки).ФлагНачисления = 1))  //находимся внутри 2 раздела и стоит флаг начисления
                    или ((СчРазделов = 3) и (ТЗ_Группировки.Получить(СчГруппировки).ФлагУдержания = 1))    //находимся внутри 3 раздела и стоит флаг удержания
                    или ((СчРазделов = 4) и (ТЗ_Группировки.Получить(СчГруппировки).ФлагВыплаты = 1))    //находимся внутри 4 раздела и стоит флаг выплаты
                    тогда
                        ВывестиВидыРасчетов = 0;
                        ВывестиГруппировку(ВыборкаТекущая, СчГруппировки, СчРазделов, Отступ + "  ");
                        Прервать;
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
        
        //ВИДЫ РАСЧЕТОВ
        Если ВывестиВидыРасчетов = 1 тогда
            Если (СчРазделов > 1) и (СчРазделов < 5) тогда  
                //ВИДЫ РАСЧЕТОВ - НАЧИСЛЕНО, УДЕРЖАНО, ВЫПЛАЧЕНО
                ВыборкаВР = ВыборкаТекущая.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ВидРасчета");
                Пока ВыборкаВР.Следующий() Цикл
                    //ПЕРИОДЫ
                    ВыборкаПериодов = ВыборкаВР.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ПериодДействия" );
                    Пока ВыборкаПериодов.Следующий() Цикл
                        //выводим виды расчета
                        ВывестиВидРасчета(ВыборкаПериодов, СчГруппировки, СчРазделов, Отступ);
                    КонецЦикла;
                КонецЦикла;
            КонецЕсли;
        КонецЕсли;
        
        //ИТОГИ
        Если ((ФлагИтоги=1) или (ЗначениеГруппировки = "МестоРаботы")) и (СчРазделов>1) и (СчРазделов<5) тогда
            Если (ЗначениеГруппировки = "МестоРаботы") тогда
                Если (СчРазделов=2) и (ЗначениеЗаполнено(ВыборкаТекущая.МестоРаботы)) и (ВыборкаТекущая.Количество()>1) тогда
                    ОбластьИтогоНачало.Параметры.ИтогоИмя = "Итого по Таб.№" + ТН;
                    ОбластьИтогоСумма.Параметры.Результат =  ВыборкаТекущая.Начислено;
                Иначе
                    Продолжить;
                КонецЕсли;
            ИначеЕсли (ЗначениеГруппировки = "Раздел") тогда
                Если СчРазделов = 2 тогда
                    ОбластьИтогоНачало.Параметры.ИтогоИмя = Отступ + "Итого начислено";
                    ОбластьИтогоСумма.Параметры.Результат =  ВыборкаТекущая.Начислено;
                ИначеЕсли СчРазделов = 3 тогда
                    ОбластьИтогоНачало.Параметры.ИтогоИмя = Отступ + "Итого удержано";
                    ОбластьИтогоСумма.Параметры.Результат =  ВыборкаТекущая.Удержано;
                ИначеЕсли СчРазделов = 4 тогда
                    ОбластьИтогоНачало.Параметры.ИтогоИмя = Отступ + "Итого выплачено";
                    ОбластьИтогоСумма.Параметры.Результат =  ВыборкаТекущая.Выплачено;
                КонецЕсли;
            Иначе
                ОбластьИтогоНачало.Параметры.ИтогоИмя = Отступ + "Итого " + ВыборкаТекущая[ЗначениеГруппировки];
                ОбластьИтогоСумма.Параметры.Результат = ВыборкаТекущая.ОстатокНаНачало+ВыборкаТекущая.Начислено+ВыборкаТекущая.Удержано+ВыборкаТекущая.Выплачено+ВыборкаТекущая.ОстатокНаОкончание;
            КонецЕсли;
            
            ДокументРезультат.Вывести(ОбластьИтогоНачало);
            ДокументРезультат.Присоединить(ОбластьИтогоПериод);
            ДокументРезультат.Присоединить(ОбластьИтогоВремя);
            ДокументРезультат.Присоединить(ОбластьИтогоСумма);
            Если ДвеКолонки Тогда
                ДокументРезультат.Присоединить(ОбластьИтогоРазделитель);
                ДокументРезультат.Присоединить(ОбластьИтогоНачало);
                ДокументРезультат.Присоединить(ОбластьИтогоПериод);
                ДокументРезультат.Присоединить(ОбластьИтогоВремя);
                ДокументРезультат.Присоединить(ОбластьИтогоСумма);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    //Если остаток нулевой
    Если ЗначениеГруппировки = "Раздел" тогда
        Если (СчРазделов <> 5) тогда 
            ОбластьРазделНачало.Параметры.Раздел = Отступ + "5. К выдаче";//"5. Долг на окончание за учреждением";                 © MS
            ОбластьРазделСумма.Параметры.Результат = 0;
            ДокументРезультат.Вывести(ОбластьРазделНачало);
            ДокументРезультат.Присоединить(ОбластьРазделПериод);
            ДокументРезультат.Присоединить(ОбластьРазделВремя);
            ДокументРезультат.Присоединить(ОбластьРазделСумма);
            Если ДвеКолонки Тогда
                ДокументРезультат.Присоединить(ОбластьРазделРазделитель);
                ДокументРезультат.Присоединить(ОбластьРазделНачало);
                ДокументРезультат.Присоединить(ОбластьРазделПериод);
                ДокументРезультат.Присоединить(ОбластьРазделВремя);
                ДокументРезультат.Присоединить(ОбластьРазделСумма);
            КонецЕсли;
        КонецЕсли;
        СчРазделов = 0;
        НомерРаздела = 0;
    КонецЕсли;
КонецПроцедуры
0
20 / 20 / 0
Регистрация: 29.08.2013
Сообщений: 57
04.09.2013, 16:43 6
А какой тип значений у "ВыборкаНачальная". Если РезультатЗапроса, то объясните мне недалекому, что попадает в "НатурДоход" строкой
1C
1
2
    Если ВидРасч = "Мат.выгода" тогда НатурДоход = НатурДоход + ВыборкаНачальная.Начислено;
    КонецЕсли;
?
0
Модератор
Эксперт 1С
4029 / 2974 / 591
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
04.09.2013, 17:52 7
1C
1
2
3
4
5
6
7
8
НатурДоход = 0;
Если ВидРасч = "Мат.выгода" тогда 
    НатурДоход = НатурДоход + ВыборкаНачальная.Начислено;
КонецЕсли;
Если НатурДоход = 0 Тогда
    Сообщить("Условие = "+Строка(ВидРасч = "Мат.выгода"));
    Сообщить("Значение выборки = "+Строка(ВыборкаНачальная.Начислено));
КонецЕсли;
1
1 / 1 / 0
Регистрация: 20.06.2013
Сообщений: 12
05.09.2013, 16:29  [ТС] 8
Спасибо всем откликнувшимся, помоч не помогли, но хотябы пнули в какую-то сторону мысля покатилась дальше))
Всё оказалось немного сложнее чем казалось))
Из приведённой выше мной процедуры Вы наверное поняли, что это часть обработки расчётного листка, но не типового.. пока для меня точно понятно только одно, что толково обьяснить, так чтоб поняли, как гулятют тут запросы с переменными у меня вероятно не получится.
Тему, вероятно, можно считать закрытой, если конечно нет больше идей почему после таких, вроде бы незначительных, измененях в запросе модуля внешней обработки происходит такой сбой?
Кликните здесь для просмотра всего текста
1-ая часть запрос до:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|УПОРЯДОЧИТЬ ПО
|   ВТДанныеОНачислениях.ВидРасчета.КатегорияРасчета.Код,
|   ВТДанныеОНачислениях.ВидРасчета.Наименование,
|   ВидРасчета
|ИТОГИ
|   СУММА(ОтработаноДней),
|   СУММА(ОтработаноЧасов),
|   СУММА(ОстатокНаНачало),
|   СУММА(Начислено),
|   СУММА(Удержано),
|   СУММА(Выплачено),
|   СУММА(ОстатокНаОкончание)
|ПО
|   ФизЛицо,
|   Раздел,
|   МестоРаботы,
|   ВидРасчета,
|   ПериодДействия,
|   Регистратор
2-ая часть после:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|УПОРЯДОЧИТЬ ПО
|   ВТДанныеОНачислениях.ВидРасчета.КатегорияРасчета.Код,
|   ВТДанныеОНачислениях.ВидРасчета.Наименование,
|   ВидРасчета
|ИТОГИ
|   СУММА(ОтработаноДней),
|   СУММА(ОтработаноЧасов),
|   СУММА(ОстатокНаНачало),
|   СУММА(ВЫБОР КОГДА ВТДанныеОНачислениях.ВидРасчета <> ""Мат.выгода"" 
|               ТОГДА ВТДанныеОНачислениях.Начислено конец) как Начислено,
|   СУММА(Удержано),
|   СУММА(Выплачено),
|   СУММА(ОстатокНаОкончание)
|ПО
|   ФизЛицо,
|   Раздел,
|   МестоРаботы,
|   ВидРасчета,
|   ПериодДействия,
|   Регистратор
0
05.09.2013, 16:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.09.2013, 16:29
Помогаю со студенческими работами здесь

Черный экран с ошибкой при запуске Windows 7
Здравствуйте. При включении компьютера происходит вот что: экран приветствия с надписью &quot;Добро...

Агент при запуске на сервере вываливается с ошибкой
Здравствуйте! Может кто сталкивался... Есть Java агент, который слушает очередь mq и достает...

Окошко c ошибкой DOS при запуске приложений
Здравствуйте, очень нужна помощь. При запуске некоторых приложений(skype, internet explorer) начало...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru