Зависает все
Вот что получилось
Код 1C v 8.х Функция ПолучитьОстатки()
Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ
| ЛицевыеСчетаАбонентов.Ссылка КАК ЛицевойСчет,
| СУММА(IsNull(ИсточникДанных.СуммаОстаток,0)) КАК СуммаОстаток
| ИЗ
| Справочник.ЛицевыеСчетаАбонентов КАК ЛицевыеСчетаАбонентов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НачислениеКвартПлатыЛС.Остатки(&Дата,ПереченьУсловий) КАК ИсточникДанных
| ПО (ИсточникДанных.ЛицевойСчет = ЛицевыеСчетаАбонентов.Ссылка)
|УсловияПоЛС
|СГРУППИРОВАТЬ ПО
| ЛицевыеСчетаАбонентов.Ссылка
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("Дата",КонецДня(Дата));// Дата
Запрос.УстановитьПараметр("Услуга",Услуга);
Запрос.УстановитьПараметр("Регион",Регион);
Условие1="";
ТекстОтбора="";
Условие2="";
Если ЗначениеЗаполнено(Регион) Тогда
Условие1="ЛицевойСчет.Регион=&Регион";
ТекстОтбора="Регион="+Регион;
Условие2=" ГДЕ ЛицевыеСчетаАбонентов.Регион=&Регион";
КонецЕсли;
Если ЗначениеЗаполнено(Услуга) Тогда
Если НЕ Условие1="" Тогда
Условие1=Условие1+" И ";
ТекстОтбора=ТекстОтбора+"; ";
Конецесли;
Условие1=Условие1+"услуги=&Услуга";
ТекстОтбора=ТекстОтбора+"Услуга="+Услуга;
КонецЕсли;
Если Переключатель1=2 Тогда
Если НЕ Условие1="" Тогда
Условие1=Условие1+" И ";
ТекстОтбора=ТекстОтбора+"; ";
Условие2=Условие2+" И ";
Иначе
Условие2=" ГДЕ ";
Конецесли;
Условие1=Условие1+"ЛицевойСчет.ЭтоОрганизация";
Условие2=Условие2+"ЛицевыеСчетаАбонентов.ЭтоОрганизация";
ТекстОтбора=ТекстОтбора+"По организациям";
ИначеЕсли Переключатель1=3 Тогда
Если НЕ Условие1="" Тогда
Условие1=Условие1+" И ";
ТекстОтбора=ТекстОтбора+"; ";
Условие2=Условие2+" И ";
Иначе
Условие2=" ГДЕ ";
Конецесли;
Условие1=Условие1+"(НЕ ЛицевойСчет.ЭтоОрганизация)";
Условие2=Условие2+"(НЕ ЛицевыеСчетаАбонентов.ЭтоОрганизация)";
ТекстОтбора=ТекстОтбора+"По населению";
КонецЕсли;
Если НЕ Условие1="" Тогда
ТекстОтбора=ТекстОтбора+"; ";
Условие2=Условие2+" И ";
Конецесли;
Условие2=Условие2+"ЛицевыеСчетаАбонентов.ЗакрытыйЛС=Ложь";
Если НЕ Условие1="" Тогда
ТекстОтбора=ТекстОтбора+"; ";
Условие2=Условие2+" И ";
Конецесли;
Условие2=Условие2+"ЛицевыеСчетаАбонентов.ПометкаУдаления=Ложь";
ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"ПереченьУсловий",Условие1);
ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"УсловияПоЛС",Условие2);
Запрос.Текст=ТекстЗапроса;
Возврат Запрос.Выполнить();
КонецФункции
Процедура КнопкаВыполнитьНажатие(Кнопка)
Если СокрЛП(ИмяФайлаДанных)="" Тогда
Предупреждение("Не указан файл данных");
Возврат;
КонецЕсли;
Текст1 = Новый ТекстовыйДокумент;
Сумма = 0;
Кол=0;
Текст1.ДобавитьСтроку("#TYPE" + " " + "7");
Текст1.ДобавитьСтроку("#SERVICE" + " " + Услуга.КодУслугиСбер);
Текст1.ДобавитьСтроку("#NOTE");
Состояние("Идет процесс получения остатков по ЛС");
СписокРегион = Новый Массив;
СписокРегион.Добавить("Петровски ");
СписокРегион.Добавить("Ивановский");
Для каждого Регион Из СписокРегион Цикл
Результат=ПолучитьОстатки();
СпособВыборки = ОбходРезультатаЗапроса.Прямой;
Выборка=Результат.Выбрать(СпособВыборки);
Пока Выборка.Следующий() Цикл
Кол=Кол+1;
ЛицСчет=Выборка.ЛицевойСчет;
ЛС=Прав(СтрЗаменить(СокрЛП(ЛицСчет.Код),Символы.НПП,""),6);
ФАМ1=СокрЛП(ЛицСчет.ОтветственныйКвартиросъемщик.Фамилия);
ФАМ = СтрЗаменить(ФАМ1, ";", "_");
ИМ=СокрЛП(ЛицСчет.ОтветственныйКвартиросъемщик.Имя);
ОТЧ=СокрЛП(ЛицСчет.ОтветственныйКвартиросъемщик.Отчество);
УЛ=СокрЛП(ЛицСчет.НаселенныйПункт)+","+СокрЛП(ЛицСчет.Улица);
ДОМ=СокрЛП(ЛицСчет.Дом);
Попытка
ПостфиксДома=Число(ЛицСчет.Корпус);
КОРП=ПостфиксДома;
Исключение
ПостфиксДома=СокрЛП(ЛицСчет.Корпус);
БУК=ПостфиксДома;
КонецПопытки;
КВ=СокрЛП(ЛицСчет.Квартира);
КОМ=ЛицСчет.НомерКомнаты;
САЛ=Выборка.СуммаОстаток;
САЛФ = Формат(САЛ, "ЧРД='.'; ЧН='0.00'; ЧДЦ=2; ЧГ=0");
Сумма = Сумма + САЛФ;
СУМ = Формат(Сумма, "ЧРД='.'; ЧН='0.00'; ЧДЦ=2; ЧГ=0");
Если НЕ ЗначениеЗаполнено(ИМ) и НЕ ЗначениеЗаполнено(ОТЧ) Тогда
ФИО1 = ФАМ;
ИначеЕсли НЕ ЗначениеЗаполнено(ОТЧ) Тогда
ФИО1 = ФАМ + " " + ИМ;
Иначе
ФИО1 = ФАМ + " " + ИМ + " " + ОТЧ;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ФАМ) и НЕ ЗначениеЗаполнено(ИМ) и НЕ ЗначениеЗаполнено(ОТЧ) Тогда
ФИО1 = ЛС;
Иначе
КонецЕсли;
КодРайона=Регион.КодСбер;
Текст1.ДобавитьСтроку(ФИО1 + ";" + УЛ1 + ЛС + "," + КодРайона + ";" + ЛС + "/" + КодРайона
+ ";" + САЛФ + ";" + ";" + ";" + ";" + "100501" + ":" + ЛС + ":" + УЛ + "," + ДОМ + БУК + ПР2 + "," + КВ + ПР + ":" + ":" + "1" + ":" + "ГАЗ" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":" + ":");
КонецЦикла;
Состояние("Идет запись остатков в файл: " + Кол);
КонецЦикла;
Текст1.ВставитьСтроку(1, "#FILESUM" + " " + СУМ);
Текст1.Записать(ИмяФайлаДанных, "windows-1251");
Предупреждение("Выгрузка остатков в файл данных завершена - "+Кол+Символы.ПС+"Проверьте текст на читаемость!");
Текст1.Показать(ИмяФайлаДанных, "windows-1251");
КонецПроцедуры