"во внешнем отчете не работает отбор по подразделению. то есть когда в самой 1С Предприятие выбираешь какое-нибудь подразделение, он должен выводить отчет только по выбранному подразделению, а выводит все равно по всем.<br>вот код в конфигурации:<br>Процедура КнопкаСформироватьНажатие(Кнопка)<br> <br> струслном="""";<br> Если ЗначениеЗаполнено(ВыбКонтрагент) Тогда<br> Если ТипЗнч(ВыбКонтрагент) = Тип("СписокЗначений") Тогда<br> струслном = "Субконто1 В (&ВыбКонтрагент)";<br> ИначеЕсли ВыбКонтрагент.ЭтоГруппа Тогда<br> струслном = "Субконто1 В ИЕРАРХИИ (&ВыбКонтрагент)";<br> Иначе<br> струслном = "Субконто1 = &ВыбКонтрагент"; <br> КонецЕсли;<br> КонецЕсли; <br> струсл = """";<br> Если ЗначениеЗаполнено(ВыбПодразделение) Тогда<br> Если струсл="""" Тогда<br> струсл = "Субконто2.Подразделение = &ВыбПодразделение";<br> Иначе<br> струсл = струсл+ "И Субконто2.Подразделение = &ВыбПодразделение";<br> КонецЕсли; <br> КонецЕсли; <br> <br> Запрос = Новый Запрос("ВЫБРАТЬ<br> | ХозрасчетныйОстатки.Субконто1 КАК Контрагент,<br> | МАКСИМУМ(ЕстьNULL(ХозрасчетныйОстатки.Субконто3.Дата,&ПустаяДата)) КАК ДатаВозникновенияДолга,<br> | СУММА(ХозрасчетныйОстатки.СуммаОстаток) КАК СуммаОстаток,<br> | ВЫБОР<br> | КОГДА ХозрасчетныйОстатки.Субконто2 ССЫЛКА Справочник.ДоговорыКонтрагентов<br> | ТОГДА ВЫБОР<br> | КОГДА ХозрасчетныйОстатки.Субконто2 = &ПустойДоговор<br> | ТОГДА &ПустоеПодр<br> | ИНАЧЕ ХозрасчетныйОстатки.Субконто2.Подразделение<br> | КОНЕЦ<br> | ИНАЧЕ &Бухгалтерия<br> | КОНЕЦ КАК Субконто2Подразделение,<br> | ХозрасчетныйОстатки.Счет<br> |ИЗ<br> | РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаКон, Счет В ИЕРАРХИИ (&СписокСчетов), , ) КАК ХозрасчетныйОстатки<br> |<br> |СГРУППИРОВАТЬ ПО<br> | ХозрасчетныйОстатки.Субконто1,<br> | ХозрасчетныйОстатки.Счет,<br> | ВЫБОР<br> | КОГДА ХозрасчетныйОстатки.Субконто2 ССЫЛКА Справочник.ДоговорыКонтрагентов<br> | ТОГДА ВЫБОР<br> | КОГДА ХозрасчетныйОстатки.Субконто2 = &ПустойДоговор<br> | ТОГДА &ПустоеПодр<br> | ИНАЧЕ ХозрасчетныйОстатки.Субконто2.Подразделение<br> | КОНЕЦ<br> | ИНАЧЕ &Бухгалтерия<br> | КОНЕЦ<br> |<br> |УПОРЯДОЧИТЬ ПО<br> | Субконто2Подразделение,<br> | Контрагент,<br> | ДатаВозникновенияДолга<br> |ИТОГИ<br> | СУММА(СуммаОстаток)<br> |ПО<br> | Субконто2Подразделение,<br> | Контрагент");<br> <br> Запрос.УстановитьПараметр("ДатаКон",КонецДня(ВыбДатаКон));<br> СписокСчетов = новый СписокЗначений;<br> СписокСчетов2= новый СписокЗначений;<br> для каждого стр из ТЗСчетов Цикл<br> если стр.ФлИспользования Тогда<br> СписокСчетов.Добавить(стр.Счет);<br> ВидыСубконтоСчета = стр.Счет.ВидыСубконто;<br> Если ВидыСубконтоСчета.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами,"ВидСубконто")=Неопределено Тогда <br> СписокСчетов2.Добавить(стр.Счет);<br> КонецЕсли;<br> КонецЕсли; <br> КонецЦикла; <br> <br> Запрос.УстановитьПараметр("Бухгалтерия",Справочники.ПодразделенияОрганизаций.НайтиПоКоду("4"));<br> Запрос.УстановитьПараметр("ПустоеПодр",Справочники.ПодразделенияОрганизаций.ПустаяСсылка());<br> Запрос.УстановитьПараметр("ПустойДоговор",Справочники.ДоговорыКонтрагентов.ПустаяСсылка()); <br> Запрос.УстановитьПараметр("ПустаяДата",Дата('00010101')); <br> <br> Запрос.УстановитьПараметр("СписокСчетов",СписокСчетов);<br> <br> <br> Если ЗначениеЗаполнено(ВыбКонтрагент) Тогда<br> Запрос.УстановитьПараметр("ВыбКонтрагент",ВыбКонтрагент);<br> КонецЕсли;<br> <br> Если ЗначениеЗаполнено(ВыбПодразделение) Тогда<br> Запрос.УстановитьПараметр("ВыбПодразделение",ВыбПодразделение); <br> КонецЕсли; <br> <br> //сделаем дополнительный запрос<br> //сумма обборота по счетам<br> ЗапросДоп = новый Запрос("ВЫБРАТЬ<br> | ХозрасчетныйОбороты.Субконто1 КАК Субконто1,<br> | ХозрасчетныйОбороты.Счет КАК Счет,<br> | ХозрасчетныйОбороты.Регистратор.Дата КАК РегистраторДата,<br> | ХозрасчетныйОбороты.Регистратор КАК Регистратор,<br> | ХозрасчетныйОбороты.СуммаОборот КАК Сумма<br> |ИЗ<br> | РегистрБухгалтерии.Хозрасчетный.Обороты(, &ДатаКон, Регистратор, Счет В (&СписокСчетов), , , , ) КАК ХозрасчетныйОбороты<br> |<br> |УПОРЯДОЧИТЬ ПО<br> | Субконто1,<br> | РегистраторДата УБЫВ");<br> <br> ЗапросДоп.УстановитьПараметр("ДатаКон", КонецДня(ВыбДатаКон));<br> ЗапросДоп.УстановитьПараметр("СписокСчетов", СписокСчетов2);<br> ТЗДоп = ЗапросДоп.Выполнить().Выгрузить();<br> <br> Таб = Новый ТабличныйДокумент;<br> Таб.ТолькоПросмотр = Истина;<br> таб.ОтображатьЗаголовки = ложь;<br> таб.ОтображатьСетку = ложь;<br> Макет = ПолучитьМакет("Долги");<br> ОблЗ = макет.ПолучитьОбласть("Заголовок");<br> ОблЗ.Параметры.ДатаКон = Формат(ВыбДатаКон,"ДФ=dd.MM.yyyy");<br> <br> ОблШ = Макет.ПолучитьОбласть("Шапка");<br> ОблПодразделение = Макет.ПолучитьОбласть("Подразделение");<br> ОблИтПодразделение = Макет.ПолучитьОбласть("ИтогоПодразделение");<br> ОблКонтр = Макет.ПолучитьОбласть("Контрагент");<br> ОблИтог = Макет.ПолучитьОбласть("Всего");<br> Обл6201 = Макет.ПолучитьОбласть("Для6201");<br> Обл6202 = Макет.ПолучитьОбласть("Для6202");<br> <br> выбПодр = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);<br> Состояние("Заполнение выходной таблицы...");<br> Таб.Вывести(ОблЗ);<br> Таб.Вывести(ОблШ);<br> <br> ИтНамДолжны = 0; итМыДолжны = 0;<br> ПодрНамДолжны = 0; ПодрМыДолжны = 0;<br> <br> ТЗКонтр = новый ТаблицаЗначений;<br> ТЗКонтр.Колонки.Добавить("Контрагент");<br> ТЗКонтр.Колонки.Добавить("СуммаОстаток");<br> ТЗКонтр.Колонки.Добавить("ДатаДолга");<br> ТЗКонтр.Колонки.Добавить("Счет");<br> ТЗКонтр.Колонки.Добавить("Порядок");<br> ИтогоПоРазделу1 = 0;<br> ИтогоПоРазделу2 = 0;<br> ИтогоПоРазделу3 = 0;<br> ИтогоПоРазделу4 = 0;<br> ИтогоПоРазделу5 = 0;<br><br> Пока выбПодр.Следующий() Цикл<br> НеБыло6201 = 1;<br> НеБыло6202 = 1;<br> НеБыло6203 = 1;<br> НеБыло6204 = 1;<br> НеБыло6205 = 1;<br> ИтНамДолжны = 0; итМыДолжны = 0;<br> Если выбПодр.СуммаОстаток=0 Тогда<br> продолжить;<br> КонецЕсли;<br> ОблПодразделение.Параметры.ПодразделениеПредставление = СокрЛП(выбподр.Субконто2Подразделение.Наименование);<br> ОблПодразделение.Параметры.Подразделение = выбподр.Субконто2Подразделение;<br> таб.Вывести(ОблПодразделение);<br> таб.НачатьГруппуСтрок("Подразделение");<br> ТЗКонтр.Очистить();<br> выбКонтр = выбПодр.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);<br> Пока выбКонтр.Следующий() Цикл<br> Если выбКонтр.СуммаОстаток=0 Тогда<br> продолжить;<br> КонецЕсли;<br> <br> выб = выбКонтр.Выбрать();<br> Если (сокрЛП(выбКонтр.Контрагент)<>"""") Тогда<br> СуммаДолга=0;<br> стр = ТЗКонтр.Добавить();<br> стр.Контрагент = выбКонтр.Контрагент;<br> стр.СуммаОстаток = выбКонтр.СуммаОстаток; <br> Иначе<br> Пока выб.Следующий() Цикл<br> Если СокрЛП(выб.Контрагент)<>"""" Тогда<br> прервать;<br> КонецЕсли;<br> стр = ТЗКонтр.Добавить();<br> стр.Контрагент = выб.Контрагент;<br> стр.счет = выб.счет;<br> Если СокрЛП(выб.счет)="76.09" Тогда<br> стр.СуммаОстаток = -выб.СуммаОстаток;<br> Иначе<br> стр.СуммаОстаток = выб.СуммаОстаток;<br> КонецЕсли;<br> КонецЦикла;<br> КонецЕсли;<br> суммаПоКонтрагенту = выбКонтр.СуммаОстаток;<br> //найдем дату возникновения долга <br> МаксДата = Дата('00010101'); <br> МаксСумма = 0;<br> Пока выб.Следующий() Цикл<br> Если модуль(выб.СуммаОстаток)>= модуль(МаксСумма) Тогда<br> МаксСумма = модуль(выб.СуммаОстаток);<br> стр.Счет = Выб.Счет;<br> КонецЕсли;<br> //должны быть одного знака<br> Если СписокСчетов2.НайтиПоЗначению(выб.Счет)<>неопределено Тогда<br> Отб = новый Структура;<br> Отб.Вставить("Счет",выб.Счет);<br> Отб.Вставить("Субконто1",выб.Контрагент);<br> строки = ТЗДоп.НайтиСтроки(Отб);<br> для каждого стрДоп Из строки Цикл<br> Если суммаПоКонтрагенту*стрДоп.Сумма>0 Тогда<br> МаксДата = стрДоп.РегистраторДата;<br> прервать;<br> КонецЕсли; <br> КонецЦикла; <br> прервать;<br> Иначе<br> Если суммаПоКонтрагенту*выб.СуммаОстаток>0 Тогда<br> МаксДата = Макс(МаксДата,выб.ДатаВозникновенияДолга);<br> КонецЕсли; <br> КонецЕсли; <br> КонецЦикла; <br> Если Формат(МаксДата,"ДФ=dd.MM.yy;") = "31.12.07" Тогда<br> МаксДата = Дата('00010101');<br> КонецЕсли; <br> стр.ДатаДолга = МаксДата;<br> КонецЦикла; <br> ТЗКонтр.Сортировать("Счет Возр,ДатаДолга Возр");<br> // Если СокрЛП(выбподр.Субконто2Подразделение.Наименование)="Производство спец. технологического оборудования" Тогда<br> СтрокаСчетов="62.01,76.06,62.02,76.06,60.01,76.05,76.09,60.21,60.02,76.02,60.32";<br> РаскидатьПоСчетам(ТЗКонтр,СтрокаСчетов);<br> ТЗКонтр.Сортировать("Порядок");<br> // КонецЕсли;<br> для каждого стр из ТЗКонтр Цикл<br> Если стр.СуммаОстаток>0 Тогда<br> //нам должны<br> ОблКонтр.Параметры.ВсегоМыДолжны = 0;<br> ОблКонтр.Параметры.ВсегоНамДолжны = стр.СуммаОстаток;<br> ИтНамДолжны = ИтНамДолжны + стр.СуммаОстаток;<br> ПодрНамДолжны = ПодрНамДолжны + стр.СуммаОстаток; <br> ИначеЕсли стр.СуммаОстаток<0 Тогда<br> //мы должны<br> ОблКонтр.Параметры.ВсегоМыДолжны = -стр.СуммаОстаток;<br> ОблКонтр.Параметры.ВсегоНамДолжны = 0;<br> ИтМыДолжны = ИтМыДолжны - стр.СуммаОстаток;<br> ПодрМыДолжны = ПодрМыДолжны - стр.СуммаОстаток; <br> КонецЕсли;<br> <br> Если (НеБыло6201=1) и (Найти("62.01,76.06",СокрЛП(стр.счет))<>0) Тогда<br> НеБыло6201=0;<br> Обл6201.Параметры.ЗаголовокРасчетов = "Расчеты с покупателями и заказчиками за отгруженную продукцию";<br> Таб.Вывести(Обл6201); <br> КонецЕсли;<br> Если (НеБыло6202=1) и ((СокрЛП(стр.счет)="62.02") или ((СокрЛП(стр.счет) = "76.06")и (стр.СуммаОстаток<0))) Тогда<br> НеБыло6201=0;<br> НеБыло6202=0;<br> Обл6201.Параметры.ЗаголовокРасчетов = "Авансы полученные от покупателей";<br> Таб.Вывести(Обл6201);<br> КонецЕсли;<br> Если (НеБыло6203=1) и ((Найти ("60.01,76.09,60.21",СокрЛП(стр.счет))<>0) или ((СокрЛП(стр.счет) = "76.05") и (стр.СуммаОстаток<0))) Тогда<br> НеБыло6201=0;<br> НеБыло6202=0;<br> НеБыло6203=0;<br> Обл6201.Параметры.ЗаголовокРасчетов = "Задолженность перед поставщиками и подрядчиками";<br> Таб.Вывести(Обл6201);<br> КонецЕсли;<br> Если (НеБыло6204=1) и ((Найти("60.02",СокрЛП(стр.счет))<>0) или ((СокрЛП(стр.счет) = "76.05") и (стр.СуммаОстаток>0))) Тогда<br> НеБыло6201=0;<br> НеБыло6202=0;<br> НеБыло6203=0;<br> НеБыло6204=0;<br> Обл6201.Параметры.ЗаголовокРасчетов = "Авансы выданные";<br> Таб.Вывести(Обл6201);<br> КонецЕсли;<br> Если (НеБыло6205=1) и (Найти("76.02",СокрЛП(стр.счет))<>0) Тогда<br> НеБыло6201=0;<br> НеБыло6202=0;<br> НеБыло6203=0;<br> НеБыло6204=0;<br> НеБыло6205=0;<br> Обл6201.Параметры.ЗаголовокРасчетов = "Расчеты по претензиям";<br> Таб.Вывести(Обл6201); <br> КонецЕсли;<br> <br> Если Небыло6201=0 Тогда<br> Если Небыло6202=0 Тогда<br> Если Небыло6203=0 Тогда<br> Если Небыло6204=0 Тогда<br> Если Небыло6205=0 Тогда<br> ИтогоПоРазделу5=ИтогоПоРазделу5+модуль(стр.СуммаОстаток); <br> Иначе<br> ИтогоПоРазделу4=ИтогоПоРазделу4+модуль(стр.СуммаОстаток);<br> КонецЕсли;<br> Иначе<br> ИтогоПоРазделу3=ИтогоПоРазделу3+модуль(стр.СуммаОстаток);<br> КонецЕсли; <br> Иначе<br> ИтогоПоРазделу2=ИтогоПоРазделу2+модуль(стр.СуммаОстаток);<br> КонецЕсли;<br> Иначе<br> ИтогоПоРазделу1=ИтогоПоРазделу1+модуль(стр.СуммаОстаток);<br> КонецЕсли;<br> Иначе<br> Сообщить("Пустой счет");<br> КонецЕсли;<br> ОблКонтр.Параметры.КонтрагентПредставление = СокрЛП(стр.Контрагент.Наименование);<br> ОблКонтр.Параметры.Контрагент = стр.Контрагент;<br> ОблКонтр.Параметры.счет = стр.счет;<br> ОблКонтр.Параметры.ДатаДолга = Формат(стр.ДатаДолга,"ДФ=dd.MM.yy; ДП=' . . '");<br> таб.Вывести(ОблКонтр);<br> КонецЦикла; <br> таб.ЗакончитьГруппуСтрок();<br> ОблИтПодразделение.Параметры.ПодразделениеПредставление = СокрЛП(выбподр.Субконто2Подразделение.Наименование);<br> ОблИтПодразделение.Параметры.МыДолжны = ИтМыДолжны;<br> ОблИтПодразделение.Параметры.НамДолжны = ИтНамДолжны;<br> таб.Вывести(ОблИтПодразделение);<br> сумма1=ИтогоПоРазделу1+ИтогоПоРазделу4+ИтогоПоРазделу5;<br> сумма2=ИтогоПоРазделу2+ИтогоПоРазделу3;<br> //сообщить("ИтогоПоРазделу1+ИтогоПоРазделу4="+сумма1);<br> //сообщить("ИтогоПоРазделу2+ИтогоПоРазделу3="+сумма2);<br> //сообщить("Подразделение="+СокрЛП(выбподр.Субконто2Подразделение.Наименование));<br> КонецЦикла; <br><br> Обл6202.Параметры.ЗаголовокРасчетов = "Итого: расчеты с покупателями и заказчиками за отгруженную продукцию";<br> Обл6202.Параметры.ИтогПоРазделуК = ИтогоПоРазделу1;<br> Обл6202.Параметры.ИтогПоРазделуД = 0;<br> Таб.Вывести(Обл6202);<br> Обл6202.Параметры.ЗаголовокРасчетов = "Итого: авансы полученные от покупателей";<br> Обл6202.Параметры.ИтогПоРазделуД = ИтогоПоРазделу2;<br> Обл6202.Параметры.ИтогПоРазделуК = 0;<br> Таб.Вывести(Обл6202);<br> Обл6202.Параметры.ЗаголовокРасчетов = "Итого: задолженность перед поставщиками и подрядчиками";<br> Обл6202.Параметры.ИтогПоРазделуД = ИтогоПоРазделу3;<br> Обл6202.Параметры.ИтогПоРазделуК = 0;<br> Таб.Вывести(Обл6202);<br> Обл6202.Параметры.ЗаголовокРасчетов = "Итого: авансы выданные";<br> Обл6202.Параметры.ИтогПоРазделуК = ИтогоПоРазделу4;<br> Обл6202.Параметры.ИтогПоРазделуД = 0;<br> Таб.Вывести(Обл6202); <br> Обл6202.Параметры.ЗаголовокРасчетов = "Итого: Расчеты по претензиям";<br> Обл6202.Параметры.ИтогПоРазделуК = ИтогоПоРазделу5;<br> Обл6202.Параметры.ИтогПоРазделуД = 0;<br> Таб.Вывести(Обл6202);<br> <br> ОблИтог.Параметры.ВсегоМыДолжны = ПодрМыДолжны;<br> ОблИтог.Параметры.ВсегоНамДолжны = ПодрНамДолжны;<br> таб.Вывести(ОблИтог);<br> Таб.Показать();<br> <br>КонецПроцедуры;<br><br><br><br><br>Я так понимаю строка струсл должна, при том или ином условии быть добавлена в текст запроса.<br>Но она дальше вообще нигде не фигурирует. Либо не хватает какого то цикла, который отфильтровывал бы ненужные подразделения. Если не сложно приведите пример исправления."