Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Группировка по контрагенту
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
wmatik
Подскажите, что не так делаю, мне надо сгруппировать по контрагенту, но сгруппировать получается только в цикле по документу, а мне надо по всем документам чтобы группировало контрагента
Процедура Сформировать()
    
    Запрос = СоздатьОбъект("Запрос");
    
    ТекстЗапроса = "
    |Период с НачДата По КонДата;
    |Док = Документ.БанковскаяВыписка.ТекущийДокумент;
    |Затраты = Документ.ПланБюджетирование.КодЗатрат, Документ.ПриходныйКассовый.Затраты, Документ.РасходныйКассовый.Затраты, Документ.БанковскаяВыписка.ВидыЗатрат;
    |Группировка Док;";
    
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    
    Таб = СоздатьОбъект("ТаблицаЗначений");
    Таб.НоваяКолонка("Док");
    Таб.НоваяКолонка("Примечание");
    Таб.НоваяКолонка("План","Число");
    Таб.НоваяКолонка("Факт","Число");
    
    ТаблСтрок = СоздатьОбъект("ТаблицаЗначений");
    ТаблСтрок.НоваяКолонка("Контр");
    ТаблСтрок.НоваяКолонка("Сумма");
    ТаблСтрок.НоваяКолонка("Прим");
    ТаблСтрок.НоваяКолонка("Статья");  
                                    
    Табл = СоздатьОбъект("Таблица");
    Табл.ИсходнаяТаблица("Таблица");
    Табл.ВывестиСекцию("Шапка");
    Табл.Опции(0,0,Табл.ВысотаТаблицы(),0);
    Итог = 0;
    Пока Запрос.Группировка(1) = 1 Цикл
        ПечСумма = 0;
        Док = Запрос.Док;
        Таб.НоваяСтрока();
        Таб.Док = Док;
        Таб.Примечание = Док.Примечание;
        
        Если (Док.Вид() = "БанковскаяВыписка") Тогда    
            Док.ВыбратьСтроки();  
            ТаблСтрок.УдалитьСтроки();
            Пока Док.ПолучитьСтроку() = 1 Цикл
                Если ПроверкаСоответствия(Док.ВидыЗатрат) = 1 Тогда
                    Сум = глПересчет(Док.СуммаСНДС,Док.РСчет.Валюта,Док.ДатаДок,Гривня,Док.ДатаДок,Док.ДатаДок);
                    ПечСумма = ПечСумма + Сум;
                    ТаблСтрок.НоваяСтрока();
                    ТаблСтрок.Контр = Док.Субконто1;
                    ТаблСтрок.Сумма = Сум;
                КонецЕсли;
            КонецЦикла;  
            ТаблСтрок.Свернуть("Контр", "Сумма");
            Если ТаблСтрок.КоличествоСтрок() > 0 Тогда
                Таб.Факт = ПечСумма;  
                ТаблСтрок.ВыбратьСтроки();
                Пока ТаблСтрок.ПолучитьСтроку() = 1 Цикл
                    ПечКонтр = ТаблСтрок.Контр;
                    ПечСум = ТаблСтрок.Сумма;
                    Табл.ВывестиСекцию("Строка");  
                КонецЦикла;
            КонецЕсли;    

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

    Табл.ВывестиСекцию("Итог");    
    Табл.ТолькоПросмотр(1);
    Табл.Показать();
Acid
почему тогда?
|Группировка Док;";
wmatik
если в запросе поставить группировка Субконто1, Сумма будет тянуться неправильная
awp
Цитата(wmatik @ 12.04.13, 12:34) необходимо зарегистрироваться для просмотра ссылки
если в запросе поставить группировка Субконто1, Сумма будет тянуться неправильная


1.Что такое Субконто1 ?

2. Что долджно получиться на выходе ?

3.
Если (Док.Вид() = "БанковскаяВыписка") Тогда
???
Домовик
..

Сум = глПересчет(Док.СуммаСНДС,Док.РСчет.Валюта,Док.ДатаДок,Гривня,Док.ДатаДок,Док.ДатаДок);

эту формулу в запрос, конечно, не затянешь.

Но почему не через бухгалтерские итоги (режим запроса) тогда?
Мичман Харитонов
Куда бы тут вклиниться.. сразу заполняются таблицы значений, и вывод в таблицу идет...
Лучше бы заполнить таблицу значений,

Таб.Сортировать("Контрагент+")

Потом - вывод данных в таблицу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.