B
BBDragon
Необходимо переделать программу в соответствии с новыми требованиями (изменилась структура входящих и, соответственно, формируемых на их основе исходящих документов). Часть работы удалось сделать, но теперь я застрял. Необходимо из загружаемых документов создавать новые, при этом вести разбивку по регионам, т.е. для каждого региона создавать отдельный документ со списком всех пациентов за указанный период. Внутри документа желательно расположить пациентов в алфавитном порядке их фамилий. Подозреваю, что проблема в оформлении группировок запроса, но никак не могу докопаться до истины..
[codebox]
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|ДатаДок = Документ.РеестрСчетовВходящийЛПУ.ДатаДок;
|НомерДок = Документ.РеестрСчетовВходящийЛПУ.НомерДок;
|КодТерритории = Документ.РеестрСчетовВходящийЛПУ.ОкатоВыстСчет;
|ОкатоРегистрации = Документ.РеестрСчетовВходящийЛПУ.ОкатоРегистрации;
|ОкатоСтрахования = Документ.РеестрСчетовВходящийЛПУ.ОкатоСтрахования;
|СтатусДокумента1 = Документ.РеестрСчетовВходящийЛПУ.СтатусДокумента;
|НомерКвартала = Документ.РеестрСчетовВходящийЛПУ.НомерКвартала;
|СерияНомерПолиса = Документ.РеестрСчетовВходящийЛПУ.СерияНомерПолиса;
|ДатаВыдачиПолиса = Документ.РеестрСчетовВходящийЛПУ.ДатаВыдачиПолиса;
|ДатаОкончанияПолиса = Документ.РеестрСчетовВходящийЛПУ.ДатаОкончанияПолиса;
|Регион=Документ.РеестрСчетовВходящийЛПУ.Регион;
|ФамилияПациента = Документ.РеестрСчетовВходящийЛПУ.ФамилияПациента;
|ИмяПациента = Документ.РеестрСчетовВходящийЛПУ.ИмяПациента;
|ОтчествоПациента = Документ.РеестрСчетовВходящийЛПУ.ОтчествоПациента;
|ПолПациента = Документ.РеестрСчетовВходящийЛПУ.ПолПациента;
|ДатаРожденияПациента = Документ.РеестрСчетовВходящийЛПУ.ДатаРожденияПациента;
|СтатусПредставителя = Документ.РеестрСчетовВходящийЛПУ.СтатусПредставителя;
|ФамилияПредставителя = Документ.РеестрСчетовВходящийЛПУ.ФамилияПредставителя;
|ИмяПредставителя = Документ.РеестрСчетовВходящийЛПУ.ИмяПредставителя;
|ОтчествоПредставителя = Документ.РеестрСчетовВходящийЛПУ.ОчествоПредставителя;
|ОГРНСМО = Документ.РеестрСчетовВходящийЛПУ.ОГРНСМО;
|Гражданство = Документ.РеестрСчетовВходящийЛПУ.Гражданство;
|КодДокумента = Документ.РеестрСчетовВходящийЛПУ.КодДокумента;
|СерияДокумента = Документ.РеестрСчетовВходящийЛПУ.СерияДокумента;
|НомерДокумента = Документ.РеестрСчетовВходящийЛПУ.НомерДокумента;
|Район = Документ.РеестрСчетовВходящийЛПУ.Район;
|КодНП = Документ.РеестрСчетовВходящийЛПУ.КодНП;
|НаселенныйПункт = Документ.РеестрСчетовВходящийЛПУ.НаселенныйПункт;
|КодУлицы = Документ.РеестрСчетовВходящийЛПУ.КодУлицы;
|Улица = Документ.РеестрСчетовВходящийЛПУ.Улица;
|Дом = Документ.РеестрСчетовВходящийЛПУ.Дом;
|Корпус = Документ.РеестрСчетовВходящийЛПУ.Корпус;
|Квартира = Документ.РеестрСчетовВходящийЛПУ.Квартира;
|СтатусЗастрахованного = Документ.РеестрСчетовВходящийЛПУ.СтатусЗастрахованного;
|МестоРаботы = Документ.РеестрСчетовВходящийЛПУ.МестоРаботы;
|ДатаНачалаЛечения = Документ.РеестрСчетовВходящийЛПУ.ДатаНачалаЛечения;
|ДатаОкончанияЛечения = Документ.РеестрСчетовВходящийЛПУ.ДатаОкончанияЛечения;
|ВидМедицинскойПомощи = Документ.РеестрСчетовВходящийЛПУ.ВидМедицинскойПомощи;
|КодПрофиля = Документ.РеестрСчетовВходящийЛПУ.КодПрофиля;
|КодСпециальности = Документ.РеестрСчетовВходящийЛПУ.КодСпециальности;
|КодОсновногоЗаболевания = Документ.РеестрСчетовВходящийЛПУ.КодОсновногоЗаболевания;
|КодСопутствующегоЗаболевания =
Документ.РеестрСчетовВходящийЛПУ.КодСопутствующегоЗаболевания;
|ИсходЗаболевания = Документ.РеестрСчетовВходящийЛПУ.ИсходЗаболевания;
|ОгрнЛПУ = Документ.РеестрСчетовВходящийЛПУ.ОгрнЛПУ;
|СуммаКОплате = Документ.РеестрСчетовВходящийЛПУ.СуммаКОплате;
|ПорядковыйНомер = Документ.РеестрСчетовВходящийЛПУ.ПорядковыйНомер;
|КодПричины = Документ.РеестрСчетовВходящийЛПУ.КодПричины;
|ПризнакОсобыйСлучай = Документ.РеестрСчетовВходящийЛПУ.ПризнакОсобыйСлучай;
|НаименованиеСтраховщика = Документ.РеестрСчетовВходящийЛПУ.НаименованиеСтраховщика;
|Количество = Документ.РеестрСчетовВходящийЛПУ.Количество;
|Функция СуммаКОплатеСумма = Сумма(СуммаКОплате);
|Функция КоличествоСумма = Сумма(Количество);
|Группировка ОкатоСтрахования;
|Группировка ФамилияПациента;
|Условие(КодПричины = 0);
|Условие(СтатусДокумента1 = Перечисление.СтатусДокумента.ПроизведенаОплата);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл
Док=СоздатьОбъект("Документ.РеестрСчетовИсходящийВТФОМС");
Док.Новый();
Док.ДатаДок=ТекущаяДата();
Док.КодТерритории=Запрос.КодТерритории;
Док.ВыбНачПериода=ВыбНачПериода;
Док.ВыбКонПериода=ВыбКонПериода;
Пока Запрос.Группировка(2) = 1 Цикл
Док.НоваяСтрока();
Док.ОкатоРегистрации = Запрос.ОкатоРегистрации;
Док.ОкатоСтрахования = Запрос.ОкатоСтрахования;
Док.СерияНомерПолиса = Запрос.СерияНомерПолиса;
Док.ДатаВыдачиПолиса = Запрос.ДатаВыдачиПолиса;
Док.ДатаОкончанияПолиса = Запрос.ДатаОкончанияПолиса;
Док.ФамилияПациента = Запрос.ФамилияПациента;
Док.ИмяПациента = Запрос.ИмяПациента;
Док.ОтчествоПациента = Запрос.ОтчествоПациента;
Док.ПолПациента = Запрос.ПолПациента;
Док.ДатаРожденияПациента = Запрос.ДатаРожденияПациента;
Док.СтатусПредставителя = Запрос.СтатусПредставителя;
Док.ФамилияПредставителя = Запрос.ФамилияПредставителя;
Док.ИмяПредставителя = Запрос.ИмяПредставителя;
Док.ОтчествоПредставителя = Запрос.ОтчествоПредставителя;
Док.ОГРНСМО = Запрос.ОГРНСМО;
Док.Гражданство = Запрос.Гражданство;
Док.КодДокумента = Запрос.КодДокумента;
Док.СерияДокумента = Запрос.СерияДокумента;
Док.НомерДокумента = Запрос.НомерДокумента;
Док.Район = Запрос.Район;
Док.КодНП = Запрос.КодНП;
Док.НаселенныйПункт = Запрос.НаселенныйПункт;
Док.КодУлицы = Запрос.КодУлицы;
Док.Улица = Запрос.Улица;
Док.Дом = Запрос.Дом;
Док.Корпус = Запрос.Корпус;
Док.Квартира = Запрос.Квартира;
Док.СтатусЗастрахованного = Запрос.СтатусЗастрахованного;
Док.МестоРаботы = Запрос.МестоРаботы;
Док.ДатаНачалаЛечения = Запрос.ДатаНачалаЛечения;
Док.ДатаОкончанияЛечения = Запрос.ДатаОкончанияЛечения;
Док.ВидМедицинскойПомощи = Запрос.ВидМедицинскойПомощи;
Док.КодПрофиля = Запрос.КодПрофиля;
Док.КодСпециальности = Запрос.КодСпециальности;
Док.КодОсновногоЗаболевания = Запрос.КодОсновногоЗаболевания;
Док.КодСопутствующегоЗаболевания = Запрос.КодСопутствующегоЗаболевания;
Док.ИсходЗаболевания = Запрос.ИсходЗаболевания;
Док.ОгрнЛПУ = Запрос.ОгрнЛПУ;
Док.СуммаКОплате = Запрос.СуммаКОплате;
Док.ПорядковыйНомер = Запрос.ПорядковыйНомер;
Док.КодПричины= Запрос.КодПричины;
Док.ПризнакОсобыйСлучай = Запрос.ПризнакОсобыйСлучай;
КонецЦикла;
Док.Записать();
Док.Провести();
КонецЦикла;
Сообщить("Конец формирования реестров счетов исходящих");
КонецПроцедуры
[/codebox]
[codebox]
Процедура Сформировать()
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|ДатаДок = Документ.РеестрСчетовВходящийЛПУ.ДатаДок;
|НомерДок = Документ.РеестрСчетовВходящийЛПУ.НомерДок;
|КодТерритории = Документ.РеестрСчетовВходящийЛПУ.ОкатоВыстСчет;
|ОкатоРегистрации = Документ.РеестрСчетовВходящийЛПУ.ОкатоРегистрации;
|ОкатоСтрахования = Документ.РеестрСчетовВходящийЛПУ.ОкатоСтрахования;
|СтатусДокумента1 = Документ.РеестрСчетовВходящийЛПУ.СтатусДокумента;
|НомерКвартала = Документ.РеестрСчетовВходящийЛПУ.НомерКвартала;
|СерияНомерПолиса = Документ.РеестрСчетовВходящийЛПУ.СерияНомерПолиса;
|ДатаВыдачиПолиса = Документ.РеестрСчетовВходящийЛПУ.ДатаВыдачиПолиса;
|ДатаОкончанияПолиса = Документ.РеестрСчетовВходящийЛПУ.ДатаОкончанияПолиса;
|Регион=Документ.РеестрСчетовВходящийЛПУ.Регион;
|ФамилияПациента = Документ.РеестрСчетовВходящийЛПУ.ФамилияПациента;
|ИмяПациента = Документ.РеестрСчетовВходящийЛПУ.ИмяПациента;
|ОтчествоПациента = Документ.РеестрСчетовВходящийЛПУ.ОтчествоПациента;
|ПолПациента = Документ.РеестрСчетовВходящийЛПУ.ПолПациента;
|ДатаРожденияПациента = Документ.РеестрСчетовВходящийЛПУ.ДатаРожденияПациента;
|СтатусПредставителя = Документ.РеестрСчетовВходящийЛПУ.СтатусПредставителя;
|ФамилияПредставителя = Документ.РеестрСчетовВходящийЛПУ.ФамилияПредставителя;
|ИмяПредставителя = Документ.РеестрСчетовВходящийЛПУ.ИмяПредставителя;
|ОтчествоПредставителя = Документ.РеестрСчетовВходящийЛПУ.ОчествоПредставителя;
|ОГРНСМО = Документ.РеестрСчетовВходящийЛПУ.ОГРНСМО;
|Гражданство = Документ.РеестрСчетовВходящийЛПУ.Гражданство;
|КодДокумента = Документ.РеестрСчетовВходящийЛПУ.КодДокумента;
|СерияДокумента = Документ.РеестрСчетовВходящийЛПУ.СерияДокумента;
|НомерДокумента = Документ.РеестрСчетовВходящийЛПУ.НомерДокумента;
|Район = Документ.РеестрСчетовВходящийЛПУ.Район;
|КодНП = Документ.РеестрСчетовВходящийЛПУ.КодНП;
|НаселенныйПункт = Документ.РеестрСчетовВходящийЛПУ.НаселенныйПункт;
|КодУлицы = Документ.РеестрСчетовВходящийЛПУ.КодУлицы;
|Улица = Документ.РеестрСчетовВходящийЛПУ.Улица;
|Дом = Документ.РеестрСчетовВходящийЛПУ.Дом;
|Корпус = Документ.РеестрСчетовВходящийЛПУ.Корпус;
|Квартира = Документ.РеестрСчетовВходящийЛПУ.Квартира;
|СтатусЗастрахованного = Документ.РеестрСчетовВходящийЛПУ.СтатусЗастрахованного;
|МестоРаботы = Документ.РеестрСчетовВходящийЛПУ.МестоРаботы;
|ДатаНачалаЛечения = Документ.РеестрСчетовВходящийЛПУ.ДатаНачалаЛечения;
|ДатаОкончанияЛечения = Документ.РеестрСчетовВходящийЛПУ.ДатаОкончанияЛечения;
|ВидМедицинскойПомощи = Документ.РеестрСчетовВходящийЛПУ.ВидМедицинскойПомощи;
|КодПрофиля = Документ.РеестрСчетовВходящийЛПУ.КодПрофиля;
|КодСпециальности = Документ.РеестрСчетовВходящийЛПУ.КодСпециальности;
|КодОсновногоЗаболевания = Документ.РеестрСчетовВходящийЛПУ.КодОсновногоЗаболевания;
|КодСопутствующегоЗаболевания =
Документ.РеестрСчетовВходящийЛПУ.КодСопутствующегоЗаболевания;
|ИсходЗаболевания = Документ.РеестрСчетовВходящийЛПУ.ИсходЗаболевания;
|ОгрнЛПУ = Документ.РеестрСчетовВходящийЛПУ.ОгрнЛПУ;
|СуммаКОплате = Документ.РеестрСчетовВходящийЛПУ.СуммаКОплате;
|ПорядковыйНомер = Документ.РеестрСчетовВходящийЛПУ.ПорядковыйНомер;
|КодПричины = Документ.РеестрСчетовВходящийЛПУ.КодПричины;
|ПризнакОсобыйСлучай = Документ.РеестрСчетовВходящийЛПУ.ПризнакОсобыйСлучай;
|НаименованиеСтраховщика = Документ.РеестрСчетовВходящийЛПУ.НаименованиеСтраховщика;
|Количество = Документ.РеестрСчетовВходящийЛПУ.Количество;
|Функция СуммаКОплатеСумма = Сумма(СуммаКОплате);
|Функция КоличествоСумма = Сумма(Количество);
|Группировка ОкатоСтрахования;
|Группировка ФамилияПациента;
|Условие(КодПричины = 0);
|Условие(СтатусДокумента1 = Перечисление.СтатусДокумента.ПроизведенаОплата);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл
Док=СоздатьОбъект("Документ.РеестрСчетовИсходящийВТФОМС");
Док.Новый();
Док.ДатаДок=ТекущаяДата();
Док.КодТерритории=Запрос.КодТерритории;
Док.ВыбНачПериода=ВыбНачПериода;
Док.ВыбКонПериода=ВыбКонПериода;
Пока Запрос.Группировка(2) = 1 Цикл
Док.НоваяСтрока();
Док.ОкатоРегистрации = Запрос.ОкатоРегистрации;
Док.ОкатоСтрахования = Запрос.ОкатоСтрахования;
Док.СерияНомерПолиса = Запрос.СерияНомерПолиса;
Док.ДатаВыдачиПолиса = Запрос.ДатаВыдачиПолиса;
Док.ДатаОкончанияПолиса = Запрос.ДатаОкончанияПолиса;
Док.ФамилияПациента = Запрос.ФамилияПациента;
Док.ИмяПациента = Запрос.ИмяПациента;
Док.ОтчествоПациента = Запрос.ОтчествоПациента;
Док.ПолПациента = Запрос.ПолПациента;
Док.ДатаРожденияПациента = Запрос.ДатаРожденияПациента;
Док.СтатусПредставителя = Запрос.СтатусПредставителя;
Док.ФамилияПредставителя = Запрос.ФамилияПредставителя;
Док.ИмяПредставителя = Запрос.ИмяПредставителя;
Док.ОтчествоПредставителя = Запрос.ОтчествоПредставителя;
Док.ОГРНСМО = Запрос.ОГРНСМО;
Док.Гражданство = Запрос.Гражданство;
Док.КодДокумента = Запрос.КодДокумента;
Док.СерияДокумента = Запрос.СерияДокумента;
Док.НомерДокумента = Запрос.НомерДокумента;
Док.Район = Запрос.Район;
Док.КодНП = Запрос.КодНП;
Док.НаселенныйПункт = Запрос.НаселенныйПункт;
Док.КодУлицы = Запрос.КодУлицы;
Док.Улица = Запрос.Улица;
Док.Дом = Запрос.Дом;
Док.Корпус = Запрос.Корпус;
Док.Квартира = Запрос.Квартира;
Док.СтатусЗастрахованного = Запрос.СтатусЗастрахованного;
Док.МестоРаботы = Запрос.МестоРаботы;
Док.ДатаНачалаЛечения = Запрос.ДатаНачалаЛечения;
Док.ДатаОкончанияЛечения = Запрос.ДатаОкончанияЛечения;
Док.ВидМедицинскойПомощи = Запрос.ВидМедицинскойПомощи;
Док.КодПрофиля = Запрос.КодПрофиля;
Док.КодСпециальности = Запрос.КодСпециальности;
Док.КодОсновногоЗаболевания = Запрос.КодОсновногоЗаболевания;
Док.КодСопутствующегоЗаболевания = Запрос.КодСопутствующегоЗаболевания;
Док.ИсходЗаболевания = Запрос.ИсходЗаболевания;
Док.ОгрнЛПУ = Запрос.ОгрнЛПУ;
Док.СуммаКОплате = Запрос.СуммаКОплате;
Док.ПорядковыйНомер = Запрос.ПорядковыйНомер;
Док.КодПричины= Запрос.КодПричины;
Док.ПризнакОсобыйСлучай = Запрос.ПризнакОсобыйСлучай;
КонецЦикла;
Док.Записать();
Док.Провести();
КонецЦикла;
Сообщить("Конец формирования реестров счетов исходящих");
КонецПроцедуры
[/codebox]