Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Итог по колонке в запросе
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
wmatik
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)

Не корректно выводится сумма:
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;

    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |КодДК = Документ.ПланЗакупок.КодДК;  
    |Закупки = Документ.ПланЗакупок.Закупки;    
    |Примечание = Документ.ПланЗакупок.Примечание;
    |СуммаЗаГод = Документ.ПланЗакупок.СуммаЗаГод;  
    |Функция Всего = Сумма(СуммаЗаГод);
    |Группировка КодДК;
    |Группировка Примечание;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    

        
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
        Если (ПустоеЗначение(ВыбКод) = 0)и((Лев(СокрЛП(Запрос.КодДК),СтрДлина(СокрЛП(ВыбКод))) <> СокрЛП(ВыбКод))или(СтрДлина(СокрЛП(ВыбКод))>СтрДлина(СокрЛП(Запрос.КодДК)))) Тогда
            Продолжить;
        КонецЕсли;
        ТекДок = Запрос.КодДК; // Заполнение полей КодДК
        Закупки = Запрос.Закупки;
        
        Пока Запрос.Группировка(2) = 1 Цикл
            // Заполнение полей Примечание
            ТекПрим = Запрос.Примечание;
            СуммаЗаГод = Запрос.СуммаЗаГод;
            
            Таб.ВывестиСекцию("Секция_1");
            Итог = Запрос.Всего;
        КонецЦикла;
    КонецЦикла;

    Таб.ВывестиСекцию("Итог");

    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры


Подскажите, что не так

Когда выводу просто месяц, считает правильно,а вот когда указываю чтобы выводил определенный код считает неправильно, может условие выставить, только вот как...
kalyamov
А не пробовали вместо
    Если (ПустоеЗначение(ВыбКод) = 0)и((Лев(СокрЛП(Запрос.КодДК),СтрДлина(СокрЛП(ВыбКод))) <> СокрЛП(ВыбКод))или(СтрДлина(СокрЛП(ВыбКод))>СтрДлина(СокрЛП(Запрос.КодДК)))) Тогда
            Продолжить;
    КонецЕсли;

добавить в запрос условие
    | Условие (КодДК = ВыбКод);

и тут наверное так
    Итог =Итог+ Запрос.Всего;




А наверное даже так :
    Итог = Итог +Запрос.СуммаЗаГод;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.