Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Другие темы раздела
1С Подскажите лучшую реализацию для 1с https://www.cyberforum.ru/ 1c-custom/ thread1174635.html
Здравствуйте. Выбрала тему диплома "ЭЛЕКТРОННАЯ КАРТА Сервисного обслуживания транспортного средства" на базе горнодобывающего ПК. Есть данные по транспорту в виде списка ОС, нужно чтобы выводилась...
Автоматизация в 1С 1С
У меня такой вопрос, у меня тема диплома "Автоматизация процесса информационного взаимодействия 1СП8УПП и web портала для партнеров фирмы «1С»" может кто посоветовать литературу по этой теме? И...
Сравнение двух дат 1С
Всем привет! Собственно,вопрос-есть колонка временной таблицы ТЗ.Время с типом данных "время" например 13:38:06 нужно сравнить это время с другим временем(НачВремя),например 14:00:00 ... КОГДА...
1С ТЗ во временную таблицу. Преобразование значения к типу Дата не может быть выполнено Здравствуйте! В общем выбрал запросом из таблицы sql дату формата дата/время(ВремяПрихода) и дата(Дата) |SELECT |CAST(Checkinout.CheckTime AS DATE) Дата, |Min(Checkinout.CheckTime) AS ... https://www.cyberforum.ru/ 1c-custom/ thread1174052.html
1С Создание ссылки на реквизит в табличной части https://www.cyberforum.ru/ 1c-custom/ thread1173937.html
Такая беда есть справочник Дисциплины в котором есть табличная часть Темы и Реквизит НаименованиеТемы. есть документ Текущая успеваемость студентов, в нем нужно сделать ссылку на справочник ...
Ввод на основании данных табличного поля 1С
Есть документ "Регистрация вакансии", где по нажатию на кнопку "Подобрать сотрудников" запросом заполняется табличное поле. В табличном поле отражается список подходящих сотрудников. мне нужно, чтобы...
1С Где найти демонстрационную конфигурацию 1С:заказы?
Ребят, кто-нибудь можно подкинуть демонстрационную конфигурацию 1С:заказы .На 1с сайтах нет или плохо смотрел
1С Не выводятся данные в табличной части Добрый день, помогите пожалуйста с процедурой. Необходимо, чтобы при выборе товара в табличной части количество 1 по умолчанию проставлялось, а также при выборе 2х одинаковых товаров значения... https://www.cyberforum.ru/ 1c-custom/ thread1170757.html
1С Печатная форма в ексель https://www.cyberforum.ru/ 1c-custom/ thread1170100.html
Такая проблема, при "Сохранить Как..." в формате ячейки екселя дата не записывается в ексель правильно, она сохраняется с форматом "общий"...как побороть эту проблему???
1С Макет отчета Нужно разбить ТипАдреса на Регион и Минск Например.. В отчете есть колонка Мин и Рег, сумма и количество...Табличное поле есть Тип адреса Минск, регионы и минский район. когда сформулирую отчет, в... https://www.cyberforum.ru/ 1c-custom/ thread1170058.html
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 28
0
1C 8.x

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

15.05.2014, 09:01. Просмотров 615. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2014, 09:01
Готовые ответы и решения:

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

Цикл для нумерации записей в таблице
Народ подскажите как написать цикл нумерации записей в таблице? Добавлено через 17 минут у меня...

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

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

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