Показано с 1 по 1 из 1
-
15.05.2014, 10:10 #1
- Регистрация
- 03.08.2012
- Сообщений
- 16
- Сказал(а) спасибо
- 2
- Поблагодарили 0 раз(а) в 0 сообщениях
Цикл для подсчета записей в таблице
Помогите добавить в код:
Процедура Кнопка4 - формирует отчет исходя из: сотрудника и ведомого им контрагента. Выдав в виде таблицы всех пациент из базы, проходящих по этому контрагенту за период.
Процедура Кнопка1 - формирует другой отчет в общем виде: сотрудники и ведомые за ними контрагенты.
Можно ли пересчитать количество пациентов, проходящих по контрагенту, и падающих в отчет по Кнопке4, в дополнительный столбец общего отчета : (кнопка1)
ИИ
Здесь код обеих процедур, но куда добавить цикл, считающий пациентов ?
PHP код:Процедура Кнопка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', КонПериода, КонецДня(КонПериода)));
НастройкаПериода.РедактироватьКакИнтервал = Истина;
НастройкаПериода.РедактироватьКакПериод = Истина;
НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
Если НастройкаПериода.Редактировать() Тогда
НачПериода = НастройкаПериода.ПолучитьДатуНачала();
КонПериода = НастройкаПериода.ПолучитьДатуОкончания();
КонецЕсли;
КонецПроцедуры
НачПериода = НачалоМесяца(ТекущаяДата());
КонПериода = ТекущаяДата();
Похожие темы
-
Чем перезаписать перевод в фильме?
от denic2409 в разделе МультимедиаОтветов: 5Последнее сообщение: 08.03.2010, 21:21
Социальные закладки