powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Цикл для подсчета записей в таблице
3 сообщений из 3, страница 1 из 1
Цикл для подсчета записей в таблице
    #38643063
Артур005
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите добавить в код:
Процедура Кнопка4 - формирует отчет исходя из: сотрудника и ведомого им контрагента. Выдав в виде таблицы всех пациент из базы, проходящих по этому контрагенту за период.
Процедура Кнопка1 - формирует другой отчет в общем виде: сотрудники и ведомые за ними контрагенты.
Можно ли пересчитать количество пациентов, проходящих по контрагенту, и падающих в отчет по Кнопке4, в дополнительный столбец общего отчета : (кнопка1)
????
Здесь код обеих процедур, но куда добавить цикл, считающий пациентов ?

Код: sql
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.
382.
383.
Процедура Кнопка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 / 0
Цикл для подсчета записей в таблице
    #38643110
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зайка, я честно устал читать сей дерьмокод на 20 строчке...

Если не ПолеВвода1.Пустая() Тогда
Запрос.Текст = Запрос.Текст + "
| И НазначениеНаОсмотр.Организация.Ссылка = &Орг";
КонецЕсли;
Запрос.УстановитьПараметр("Орг", ПолеВвода1);

Если не ПолеВвода2.Пустая() Тогда
Запрос.Текст = Запрос.Текст + "
| И НазначениеНаОсмотр.ОсновнойДоговор.Владелец.Ссылка = &Контрагент";
КонецЕсли;
Запрос.УстановитьПараметр("Контрагент", ПолеВвода2);

мля... открой для себя СКД... или хотя бы построитель запросов чтобы не рисовать простой запрос динамически... или " необязательные условия "
...
Рейтинг: 0 / 0
Цикл для подсчета записей в таблице
    #38643688
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поковырялся унутре БСП, типа откуда растут ноги обработки "Текущие задачи"... вот где хардкор, треш и угар... "Страх и ненависть на Селезневской"... напилят типовых массово по образу подобию - вот житуха начнется

а 16025051 - просто УГ на тему "нуб открывает мир 1С", но столетней давности...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Цикл для подсчета записей в таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]