Бухгалтерский учет, налогообложение, отчетность, МСФО, анализ бухгалтерской информации, 1С:Бухгалтерия

Форум

Развернуть все [Прочее] Не работает отбор по подразделению во внешнем отчете
DimaZagaynov
Пост №1
DimaZagaynov
читатель
офлайн
Дата регистрации: 10.11.2010
Сообщений: 6
Пост №1
 
10.11.2010 21:09

"во внешнем отчете не работает отбор по подразделению. то есть когда в самой 1С Предприятие выбираешь какое-нибудь подразделение, он должен выводить отчет только по выбранному подразделению, а выводит все равно по всем.
вот код в конфигурации:
Процедура КнопкаСформироватьНажатие(Кнопка)

струслном="""";
Если ЗначениеЗаполнено(ВыбКонтрагент) Тогда
      Если ТипЗнч(ВыбКонтрагент) = Тип("СписокЗначений") Тогда
       струслном = "Субконто1 В (&ВыбКонтрагент)";
      ИначеЕсли ВыбКонтрагент.ЭтоГруппа Тогда
       струслном = "Субконто1 В ИЕРАРХИИ (&ВыбКонтрагент)";
      Иначе
       струслном = "Субконто1 = &ВыбКонтрагент";      
      КонецЕсли;
КонецЕсли;
струсл = """";
Если ЗначениеЗаполнено(ВыбПодразделение) Тогда
      Если струсл="""" Тогда
       струсл = "Субконто2.Подразделение = &ВыбПодразделение";
      Иначе
       струсл = струсл+ "И Субконто2.Подразделение = &ВыбПодразделение";
      КонецЕсли;
КонецЕсли;

Запрос = Новый Запрос("ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
| МАКСИМУМ(ЕстьNULL(ХозрасчетныйОстатки.Субконто3.Дата,&ПустаяДата)) КАК ДатаВозникновенияДолга,
| СУММА(ХозрасчетныйОстатки.СуммаОстаток) КАК СуммаОстаток,
| ВЫБОР
|      КОГДА ХозрасчетныйОстатки.Субконто2 ССЫЛКА Справочник.ДоговорыКонтрагентов
|       ТОГДА ВЫБОР
|             КОГДА ХозрасчетныйОстатки.Субконто2 = &ПустойДоговор
|                  ТОГДА &ПустоеПодр
|             ИНАЧЕ ХозрасчетныйОстатки.Субконто2.Подразделение
|            КОНЕЦ
|      ИНАЧЕ &Бухгалтерия
| КОНЕЦ КАК Субконто2Подразделение,
| ХозрасчетныйОстатки.Счет
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаКон, Счет В ИЕРАРХИИ (&СписокСчетов), , ) КАК ХозрасчетныйОстатки
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки.Субконто1,
| ХозрасчетныйОстатки.Счет,
| ВЫБОР
|      КОГДА ХозрасчетныйОстатки.Субконто2 ССЫЛКА Справочник.ДоговорыКонтрагентов
|       ТОГДА ВЫБОР
|             КОГДА ХозрасчетныйОстатки.Субконто2 = &ПустойДоговор
|                  ТОГДА &ПустоеПодр
|             ИНАЧЕ ХозрасчетныйОстатки.Субконто2.Подразделение
|            КОНЕЦ
|      ИНАЧЕ &Бухгалтерия
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| Субконто2Подразделение,
| Контрагент,
| ДатаВозникновенияДолга
|ИТОГИ
| СУММА(СуммаОстаток)
|ПО
| Субконто2Подразделение,
| Контрагент");

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

Запрос.УстановитьПараметр("Бухгалтерия",Справочники.ПодразделенияОрганизаций.НайтиПоКоду("4"));
Запрос.УстановитьПараметр("ПустоеПодр",Справочники.ПодразделенияОрганизаций.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустойДоговор",Справочники.ДоговорыКонтрагентов.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаяДата",Дата('00010101'));

Запрос.УстановитьПараметр("СписокСчетов",СписокСчетов);


Если ЗначениеЗаполнено(ВыбКонтрагент) Тогда
      Запрос.УстановитьПараметр("ВыбКонтрагент",ВыбКонтрагент);
КонецЕсли;

Если ЗначениеЗаполнено(ВыбПодразделение) Тогда
      Запрос.УстановитьПараметр("ВыбПодразделение",ВыбПодразделение);
КонецЕсли;
      
//сделаем дополнительный запрос
//сумма обборота по счетам
ЗапросДоп = новый Запрос("ВЫБРАТЬ
| ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
| ХозрасчетныйОбороты.Счет КАК Счет,
| ХозрасчетныйОбороты.Регистратор.Дата КАК РегистраторДата,
| ХозрасчетныйОбороты.Регистратор КАК Регистратор,
| ХозрасчетныйОбороты.СуммаОборот КАК Сумма
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(, &ДатаКон, Регистратор, Счет В (&СписокСчетов), , , , ) КАК ХозрасчетныйОбороты
|
|УПОРЯДОЧИТЬ ПО
| Субконто1,
| РегистраторДата УБЫВ");

ЗапросДоп.УстановитьПараметр("ДатаКон", КонецДня(ВыбДатаКон));
ЗапросДоп.УстановитьПараметр("СписокСчетов", СписокСчетов2);
ТЗДоп = ЗапросДоп.Выполнить().Выгрузить();

Таб = Новый ТабличныйДокумент;
Таб.ТолькоПросмотр = Истина;
таб.ОтображатьЗаголовки = ложь;
таб.ОтображатьСетку = ложь;
Макет = ПолучитьМакет("Долги");
ОблЗ = макет.ПолучитьОбласть("Заголовок");
ОблЗ.Параметры.ДатаКон = Формат(ВыбДатаКон,"ДФ=dd.MM.yyyy");

ОблШ = Макет.ПолучитьОбласть("Шапка");
ОблПодразделение = Макет.ПолучитьОбласть("Подразделение");
ОблИтПодразделение = Макет.ПолучитьОбласть("ИтогоПодразделение");
ОблКонтр = Макет.ПолучитьОбласть("Контрагент");
ОблИтог = Макет.ПолучитьОбласть("Всего");
Обл6201 = Макет.ПолучитьОбласть("Для6201");
Обл6202 = Макет.ПолучитьОбласть("Для6202");

выбПодр = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Состояние("Заполнение выходной таблицы...");
Таб.Вывести(ОблЗ);
Таб.Вывести(ОблШ);

ИтНамДолжны = 0; итМыДолжны = 0;
ПодрНамДолжны = 0; ПодрМыДолжны = 0;

ТЗКонтр = новый ТаблицаЗначений;
ТЗКонтр.Колонки.Добавить("Контрагент");
ТЗКонтр.Колонки.Добавить("СуммаОстаток");
ТЗКонтр.Колонки.Добавить("ДатаДолга");
ТЗКонтр.Колонки.Добавить("Счет");
ТЗКонтр.Колонки.Добавить("Порядок");
ИтогоПоРазделу1 = 0;
ИтогоПоРазделу2 = 0;
ИтогоПоРазделу3 = 0;
ИтогоПоРазделу4 = 0;
ИтогоПоРазделу5 = 0;

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

Обл6202.Параметры.ЗаголовокРасчетов = "Итого: расчеты с покупателями и заказчиками за отгруженную продукцию";
Обл6202.Параметры.ИтогПоРазделуК = ИтогоПоРазделу1;
Обл6202.Параметры.ИтогПоРазделуД = 0;
Таб.Вывести(Обл6202);
Обл6202.Параметры.ЗаголовокРасчетов = "Итого: авансы полученные от покупателей";
Обл6202.Параметры.ИтогПоРазделуД = ИтогоПоРазделу2;
Обл6202.Параметры.ИтогПоРазделуК = 0;
Таб.Вывести(Обл6202);
Обл6202.Параметры.ЗаголовокРасчетов = "Итого: задолженность перед поставщиками и подрядчиками";
Обл6202.Параметры.ИтогПоРазделуД = ИтогоПоРазделу3;
Обл6202.Параметры.ИтогПоРазделуК = 0;
Таб.Вывести(Обл6202);
Обл6202.Параметры.ЗаголовокРасчетов = "Итого: авансы выданные";
Обл6202.Параметры.ИтогПоРазделуК = ИтогоПоРазделу4;
Обл6202.Параметры.ИтогПоРазделуД = 0;
Таб.Вывести(Обл6202);
Обл6202.Параметры.ЗаголовокРасчетов = "Итого: Расчеты по претензиям";
Обл6202.Параметры.ИтогПоРазделуК = ИтогоПоРазделу5;
Обл6202.Параметры.ИтогПоРазделуД = 0;
Таб.Вывести(Обл6202);

ОблИтог.Параметры.ВсегоМыДолжны = ПодрМыДолжны;
ОблИтог.Параметры.ВсегоНамДолжны = ПодрНамДолжны;
таб.Вывести(ОблИтог);
Таб.Показать();

КонецПроцедуры;




Я так понимаю строка струсл должна, при том или ином условии быть добавлена в текст запроса.
Но она дальше вообще нигде не фигурирует. Либо не хватает какого то цикла, который отфильтровывал бы ненужные подразделения. Если не сложно приведите пример исправления."

 
DimaZagaynov
Пост №1
10.11.2010 21:09
 

"во внешнем отчете не работает отбор по подразделению. то есть когда в самой 1С Предприятие выбираешь какое-нибудь подразделение, он должен выводить отчет только по выбранному подразделению, а выводит все равно по всем.
вот код в конфигурации:
Процедура КнопкаСформироватьНажатие(Кнопка)

струслном="""";
Если ЗначениеЗаполнено(ВыбКонтрагент) Тогда
      Если ТипЗнч(ВыбКонтрагент) = Тип("СписокЗначений") Тогда
       струслном = "Субконто1 В (&ВыбКонтрагент)";
      ИначеЕсли ВыбКонтрагент.ЭтоГруппа Тогда
       струслном = "Субконто1 В ИЕРАРХИИ (&ВыбКонтрагент)";
      Иначе
       струслном = "Субконто1 = &ВыбКонтрагент";      
      КонецЕсли;
КонецЕсли;
струсл = """";
Если ЗначениеЗаполнено(ВыбПодразделение) Тогда
      Если струсл="""" Тогда
       струсл = "Субконто2.Подразделение = &ВыбПодразделение";
      Иначе
       струсл = струсл+ "И Субконто2.Подразделение = &ВыбПодразделение";
      КонецЕсли;
КонецЕсли;

Запрос = Новый Запрос("ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
| МАКСИМУМ(ЕстьNULL(ХозрасчетныйОстатки.Субконто3.Дата,&ПустаяДата)) КАК ДатаВозникновенияДолга,
| СУММА(ХозрасчетныйОстатки.СуммаОстаток) КАК СуммаОстаток,
| ВЫБОР
|      КОГДА ХозрасчетныйОстатки.Субконто2 ССЫЛКА Справочник.ДоговорыКонтрагентов
|       ТОГДА ВЫБОР
|             КОГДА ХозрасчетныйОстатки.Субконто2 = &ПустойДоговор
|                  ТОГДА &ПустоеПодр
|             ИНАЧЕ ХозрасчетныйОстатки.Субконто2.Подразделение
|            КОНЕЦ
|      ИНАЧЕ &Бухгалтерия
| КОНЕЦ КАК Субконто2Подразделение,
| ХозрасчетныйОстатки.Счет
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаКон, Счет В ИЕРАРХИИ (&СписокСчетов), , ) КАК ХозрасчетныйОстатки
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОстатки.Субконто1,
| ХозрасчетныйОстатки.Счет,
| ВЫБОР
|      КОГДА ХозрасчетныйОстатки.Субконто2 ССЫЛКА Справочник.ДоговорыКонтрагентов
|       ТОГДА ВЫБОР
|             КОГДА ХозрасчетныйОстатки.Субконто2 = &ПустойДоговор
|                  ТОГДА &ПустоеПодр
|             ИНАЧЕ ХозрасчетныйОстатки.Субконто2.Подразделение
|            КОНЕЦ
|      ИНАЧЕ &Бухгалтерия
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| Субконто2Подразделение,
| Контрагент,
| ДатаВозникновенияДолга
|ИТОГИ
| СУММА(СуммаОстаток)
|ПО
| Субконто2Подразделение,
| Контрагент");

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

Запрос.УстановитьПараметр("Бухгалтерия",Справочники.ПодразделенияОрганизаций.НайтиПоКоду("4"));
Запрос.УстановитьПараметр("ПустоеПодр",Справочники.ПодразделенияОрганизаций.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустойДоговор",Справочники.ДоговорыКонтрагентов.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаяДата",Дата('00010101'));

Запрос.УстановитьПараметр("СписокСчетов",СписокСчетов);


Если ЗначениеЗаполнено(ВыбКонтрагент) Тогда
      Запрос.УстановитьПараметр("ВыбКонтрагент",ВыбКонтрагент);
КонецЕсли;

Если ЗначениеЗаполнено(ВыбПодразделение) Тогда
      Запрос.УстановитьПараметр("ВыбПодразделение",ВыбПодразделение);
КонецЕсли;
      
//сделаем дополнительный запрос
//сумма обборота по счетам
ЗапросДоп = новый Запрос("ВЫБРАТЬ
| ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
| ХозрасчетныйОбороты.Счет КАК Счет,
| ХозрасчетныйОбороты.Регистратор.Дата КАК РегистраторДата,
| ХозрасчетныйОбороты.Регистратор КАК Регистратор,
| ХозрасчетныйОбороты.СуммаОборот КАК Сумма
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(, &ДатаКон, Регистратор, Счет В (&СписокСчетов), , , , ) КАК ХозрасчетныйОбороты
|
|УПОРЯДОЧИТЬ ПО
| Субконто1,
| РегистраторДата УБЫВ");

ЗапросДоп.УстановитьПараметр("ДатаКон", КонецДня(ВыбДатаКон));
ЗапросДоп.УстановитьПараметр("СписокСчетов", СписокСчетов2);
ТЗДоп = ЗапросДоп.Выполнить().Выгрузить();

Таб = Новый ТабличныйДокумент;
Таб.ТолькоПросмотр = Истина;
таб.ОтображатьЗаголовки = ложь;
таб.ОтображатьСетку = ложь;
Макет = ПолучитьМакет("Долги");
ОблЗ = макет.ПолучитьОбласть("Заголовок");
ОблЗ.Параметры.ДатаКон = Формат(ВыбДатаКон,"ДФ=dd.MM.yyyy");

ОблШ = Макет.ПолучитьОбласть("Шапка");
ОблПодразделение = Макет.ПолучитьОбласть("Подразделение");
ОблИтПодразделение = Макет.ПолучитьОбласть("ИтогоПодразделение");
ОблКонтр = Макет.ПолучитьОбласть("Контрагент");
ОблИтог = Макет.ПолучитьОбласть("Всего");
Обл6201 = Макет.ПолучитьОбласть("Для6201");
Обл6202 = Макет.ПолучитьОбласть("Для6202");

выбПодр = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Состояние("Заполнение выходной таблицы...");
Таб.Вывести(ОблЗ);
Таб.Вывести(ОблШ);

ИтНамДолжны = 0; итМыДолжны = 0;
ПодрНамДолжны = 0; ПодрМыДолжны = 0;

ТЗКонтр = новый ТаблицаЗначений;
ТЗКонтр.Колонки.Добавить("Контрагент");
ТЗКонтр.Колонки.Добавить("СуммаОстаток");
ТЗКонтр.Колонки.Добавить("ДатаДолга");
ТЗКонтр.Колонки.Добавить("Счет");
ТЗКонтр.Колонки.Добавить("Порядок");
ИтогоПоРазделу1 = 0;
ИтогоПоРазделу2 = 0;
ИтогоПоРазделу3 = 0;
ИтогоПоРазделу4 = 0;
ИтогоПоРазделу5 = 0;

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

Обл6202.Параметры.ЗаголовокРасчетов = "Итого: расчеты с покупателями и заказчиками за отгруженную продукцию";
Обл6202.Параметры.ИтогПоРазделуК = ИтогоПоРазделу1;
Обл6202.Параметры.ИтогПоРазделуД = 0;
Таб.Вывести(Обл6202);
Обл6202.Параметры.ЗаголовокРасчетов = "Итого: авансы полученные от покупателей";
Обл6202.Параметры.ИтогПоРазделуД = ИтогоПоРазделу2;
Обл6202.Параметры.ИтогПоРазделуК = 0;
Таб.Вывести(Обл6202);
Обл6202.Параметры.ЗаголовокРасчетов = "Итого: задолженность перед поставщиками и подрядчиками";
Обл6202.Параметры.ИтогПоРазделуД = ИтогоПоРазделу3;
Обл6202.Параметры.ИтогПоРазделуК = 0;
Таб.Вывести(Обл6202);
Обл6202.Параметры.ЗаголовокРасчетов = "Итого: авансы выданные";
Обл6202.Параметры.ИтогПоРазделуК = ИтогоПоРазделу4;
Обл6202.Параметры.ИтогПоРазделуД = 0;
Таб.Вывести(Обл6202);
Обл6202.Параметры.ЗаголовокРасчетов = "Итого: Расчеты по претензиям";
Обл6202.Параметры.ИтогПоРазделуК = ИтогоПоРазделу5;
Обл6202.Параметры.ИтогПоРазделуД = 0;
Таб.Вывести(Обл6202);

ОблИтог.Параметры.ВсегоМыДолжны = ПодрМыДолжны;
ОблИтог.Параметры.ВсегоНамДолжны = ПодрНамДолжны;
таб.Вывести(ОблИтог);
Таб.Показать();

КонецПроцедуры;




Я так понимаю строка струсл должна, при том или ином условии быть добавлена в текст запроса.
Но она дальше вообще нигде не фигурирует. Либо не хватает какого то цикла, который отфильтровывал бы ненужные подразделения. Если не сложно приведите пример исправления."

 
BelikovS
Пост №2
"Да уж - интересный запрос. Мне особенно понравило...
11.11.2010 09:53
 
 
DimaZagaynov
Пост №3
"| РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата...
11.11.2010 10:47
 
 
BelikovS
Пост №4
" струсл = "Субконто2.Подразделение = &ВыбПодразде...
11.11.2010 10:51
 
 
DimaZagaynov
Пост №5
"если так:струсл="Субконто2.Подразделение = &ВыбПо...
11.11.2010 11:11
 
 
DimaZagaynov
Пост №6
Спасибо большое, все получилось)))
11.11.2010 11:15
 

Читают тему:

1 гостей
Быстрый переход
Для технических специалистов
  • Учет, налогообложение, автоматизация
  • Книга жалоб и предложений по работе сайта
  • Для технических специалистов
  • Представление регламентированной отчетности
  • Говорильня
  • Бухгалтерский учет: обсуждаем проекты нормативных актов и рекомендаций по ведению учета от БМЦ
  • Интернет-конференция: Оформление командировок по новым правилам
  • ЕГАИС

1С бесплатно 1С-Отчетность 1С-Такском 1С:ERP Управление предприятием 1С:Бесплатно 1С:Бухгалтерия 8 1С:Бухгалтерия 8 КОРП 1С:Бухгалтерия автономного учреждения 1С:Бухгалтерия государственного учреждения 1С:Бюджет муниципального образования 1С:Бюджет поселения 1С:Вещевое довольствие 1С:Деньги 1С:Документооборот 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры государственного учреждения 1С:Зарплата и управление персоналом 1С:Зарплата и управление персоналом КОРП 1С:Комплексная автоматизация 8 1С:Лекторий 1С:Предприятие 1С:Предприятие 7.7 1С:Предприятие 8 1С:Розница 1С:Управление небольшой фирмой 1С:Управление производственным предприятием 1С:Управление торговлей 1СПАРК-Риски 1СПредприятие 8 2-НДФЛ 3-НДФЛ 4-ФСС 5 минут 6-НДФЛ CRM Агентский договор. Учет административная ответственность адресный классификатор акцизы алкоголь алкогольная продукция амортизационная премия амортизация арбитражная практика аттестация рабочих мест аудит аудиторские организации база 1с база для начисления страховых взносов база по страховым взносам база по налогу на прибыль банк и касса в 1с банкротство безнадежная задолженность безналичные расчеты бланки строгой отчетности больничное пособие больничный листок бухгалтер бухгалтерия автономного учреждения бухгалтерская отчетность бухгалтерские события бухгалтерский баланс бухгалтерский учет бухучет Бытовые услуги. Учет бюджет муниципального образования бюджет поселения бюджетная отчетность бюджетный учет ВАС РФ Вахтовый метод.Оплата ввоз товаров взаимозависимые_лица взноcы в ПФР взносы в ФОМС взносы в ФСС взносы на травматизм видео 1С водный налог возврат переплаты восстановление НДС вывоз товаров выездная налоговая проверка выездная проверка выплата зарплаты выплаты иностранному работнику выплаты работникам выплаты физическим лицам высококвалифицированные специалисты вычет НДС вычеты по НДФЛ ВЭД ГК РФ госпошлина государственная регистрация государственные и муниципальные закупки гражданско-правовой договор графики работы двойное налогообложение дебиторка декларация по алкоголю декларация по ЕНВД декларация по НДС денежные документы День Бухгалтерии детские пособия ДиректБанк договор комиссии договор подряда договор поставки договор транспортной экспедиции договорная политика документальное оформление документооборот долговые обязательства должная осмотрительность доходы организации ЕГАИС ЕГРЮЛ ежемесячная отчетность ЕНВД ЕСН ЕСХН задержка заработной платы задолженность по налогам займы закон о бухгалтерском учете занимательная бухгалтерия заработная плата зарплата зарплатные налоги зарубежная командировка защита персональных данных заявление о постановке на учет земельный налог изменения 2015 изменения в законодательстве изменения в законодательстве 2012 изменения в законодательстве 2013 имущественные вычеты имущественный налоговый вычет индивидуальный предприниматель иностранные компании иностранный работник интернет-компании интернет-магазины ИП ИП на ЕНВД ИС 1С:ИТС исправление бухгалтерских ошибок исправление ошибок ИТС ИФНС кадастровая стоимость кадровое оформление камеральная проверка кассовая дисциплина кассовые операции КБК квоты на иностранных рабочих КИК ККТ КЛАДР ключевая ставка книга на УСН книга покупок книга продаж КоАП РФ коды видов продукции командировка командировочные расходы компенсации работникам компенсационные выплаты компенсация за отпуск консервация основных средств консолидированная группа контролируемые сделки корректировочный счет-фактура коэффициент-дефлятор крупнейшие налогоплательщики курортный сбор курсовые разницы лизинг лизинговое имущество ликвидация организации лицензирование льготы по ндс малый бизнес маркировка изделий маркировка изделий из натурального меха маркировка меховых изделий маркировка товара материальная выгода материальная помощь материнский капитал международные стандарты миниденьги модернизация основных средств МРОТ МСФО наличные расчеты налог на игорный бизнес налог на имущество налог на имущество физических лиц налог на прибыль налоги физических лиц налоговая база по налогу на прибыль налоговая база по ндс налоговая база по НДС налоговая декларация налоговая ответственность налоговая отчетность налоговая политика налоговая проверка налоговое администрирование налоговые каникулы налоговые льготы налоговые проверки налоговый агент налоговый агент НДФЛ налоговый агент по НДС налоговый агент по НДФЛ налоговый агент по ндфл налоговый вычет налоговый контроль налоговый мониторинг налоговый учет налогообложение доходов налогоплательщик начисление пени НДПИ НДС НДС по ставке 10% НДС при ввозе НДС при экспорте НДС-2015 НДФЛ некоммерческие организации учет неотделимые улучшения нерезиденты НИОКР НК РФ НМА новая форма декларации новая форма расчета новости нормы естественной убыли нулевая декларация нулевая ставка обзор обзор бухгалтерских событий обзор новостей обмен документами обновление КЛАДР обособленное подразделение обособленные подразделения обучение 1с оказание услуг ОКВЭД2 ОКПД2 онлайн-касса онлайн-ккт онлайн-ККТ освобождение от налогообложения освобождение от ндс освобождение от НДС основные средства отпускные отходы отчетность в ПФР отчетность в росстат отчетность в Росстат отчетность организации отчетность по страховым взносам отчетность предпринимателя оформление счета-фактуры охрана труда патентная система ПБУ 18 первичные документы перенос убытков персонифицированный учет план счетов плата за негативное воздействие на окружающую среду плата за проезд грузовиков платежи платежное поручение платежные документы 1с платежный агент платежный терминал повышение ставок подакцизные товары подтверждающие документы подтверждение расходов полномочия налоговых органов пониженные тарифы поправки в НК РФ поправки в тк рф поправки в ТК РФ порядок маркировки товаров пособие по беременности и родам пособие по временной нетрудоспособности пособие по нетрудоспособности пособия за счет ФСС посреднические договоры постановка на учет постановка на учет в налоговом органе права налогоплательщика представление сведений приказ Минфина применение ККТ приостановление операций по счету проверка ИНН/КПП проверка контрагентов продажа алкогольной продукции производственный календарь проф. Пятов профессиональные вычеты ПСН псн путевой лист работники-иностранцы раздельный учет расходы на ГСМ расходы на рекламу расходы организации расчет больничного листа расчет заработной платы расчет НДПИ расчет отпускных расчет себестоимости расчет страховых взносов расчетный счет расчеты с работниками регистрация недвижимости регистрация юридических лиц реконструкция основных средств ремонт основных средств реорганизация росалкогольрегулирование РСВ-1 рыночные цены самозанятые граждане свод отчетов сдача имущества в аренду секреты 1С:ЗУП сельскохозяйственный товаропроизводитель система "Платон" служебная командировка снижение ставок совместители совмещение налоговых режимов составление и сдача отчетности составление и сдача отчетности социальное страхование социальные вычеты социальный налоговый вычет спецоценка условий труда средний заработок ставка НДС Ставка НДФЛ ставка рефинансирования ставка УСН стандартные вычеты стандарты бухучета статистика статистическая отчетность статотчетность страхование страховые взносы страховые взносы в пфр страховые взносы в фсс страховые взносы в ФСС страховые взносы для самозанятых страховые взносы на травматизм страховые тарифы судебные издержки суммовые разницы суточные счет-фактура такси таможенные платежи таможенный союз ТК РФ торг-12 торговый сбор транспортный налог трудовая книжка трудовой договор увольнение по инициативе руководителя увольнение по соглашению сторон уголовная ответственность удержание алиментов УКД универсальный корректировочный документ УПД уплата налога уплата налогов упрощенная система налогообложения УСН уставный капитал уточненка утрата права на усн учет аренды учет в АО учет в ООО учет в сельском хозяйстве учет в строительстве учет в туризме учет дивидендов учет доходов при УСН учет доходов при усн учет импорта учет лизинга учет МПЗ учет на производстве учет ОС учет основных средств учет премий учет расходов учет расходов при УСН учет расходов при усн учет реализации учет скидок учет субсидий учет товаров учет ценных бумаг учет экспорта учетная политика учредительные документы факсимиле ФИАС финансовый анализ финансовый результат ФНС РФ форма 6-НДФЛ формы документов ФСС штрафные санкции ЭДО экологические платежи экспорт в страны ЕАЭС экспорт продукции электронная отчетность электронная подпись электронные счета-фактуры электронный документооборот электронный формат энциклопедия проверок

Все теги
X

Яндекс-виджет: Новости
Яндекс-виджет: Полезные материалы
Информеры