Как раскидать счита в отчете шахматным методом?

Форум 1С: Одинэс.Ру

Найти!

Как раскидать счита в отчете шахматным методом?

serjjj
03.07.2009 - 03:57
Здравствуйте. не получается раскидать сумму по счетам, шахматным "методом".
пробую так:
 
ОбластьСтрока0 = Макет.ПолучитьОбласть("Строка0|Глав");
ОбластьСтрокаДТ = Макет.ПолучитьОбласть("Строка0|Знач");
ОбластьСтрокаИт = Макет.ПолучитьОбласть("Строка0|Итоги");
 
ОбластьСтрока1 = Макет.ПолучитьОбласть("Строка1|Глав");
ОбластьСтрокаЗн = Макет.ПолучитьОбласть("Строка1|Знач");
 
............................................................
............................................................
ТабДок.Присоединить(ОбластьСтрока0);    
Для каждого счетТЗ из ТЗ цикл
    ОбластьСтрокаДТ.Параметры.СчетДт = СчетДт;
    ТабДок.Присоединить(ОбластьСтрокаДТ);
КонецЦикла;    
ТабДок.Присоединить(ОбластьСтрокаИт);
Для каждого счетТЗ1 из ТЗ цикл
    СчетДт1 = счетТЗ1.Счет;
    ЗапросШахмат.УстановитьПараметр("СчетДт",         СчетДт1);
    РезультатШах = ЗапросШахмат.Выполнить();
    ВыборкаШах = РезультатШах.Выбрать();
    Пока ВыборкаШах.Следующий() Цикл
        ОбластьСтрока1.Параметры.СчетКт = ВыборкаШах.СчетКт;
        ТабДок.Вывести(ОбластьСтрока1);
        ОбластьСтрокаЗн.Параметры.Сумма = ВыборкаШах.Сумма;
        ТабДок.Присоединить(ОбластьСтрокаЗн);
    КонецЦикла;
КонецЦикла;
 
результат:
Счет    8310             8310    8310    8310    Итого
3311    5 400 077,21                
8310    47 154,24                
3350    548 503,25                
3150    34 555,73                
3210    19 746,11                
8410    667 769,62
 

а нужно так раскидать эти суммы по счетам, как показано в этой таблице
 

Счет    921         922         923         924      Итого
635                            34555.6               34555.6
671    5400077.21                                    5400077.21
681                 548501.45                        548501.45
686                            19746.06              19746.06
920    47154.24                                      47154.24
930                                       667772.63  667772.63
 

 
в чем проблема моего програмного кода?
что я делаю не так?
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
18.04.2024 - 16:14
Смотри также:
Почему не работает простой запрос?
Загрузка данных в лист Excel
один запрос из двух

Re: Как раскидать счита в отчете шахматным методом?

Ef
1 - 03.07.2009 - 04:12
а что за конфа? Если БП может отчет "Шахматка" посмотреть?

Re: Как раскидать счита в отчете шахматным методом?

serjjj
2 - 03.07.2009 - 04:16
в данный момент его и смотрю, но мало в чем разбираюсь

Re: Как раскидать счита в отчете шахматным методом?

roma n
3 - 03.07.2009 - 04:33
присоединять в (0) надо даже если результат запроса пуст.
А по хорошему - см (1) - дергать базу для получения данных по очередному счету - негоже
.......
Эх, сменить бы пешки на рюмашки,-
Живо б прояснилось на доске
© Высоцкий В.С. "Честь шахматной короны. Игра"

Re: Как раскидать счита в отчете шахматным методом?

serjjj
4 - 03.07.2009 - 05:15
(3) результат запроса пустым не бывает вмоем запросе

Re: Как раскидать счита в отчете шахматным методом?

roma n
5 - 03.07.2009 - 05:23
(4) значит результат твой содержит данные не по всем счетам. Пытайся позиционироваться в выборке по значению нужных счетов методом НайтиСледующий(),  Пока ... Следующий() Цикл выбрось

Интересные темы

odines.ru
18.04.2024 - 16:14
Смотри также:
1С:Консолидация 8 - есть опыт работы?
Не загружается БП 8.1
Правила обмена

Re: Как раскидать счита в отчете шахматным методом?

serjjj
6 - 03.07.2009 - 05:57
вот что я имею:
ОбластьСтрока0 = Макет.ПолучитьОбласть("Строка0|Глав");
ОбластьСтрокаДТ = Макет.ПолучитьОбласть("Строка0|Знач");
ОбластьСтрокаИт = Макет.ПолучитьОбласть("Строка0|Итоги");
ОбластьСтрока1 = Макет.ПолучитьОбласть("Строка1|Глав");
ОбластьСтрокаЗн = Макет.ПолучитьОбласть("Строка1|Знач");//
ЗапросШахмат = Новый Запрос;
ЗапросШахмат.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТиповойДвиженияССубконто.СчетДт КАК СчетДт,
| ТиповойДвиженияССубконто.СчетКт КАК СчетКт,
| ТиповойДвиженияССубконто.СубконтоДт1,
| СУММА(ТиповойДвиженияССубконто.Сумма) КАК Сумма
|ИЗ
| РегистрБухгалтерии.Типовой.ДвиженияССубконто(&НачДата, &КонДата, СчетДт = &СчетДт) КАК ТиповойДвиженияССубконто
|ГДЕ
| ТиповойДвиженияССубконто.СубконтоДт1 = &Подразделение0
|
|СГРУППИРОВАТЬ ПО
| ТиповойДвиженияССубконто.СчетДт,
| ТиповойДвиженияССубконто.СчетКт,
| ТиповойДвиженияССубконто.СубконтоДт1";
ЗапросШахмат.УстановитьПараметр("НачДата", НачДата);
ЗапросШахмат.УстановитьПараметр("КонДата", КонДата1);  
ЗапросШахмат.УстановитьПараметр("Подразделение0", СубконтоДт1);
 
ТабДок.Присоединить(ОбластьСтрока0);
Для каждого счетТЗ из ТЗ цикл
ОбластьСтрокаДТ.Параметры.СчетДт = СчетДт;
ТабДок.Присоединить(ОбластьСтрокаДТ);
КонецЦикла;
хз=0;
ТабДок.Присоединить(ОбластьСтрокаИт);
Для каждого счетТЗ1 из ТЗ цикл
СчетДт1 = счетТЗ1.Счет;
ЗапросШахмат.УстановитьПараметр("СчетДт", СчетДт1);
РезультатШах = ЗапросШахмат.Выполнить();
ВыборкаШах = РезультатШах.Выбрать();
хз=хз+1;
Пока ВыборкаШах.Следующий() Цикл
ОбластьСтрока1.Параметры.СчетКт = ВыборкаШах.СчетКт;
ТабДок.Вывести(ОбластьСтрока1);
ОбластьСтрокаЗн.Параметры.Сумма = ВыборкаШах.Сумма;
ТабДок.Присоединить(ОбластьСтрокаЗн, хз);
КонецЦикла;
КонецЦикла;
 
СчетДт1 берется из другого запроса, количество этих счетов не ограниченно.
 
может нужно УРОВЕНЬ
ТабДок.Присоединить(ОбластьСтрокаЗн, хз); - что сдесь может быть не правильно??????????(((((((

Re: Как раскидать счита в отчете шахматным методом?

roma n
7 - 03.07.2009 - 06:04
Никакой УРОВЕНЬ тебе не нужен.
Нужно просто осознать, что ВыборкаШах у тебя содержит сведения не по всем счетам, по которым ты разворачиваешь отчет вправо, а только по тем из них, по которым в регистре есть сведения....

Re: Как раскидать счита в отчете шахматным методом?

serjjj
8 - 03.07.2009 - 06:18
Пока ВыборкаШах.Следующий() Цикл
КонецЦикла;
без этих строчек данные вообще не вытягиваются по сумме

Re: Как раскидать счита в отчете шахматным методом?

roma n
9 - 03.07.2009 - 06:20
(8) Писатель? Позиционируйся в выборке. Метод для позиуционирования НайтиСледующий() с соответствующим отбором

Re: Как раскидать счита в отчете шахматным методом?

serjjj
10 - 03.07.2009 - 06:26
(9) нет, начинающий.
где можно посмотреть пример работы НайтиСледующий()?

Re: Как раскидать счита в отчете шахматным методом?

serjjj
11 - 03.07.2009 - 06:37
ПРобую так:
 
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("СчетДт",СчетДт1);
Пока ВыборкаШах.НайтиСледующий(СтруктураПоиска) Цикл
ОбластьСтрока1.Параметры.СчетКт = ВыборкаШах.СчетКт;
ТабДок.Вывести(ОбластьСтрока1);
ОбластьСтрокаЗн.Параметры.Сумма = ВыборкаШах.Сумма;
ТабДок.Присоединить(ОбластьСтрокаЗн);
КонецЦикла;
 
резкльтат все тот же

Re: Как раскидать счита в отчете шахматным методом?

serjjj
12 - 03.07.2009 - 08:06
у кого нибудь есть какие нибудь мысли?

Re: Как раскидать счита в отчете шахматным методом?

serjjj
13 - 03.07.2009 - 08:32
вопрос решен, спасибо всем
Для каждого счетТЗ из ТЗ цикл
    СчетДт = счетТЗ.Счет;
    ОбластьСтрокаДТ.Параметры.СчетДт = СчетДт;
     ТабДок.Присоединить(ОбластьСтрокаДТ);
КонецЦикла;    
ТабДок.Присоединить(ОбластьСтрокаИт);
 
Для каждого счетТЗ1 из ТЗ цикл
    СчетДт = счетТЗ1.Счет;
    ЗапросШахмат.УстановитьПараметр("СчетДт",         СчетДт);
    РезультатШах = ЗапросШахмат.Выполнить();
    ВыборкаШах = РезультатШах.Выбрать();
    Пока ВыборкаШах.Следующий() Цикл
        ОбластьСтрока1.Параметры.СчетКт = ВыборкаШах.СчетКт;
        ТабДок.Вывести(ОбластьСтрока1);
        Для каждого счетТЗ из ТЗ цикл
            СчетДт = счетТЗ.Счет;
            Если СчетДт = ВыборкаШах.СчетДт тогда
                ОбластьСтрокаЗн.Параметры.Сумма = ВыборкаШах.Сумма;
                ТабДок.Присоединить(ОбластьСтрокаЗн);
            иначе
                ТабДок.Присоединить(ОбластьПустая);    
            конецесли;
        КонецЦикла;
    КонецЦикла;
КонецЦикла;
К списку тем 1 > К списку форумов

Добавить новое сообщение

Ваше имя:
Тема сообщения:
Сообщение:
« OLE 81 Отражение НДС к вычету »
© 2009 Форум 1С: Одинэс.Ру