Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/2: Рейтинг темы: голосов - 2, средняя оценка - 5.00
artur67
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 28
1

Цикл для подсчета записей в таблице

15.05.2014, 09:01. Просмотров 461. Ответов 3
Метки нет (Все метки)

Помогите добавить в код:
Процедура Кнопка4 - формирует отчет исходя из: сотрудника и ведомого им контрагента. Выдав в виде таблицы всех пациент из базы, проходящих по этому контрагенту за период.
Процедура Кнопка1 - формирует другой отчет в общем виде: сотрудники и ведомые за ними контрагенты.
Можно ли пересчитать количество пациентов, проходящих по контрагенту, и падающих в отчет по Кнопке4, в дополнительный столбец общего отчета : (кнопка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
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
Процедура Кнопка4Нажатие(Элемент)
    
    ТабДок = Новый ТабличныйДокумент(); 
    Макет = ПолучитьМакет("Макет"); 
    
    Область = Макет.ПолучитьОбласть("Шапка");   
    Область.Параметры.УслП = "Отчет по оказанным услугам юр. лицам за период с " + Строка(НачПериода) + " по " + Строка(КонПериода) ;
    
    Если ПолеВвода1.Пустая() Тогда
        Область.Параметры.Стр2 = "По всем организациям";
    Иначе
        Область.Параметры.Стр2 = "Организация: " + Строка(ПолеВвода1);      
    КонецЕсли;  
    
    Если ПолеВвода3.Пустая() Тогда
        Область.Параметры.Стр3 = "";
    Иначе
        Область.Параметры.Стр3 = "Менеджер по продажам: " + Строка(ПолеВвода3);     
    КонецЕсли;  
    
    Если ПолеВвода4.Пустая() Тогда
        Область.Параметры.Стр4 = "";
    Иначе
        Область.Параметры.Стр4 = "Менеджер поддержки: " + Строка(ПолеВвода4);       
    КонецЕсли;  
    
    ТабДок.Вывести(Область);    
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
         "ВЫБРАТЬ
         |  СУММА(НазначениеНаОсмотр.СуммаДокумента) КАК СуммаДокумента,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Код КАК Код,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Наименование КАК Владелец,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Ссылка КАК ВладелецСсылка,
         |  НазначениеНаОсмотр.Организация.Ссылка,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоПродажам КАК МенПрод,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоддержки КАК МенПодд
         |ИЗ
         |  Документ.НазначениеНаОсмотр КАК НазначениеНаОсмотр
         |ГДЕ
         |  НазначениеНаОсмотр.Дата >= &ДатаНач
         |  И НазначениеНаОсмотр.Дата <= &ДатаКон
         |  И НазначениеНаОсмотр.Проведен = &Истина
         |  И НазначениеНаОсмотр.ВыставитьКОплате = &Ист
         |  И НазначениеНаОсмотр.ОсновнойДоговор.ВидДоговора = &ВидДог";
         
         
         
        Если не ПолеВвода1.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.Организация.Ссылка = &Орг" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Орг", ПолеВвода1);
        
        Если не ПолеВвода2.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Ссылка = &Контрагент" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Контрагент", ПолеВвода2);
        
        Если не ПолеВвода3.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоПродажам = &Мен1" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Мен1", ПолеВвода3);
        
        Если не ПолеВвода4.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоддержки = &Мен2" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Мен2", ПолеВвода4);
         
         
         
        Запрос.Текст = Запрос.Текст +                
        "
         |СГРУППИРОВАТЬ ПО
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Код,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Наименование,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Ссылка,
         |  НазначениеНаОсмотр.Организация.Ссылка,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоПродажам,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоддержки
         |
         |УПОРЯДОЧИТЬ ПО
         |  Владелец";
        
         
        Запрос.УстановитьПараметр("ДатаНач", НачПериода);
        Запрос.УстановитьПараметр("ДатаКон", КонПериода);   
        Запрос.УстановитьПараметр("Истина", Истина);    
        Запрос.УстановитьПараметр("Ист", Ложь);
        Запрос.УстановитьПараметр("ВидДог", Перечисления.ВидДоговора.Предприятие);      
    
    
        Результат = Запрос.Выполнить().Выбрать();
        
        н = 1;
        СумОбщ = 0;
        Пока Результат.Следующий() цикл
            
            Область = Макет.ПолучитьОбласть("Строка");  
            Область.Параметры.н = н;        
            Область.Параметры.КонтрагентП = Результат.Владелец;
            Область.Параметры.СуммаП = Результат.СуммаДокумента;
            Область.Параметры.МенПродП = Результат.МенПрод;         
            Область.Параметры.ЭкономистП = Результат.МенПодд;                       
            СумОбщ = СумОбщ + Результат.СуммаДокумента;
            
            ТабДок.Вывести(Область);
            н = н + 1;
            
        КонецЦикла;
        
        Область = Макет.ПолучитьОбласть("Подвал");  
        Область.Параметры.СумОбщП =  СумОбщ;
        ТабДок.Вывести(Область);
            
        Табдок.Показать("Краткий финансовый отчет");        
    
КонецПроцедуры
 
Процедура ПриОткрытии()
    
    Орг = Справочники.Организации.Выбрать();
    Пока Орг.Следующий() Цикл 
        Если Орг.Основная = Истина Тогда
                
            ПолеВвода1 = Орг.Ссылка;
            Прервать;
            
        КонецЕсли;
    КонецЦикла;
    ЭлементыФормы.Флажок1.Значение = Ложь;
    
КонецПроцедуры
 
 
 
 
Процедура Кнопка1Нажатие(Элемент)
    
    Если ПолеВвода2.Пустая() Тогда 
        Предупреждение("Не заполнено поле контрагент");
        Возврат;
    КонецЕсли;
    
    ТабДок = Новый ТабличныйДокумент(); 
    Макет = ПолучитьМакет("Макет1");    
    
    Область = Макет.ПолучитьОбласть("Шапка");   
    Область.Параметры.УслП = "Отчет по оказанным услугам юр. лицам за период с " + Строка(НачПериода) + " по " + Строка(КонПериода) ;
    
    Если ПолеВвода1.Пустая() Тогда
        Область.Параметры.КонтрП = "По всем организациям";
    Иначе
        Область.Параметры.КонтрП = "Организация: " + Строка(ПолеВвода1);        
    КонецЕсли;  
    
    Если ПолеВвода3.Пустая() Тогда
        Область.Параметры.Стр3 = "";
    Иначе
        Область.Параметры.Стр3 = "Менеджер по продажам: " + Строка(ПолеВвода3);     
    КонецЕсли;  
    
    Если ПолеВвода4.Пустая() Тогда
        Область.Параметры.Стр4 = "";
    Иначе
        Область.Параметры.Стр4 = "Менеджер поддержки: " + Строка(ПолеВвода4);       
    КонецЕсли;  
    
    ТабДок.Вывести(Область);    
    
// ***************************************************************************************************************************  
    
    
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
         "ВЫБРАТЬ
         |  СУММА(НазначениеНаОсмотр.СуммаДокумента) КАК СуммаДокумента,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Код КАК Код,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Наименование КАК Владелец,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Ссылка КАК ВладелецСсылка,
         |  НазначениеНаОсмотр.Организация.Ссылка,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоПродажам КАК МенПрод,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоддержки КАК МенПодд
         |ИЗ
         |  Документ.НазначениеНаОсмотр КАК НазначениеНаОсмотр
         |ГДЕ
         |  НазначениеНаОсмотр.Дата >= &ДатаНач
         |  И НазначениеНаОсмотр.Дата <= &ДатаКон
         |  И НазначениеНаОсмотр.Проведен = &Истина
         |  И НазначениеНаОсмотр.ВыставитьКОплате = &Ист
         |  И НазначениеНаОсмотр.ОсновнойДоговор.ВидДоговора = &ВидДог";
         
         
         
        Если не ПолеВвода1.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.Организация.Ссылка = &Орг" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Орг", ПолеВвода1);
        
        Если не ПолеВвода2.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Ссылка = &Контрагент" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Контрагент", ПолеВвода2);
        
        Если не ПолеВвода3.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоПродажам = &Мен1" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Мен1", ПолеВвода3);
        
        Если не ПолеВвода4.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоддержки = &Мен2" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Мен2", ПолеВвода4);
         
         
         
        Запрос.Текст = Запрос.Текст +                
        "
         |СГРУППИРОВАТЬ ПО
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Код,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Наименование,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Ссылка,
         |  НазначениеНаОсмотр.Организация.Ссылка,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоПродажам,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоддержки";
        
         
        Запрос.УстановитьПараметр("ДатаНач", НачПериода);
        Запрос.УстановитьПараметр("ДатаКон", КонПериода);   
        Запрос.УстановитьПараметр("Истина", Истина);    
        Запрос.УстановитьПараметр("Ист", Ложь);
        Запрос.УстановитьПараметр("ВидДог", Перечисления.ВидДоговора.Предприятие);      
    
    
        Результат = Запрос.Выполнить().Выбрать();
        
        Пока Результат.Следующий() цикл
            
            Область = Макет.ПолучитьОбласть("Строка");  
            Область.Параметры.КонтрагентП = Результат.Владелец;
            Область.Параметры.СуммаП = Результат.СуммаДокумента;
            
            
            ТабДок.Вывести(Область);
            
        КонецЦикла;
    
    
    
// **************************************************************************************************** 
    
    
    
    
    
    
    Запрос = Новый Запрос;
    Запрос.Текст =
         "ВЫБРАТЬ
         |  НазначениеНаОсмотр.СуммаДокумента КАК СуммаДокумента,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Код КАК Код,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Наименование КАК Владелец,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Ссылка КАК ВладелецСсылка,
         |  НазначениеНаОсмотр.Организация.Ссылка,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоПродажам КАК МенПрод,
         |  НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоддержки КАК МенПодд,
         |  НазначениеНаОсмотр.Ссылка КАК СсылкаДок,
         |  НазначениеНаОсмотр.Пациент.Наименование КАК Пациент
         |ИЗ
         |  Документ.НазначениеНаОсмотр КАК НазначениеНаОсмотр
         |ГДЕ
         |  НазначениеНаОсмотр.Дата >= &ДатаНач
         |  И НазначениеНаОсмотр.Дата <= &ДатаКон
         |  И НазначениеНаОсмотр.Проведен = &Истина
         |  И НазначениеНаОсмотр.ВыставитьКОплате = &Ист
         |  И НазначениеНаОсмотр.ОсновнойДоговор.ВидДоговора = &ВидДог";
         
        Если не ПолеВвода1.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.Организация.Ссылка = &Орг" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Орг", ПолеВвода1);
        
        Если не ПолеВвода2.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Ссылка = &Контрагент" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Контрагент", ПолеВвода2);
        
        Если не ПолеВвода3.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоПродажам = &Мен1" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Мен1", ПолеВвода3);
        
        Если не ПолеВвода4.Пустая() Тогда
            Запрос.Текст = Запрос.Текст + "
             |  И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.МенеджерПоддержки = &Мен2" ;
        КонецЕсли;
        Запрос.УстановитьПараметр("Мен2", ПолеВвода4);
         
         
        Запрос.УстановитьПараметр("ДатаНач", НачПериода);
        Запрос.УстановитьПараметр("ДатаКон", КонПериода);   
        Запрос.УстановитьПараметр("Истина", Истина);    
        Запрос.УстановитьПараметр("Ист", Ложь);
        Запрос.УстановитьПараметр("ВидДог", Перечисления.ВидДоговора.Предприятие);      
    
    
        Результат = Запрос.Выполнить().Выбрать();
        
        к = 1;
        Пока Результат.Следующий() цикл
            
            Область = Макет.ПолучитьОбласть("Строка2"); 
            Область.Параметры.к1 = к;       
            Область.Параметры.ДокП       = Результат.СсылкаДок;
            Область.Параметры.СуммаДокП  = Результат.СуммаДокумента;
            Область.Параметры.ПациентП   = Результат.Пациент;           
            
            ТабДок.Вывести(Область);
            
            
            
            Если Флажок1 = Истина Тогда
            
                ДокОб = Результат.ССылкаДок.ПолучитьОбъект();
                Для Каждого СтрТЧ из ДокОб.Услуги Цикл 
                    
                    Область = Макет.ПолучитьОбласть("Документы");                       
                    Область.Параметры.УслугаП = СтрТЧ.Услуга;
                    Область.Параметры.СотрП = СтрТЧ.Сотрудник;                  
                    Область.Параметры.СпециальностьП = СтрТЧ.СпециализацияВрача;                    
                    Область.Параметры.ЦенаЗаУслП = СтрТЧ.Цена;                                      
                    
                    ТабДок.Вывести(Область);
                    
                КонецЦикла;
                
                
                КонецЕсли;
            
            
            
            
            к = к + 1;
            
        КонецЦикла;
    
        Табдок.Показать("Развернутый финансовый отчет");                
    
    
    
КонецПроцедуры
 
Процедура ВыбПериодНажатие(Элемент)
    НастройкаПериода = Новый НастройкаПериода;
    НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода)));
    НастройкаПериода.РедактироватьКакИнтервал = Истина;
    НастройкаПериода.РедактироватьКакПериод = Истина;
    НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
    Если НастройкаПериода.Редактировать() Тогда
        НачПериода = НастройкаПериода.ПолучитьДатуНачала();
        КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
    КонецЕсли;
КонецПроцедуры
 
 
НачПериода = НачалоМесяца(ТекущаяДата());
КонПериода = ТекущаяДата();
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2014, 09:01
Ответы с готовыми решениями:

Цикл Для Подсчета Записей В Таблице
Помогите добавить в код: Процедура Кнопка4 - формирует отчет исходя из: сотрудника и ведомого им...

Цикл по одной таблице и обновление соответствующих записей в другой
Всем привет!!! Вопрос наверное совсем новичковый ... нужно в цикле пройтись по записям таблицы А1...

цикл для подсчета элементов списка
Как напистаь цикл для подсчета элементов списка, как получить доступ к К-элементу списка, где К=1...

Цикл для подсчета строк ф файле.
какой цикл надо задать чтобы из файла читалось столько строк сколько есть в файле..именно строк а...

Цикл для подсчета наибольшего произведения в стобцах
Всем доброго утра(дня). Мне нужно было написать программу, которая создает двумерный массив и...

3
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
15.05.2014, 11:08 2
1. Установка параметров под "Если" вместе с добавлением в запрос текста про параметр.
2. КОЛИЧЕСТВО() - есть такая агрегатная функция, работающая при СГРУППИРОВАТЬ ПО либо ИТОГИ
0
artur67
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 28
16.05.2014, 10:56  [ТС] 3
КОЛИЧЕСТВО () необходимо вписать в виде запроса ? а цикл какой нибудь х=х+1 нужен ?
0
duk337
2950 / 1762 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
16.05.2014, 23:30 4
Цитата Сообщение от artur67 Посмотреть сообщение
КОЛИЧЕСТВО () необходимо вписать в виде запроса ?
внутрь запроса
Цитата Сообщение от artur67 Посмотреть сообщение
а цикл какой нибудь х=х+1 нужен ?
В зависимости от формата результата запроса. Либо
1C
1
Пока Выборка.Следующий() Цикл
либо
1C
1
Для Каждого СтрокаТаблицы Из Резтаблица Цикл
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2014, 23:30

Как правильно сделать запрос к MySQL для подсчета записей
Всем привет. Сделал себе вот такой вывод всех категорий на главной странице сайта (CMS DLE):...

Организуйте цикл для подсчета суммы 20 первых натуральных чисел вида (2n-2)
Ассемблер задание &quot;Организуйте цикл для подсчета суммы 20 первых натуральных чисел вида (2n-2)&quot;...

Создать программу, для подсчета дискриминанта, через цикл For чтобы 3 раза можно было)
Буду признателен если поможете) if (d&gt;0) then begin X1:=((-b*b-sqrt(d))/2/a)...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru