Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выборка в отчете
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
wmatik
Образовалась такая проблемка: есть документы "ПланыЗакупок", в которых есть реквизит "КодДК" и "Сумма". Необходимо перебрать все документы за определенный период, сравнить, если есть одинаковые коды, то их сумму сложить. Вот таким способом у меня получается отобрать все коды с суммами, когда я пытаюсь сложить суммы у одинаковых кодов с помощью Табл.Свернуть("КодДК","Сумма") у меня ничего не получается, в чем может быть причина, подскажите пожалуйста

Процедура Сформировать()
    Док = СоздатьОбъект("Документ.ПланЗакупок");

    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Шапка");
    Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);

    Табл = СоздатьОбъект("ТаблицаЗначений");    
    Табл.НоваяКолонка("КодДК");
    Табл.НоваяКолонка("Ответственный");
    Табл.НоваяКолонка("Месяц");
    Табл.НоваяКолонка("Сумма");

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

        КонецЦикла;    
    КонецЦикла;        
    Таб.ВывестиСекцию("Подвал");
    Таб.Показать("Сформировать","");
КонецПроцедуры
MATEVI
А что именно не получается?
wmatik
Когда я добавляю "Свернуть" у меня не складываются суммы одинаковых кодов, а остается первый встречающийся код с суммой, а остальные строки пустые:
Табл.НоваяСтрока();
Табл.КодДК = Док.КодДК;
Табл.Сумма = Док.СуммаЗаГод;
Табл.Свернуть("КодДК","Сумма");
Таб.ВывестиСекцию( "Строка_1");
Voha74
Эх... После цикла надо ОПЯТЬ открыть свою полученную таблицу, свернуть, только после этого ОПЯТЬ в цикле обойти таблицу и вывести на печать!
nysysimara
Процедура Сформировать()
    Док = СоздатьОбъект("Документ.ПланЗакупок");
    
    Табл = СоздатьОбъект("ТаблицаЗначений");    
    Табл.НоваяКолонка("КодДК");
    Табл.НоваяКолонка("Сумма");  
    
    Док.ВыбратьДокументы(НачДата,КонДата);
    Пока Док.ПолучитьДокумент() = 1 Цикл
        Если Док.Проведен() = 0 Тогда
            Продолжить;
        КонецЕсли;
        Док.ВыбратьСтроки();
        Пока Док.ПолучитьСтроку() = 1 Цикл
            Если ПустоеЗначение(Док.КодДК) = 1 Тогда
                Продолжить;
            КонецЕсли;  
            Табл.НоваяСтрока();
            Табл.КодДК = Док.КодДК;
            Табл.Сумма = Док.СуммаЗаГод;
        КонецЦикла;    
    КонецЦикла;        
    Табл.Свернуть("КодДК","Сумма");  
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    Таб.ВывестиСекцию("Шапка");
    Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
    
    Табл.ВыбратьСтроки();
    Пока Табл.ПолучитьСтроку() = 1 Цикл
        Таб.ВывестиСекцию("Строка_1");
    КонецЦикла;        
    Таб.ВывестиСекцию("Подвал");
    Таб.Показать("Сформировать","");
КонецПроцедуры
wmatik
спасибо, nysysimara
Домовик
wmatik, заглядывайте в типовые конфигруации, коды отчетов. Такую задачу хорошо сделать Запросом. В типовых отчетах можно найти пример.
Digeshka
Цитата(wmatik @ 13.01.12, 14:22) необходимо зарегистрироваться для просмотра ссылки
//Табл.НоваяКолонка("Сумма");
Табл.НоваяКолонка("Сумма","Число");
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.