Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Что делаю не так?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Flexy
Добрый день уважаемые.Пытаюсь сделать отчет по продажам торговых агентов, но выводит по всем колонкам нули.
Подскажите от чего плясать?Что делаю не так?
Заранее большое СПАСИБО! icon_beer17.gif
Вот код:
//*******************************************
// Процедура генерации запроса Сформировать.

Процедура ПриОткрытии()
    Дата1 = Рабочаядата();
    Дата2 = Рабочаядата();  
    Дата11=ДобавитьМесяц(Дата1,-1);
    Дата21=ДобавитьМесяц(Дата2,-1);
КонецПроцедуры                

Процедура УстановкаДатыПМ()
    Дата11=ДобавитьМесяц(Дата1,-1);
    Дата21=ДобавитьМесяц(Дата2,-1);
КонецПроцедуры




Процедура СформироватьИтоги()  
    Заг = +"Подведение итогов за период с " + Дата1+" по " +Дата2;
    ТЗ=СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("Менеджер",2,100,0);
    ТЗ.НоваяКолонка("Сумма",1,10,2);
    ТЗ.НоваяКолонка("СуммаНДС",1,10,2);
    ТЗ.НоваяКолонка("КолвоТТ",1,6,0);
    ТЗ.НоваяКолонка("СуммаПМ",1,10,2);
    ТЗ.НоваяКолонка("СуммаНДСПМ",1,10,2);
    ТЗ.НоваяКолонка("КолвоТТПМ",1,6,0);
    ИтогоСумма=0;
    ИтогоСуммаНДС=0;
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица( "ИтогиРаботы" );
    Запрос = СоздатьОбъект("Запрос");
    ЗапросПМ = СоздатьОбъект("Запрос");
    
    ТекстЗапроса =
    "//{{ЗАПРОС
    |Период с Дата1 по Дата2;
    |Менеджер=Документ.РасходнаяНакладная.Контрагент.ТорговыйАгент,Документ.При
ходнаяНакладная.Контрагент.ТорговыйАгент;
    |Клиент =Документ.РасходнаяНакладная.Контрагент,Документ.ПриходнаяНакладная.Контрагент.Т
орговыйАгент;  
    |Договор =Документ.РасходнаяНакладная.Договор,Документ.ПриходнаяНакладная.Договор;
    |СуммаДок = Документ.РасходнаяНакладная.СуммаБезНДС;
    |СуммаНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |Функция СуммаВсего  = Сумма(СуммаДок);
    |Функция СуммаСНДСВсего  = Сумма(СуммаНДС);
    |Группировка Менеджер;
    |Группировка Клиент;
    |Группировка Договор;";  
    Если ПустоеЗначение(ВыбМенеджер)=0 Тогда
        ТекстЗапроса=ТекстЗапроса+"Условие (Менеджер в ВыбМенеджер);";
    КонецЕсли;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;  
    
    //
    ТЗ.УдалитьСтроки();
    Пока Запрос.Группировка("Менеджер") = 1 Цикл  
        //Сообщить(Запрос.Менеджер.ПринадлежитГруппе(ВыбМенеджер));
        Если Запрос.Менеджер.ЭтоГруппа()=1 Тогда
            Продолжить;
        КонецЕсли;
        Менеджер=Запрос.Менеджер;
        КолвоТТ=0;
        Пока Запрос.Группировка("Клиент") = 1 Цикл
            Пока Запрос.Группировка("Договор") = 1 Цикл
                КолвоТТ=КолвоТТ+1;
            КонецЦикла;
        КонецЦикла;  
        ТЗ.НоваяСтрока();  
        ТЗ.Менеджер=Менеджер;
        ТЗ.Сумма=Запрос.СуммаВсего;
        ТЗ.СуммаНДС=Запрос.СуммаНДСВсего;
        ТЗ.КолвоТТ=КолвоТТ;      
        ТЗ.СуммаПМ=0;
        ТЗ.СуммаНДСПМ=0;
        ТЗ.КолвоТТПМ=0;
    КонецЦикла;    
    // запрос по предыдущему периоду
    ТекстЗапросаПМ =
    "//{{ЗАПРОС
    |Период с Дата11 по Дата21;
    |Менеджер=Документ.РасходнаяНакладная.Контрагент.ТорговыйАгент,Документ.При
ходнаяНакладная.Контрагент.ТорговыйАгент;
    |Клиент =Документ.РасходнаяНакладная.Контрагент,Документ.ПриходнаяНакладная.Контрагент;  
    |Договор =Документ.РасходнаяНакладная.Договор,Документ.ПриходнаяНакладная.Договор;
    |СуммаДок = Документ.РасходнаяНакладная.СуммаБезНДС;
    |СуммаНДС = Документ.РасходнаяНакладная.СуммаСНДС;
    |Функция СуммаВсего  = Сумма(СуммаДок);
    |Функция СуммаНДСВсего  = Сумма(СуммаНДС);
    |Группировка Менеджер;
    |Группировка Клиент;
    |Группировка Договор;";  
    Если ПустоеЗначение(ВыбМенеджер)=0 Тогда
        ТекстЗапросаПМ=ТекстЗапросаПМ+"Условие (Менеджер в ВыбМенеджер);";
    КонецЕсли;
    // Если ошибка в запросе, то выход из процедуры
    Если ЗапросПМ.Выполнить(ТекстЗапросаПМ) = 0 Тогда
        Возврат;
    КонецЕсли;
    Пока ЗапросПМ.Группировка("Менеджер") = 1 Цикл
        //Сообщить(Запрос.Менеджер.ПринадлежитГруппе(ВыбМенеджер));
        Если ЗапросПМ.Менеджер.ЭтоГруппа()=1 Тогда
            Продолжить;
        КонецЕсли;
        Менеджер=ЗапросПМ.Менеджер;
        КолвоТТПМ=0;
        Пока ЗапросПМ.Группировка("Клиент") = 1 Цикл
            Пока ЗапросПМ.Группировка("Договор") = 1 Цикл
                КолвоТТПМ=КолвоТТПМ+1;
            КонецЦикла;
        КонецЦикла;  
        ТЗ.НоваяСтрока();  
        ТЗ.Менеджер=Менеджер;
        ТЗ.СуммаПМ=ЗапросПМ.СуммаВсего;
        ТЗ.СуммаНДСПМ=ЗапросПМ.СуммаНДСВсего;
        ТЗ.КолвоТТПМ=КолвоТТПМ;  
        ТЗ.Сумма=0;
        ТЗ.СуммаНДС=0;
        ТЗ.КолвоТТ=0;      
    КонецЦикла;                                                                  
    ИтогоСумма=0;
    ИтогоСуммаНДС=0;
    ИтогоКолвоТТ=0;
    ИтогоСуммаПМ=0;
    ИтогоСуммаНДСПМ=0;
    ИтогоКолвоТТПМ=0;
    Таб.ВывестиСекцию("Шапка");
    ТЗ.Свернуть("Менеджер","Сумма,СуммаНДС,КолвоТТ,СуммаПМ,СуммаНДСПМ,КолвоТТПМ");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        ИтогоСумма=ИтогоСумма+ТЗ.Сумма;
        ИтогоСуммаНДС=ИтогоСуммаНДС+ТЗ.СуммаНДС;
        ИтогоКолвоТТ=ИтогоКолвоТТ+ТЗ.КолвоТТ;
        ИтогоСуммаПМ=ИтогоСуммаПМ+ТЗ.СуммаПМ;
        ИтогоСуммаНДСПМ=ИтогоСуммаНДСПМ+ТЗ.СуммаНДСПМ;
        ИтогоКолвоТТПМ=ИтогоКолвоТТПМ+ТЗ.КолвоТТПМ;
        Таб.ВывестиСекцию("Строка");    
    КонецЦикла;
    Таб.ВывестиСекцию("Итого");
    Таб.Опции(0, 0, 0, 0);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
    
КонецПроцедуры
Vofka
а это что:

ТЗ.СуммаПМ=0;
        ТЗ.СуммаНДСПМ=0;
        ТЗ.КолвоТТПМ=0;
...
  ТЗ.Сумма=0;
        ТЗ.СуммаНДС=0;
        ТЗ.КолвоТТ=0;
...
   ИтогоСумма=0;
    ИтогоСуммаНДС=0;
    ИтогоКолвоТТ=0;
    ИтогоСуммаПМ=0;
    ИтогоСуммаНДСПМ=0;
    ИтогоКолвоТТПМ=0;


?
Flexy
Цитата(Vofka @ 27.09.10, 13:35) необходимо зарегистрироваться для просмотра ссылки
а это что:

ТЗ.СуммаПМ=0;
        ТЗ.СуммаНДСПМ=0;
        ТЗ.КолвоТТПМ=0;
...
  ТЗ.Сумма=0;
        ТЗ.СуммаНДС=0;
        ТЗ.КолвоТТ=0;
...
   ИтогоСумма=0;
    ИтогоСуммаНДС=0;
    ИтогоКолвоТТ=0;
    ИтогоСуммаПМ=0;
    ИтогоСуммаНДСПМ=0;
    ИтогоКолвоТТПМ=0;


?

Это для сравнения продаж скажем за предыдущий месяц.Как-то так).
Flexy
Склоняюсь к тому что не правильно составил запрос к Торговому Агенту.Вот в этой строке
|Менеджер=Документ.РасходнаяНакладная.Контрагент.ТорговыйАгент,Документ.При
ходнаяНакладная.Контрагент.ТорговыйАгент;

Только как правильно должно быть допереть не могу. 64000000.gif
Vofka
А что находится в секции "строка"?

Цитата
Склоняюсь к тому что не правильно составил запрос к Торговому Агенту.Вот в этой строке
|Менеджер=Документ.РасходнаяНакладная.Контрагент.ТорговыйАгент,Документ.При
ходнаяНакладная.Контрагент.ТорговыйАгент;

Только как правильно должно быть допереть не могу.


Попробуйте в обоих запросах клиента задать так:
|Клиент =Документ.РасходнаяНакладная.Контрагент


а менеджера так:
|Менеджер=Документ.РасходнаяНакладная.Контрагент.ТорговыйАгент


т.к. лично мне непонятно, почему отчет о продажах берётся из (включая) приходных накладных

А вообще, шо за конфа?
Flexy
Цитата(Vofka @ 27.09.10, 14:41) необходимо зарегистрироваться для просмотра ссылки
А что находится в секции "строка"?

ТЗ.Менеджер
Цитата(Vofka @ 27.09.10, 14:41) необходимо зарегистрироваться для просмотра ссылки
Попробуйте в обоих запросах клиента задать так:
|Клиент =Документ.РасходнаяНакладная.Контрагент


а менеджера так:
|Менеджер=Документ.РасходнаяНакладная.Контрагент.ТорговыйАгент


т.к. лично мне непонятно, почему отчет о продажах берётся из (включая) приходных накладных

Попробовал.Все равно нули.
Цитата(Vofka @ 27.09.10, 14:41) необходимо зарегистрироваться для просмотра ссылки
А вообще, шо за конфа?

ТИС 010.Слегка дописанная.
Vofka
Цитата
А что находится в секции "строка"?

ТЗ.Менеджер

А где сами суммы?

Цитата
ТИС 010.Слегка дописанная.

А может инфу о продажах брать из какого-то регистра?
Flexy
Цитата(Vofka @ 27.09.10, 14:51) необходимо зарегистрироваться для просмотра ссылки
А где сами суммы?

В смысле? На печатной форме есть суммы.Но имхо дело не в них.Я конечно в 1с почти ноль.Но чет так кажется))
Цитата(Vofka @ 27.09.10, 14:51) необходимо зарегистрироваться для просмотра ссылки
А может инфу о продажах брать из какого-то регистра?

Да я думал брать торгового из регистра о партиях товаров.Так как это реализовано в стандартном отчете о продажах.Но не знаю будет ли оно таким макаром работать.
Vofka
А менеджеров в отчете хоть видно?
Flexy
Цитата(Vofka @ 27.09.10, 15:06) необходимо зарегистрироваться для просмотра ссылки
А менеджеров в отчете хоть видно?

Неа.Отчет абсолютно пустой. 17000000.gif
Flexy
Блин.У меня по ходу нет Реквизита ТорговыйАгент.
Есть только на форме табличной части документа поле выбора с такой формулой: ?(ПустоеЗначение(контрагент.ТорговыйАгент)=1,"",Контрагент.ТорговыйАгент)
От куда еще можно потянуть Торгового Агента?А главное как?

З.Ы. Нашел отчет который выводит Агентов.И вытягивает Агентов таким запросом
|Родитель = Документ.РасходнаяНакладная.Контрагент.ТорговыйАгент,Документ.ПриходнаяНакладная
.Контрагент.ТорговыйАгент;


И выводит секции потом таким макаром
Таб.ВывестиСекцию("Родитель|Агент");
Vofka
Цитата
Блин.У меня по ходу нет Реквизита ТорговыйАгент.

1С-ка ругнулась бы.

Цитата
Есть только на форме табличной части документа поле выбора с такой формулой: ?(ПустоеЗначение(контрагент.ТорговыйАгент)=1,"",Контрагент.ТорговыйАгент)
От куда еще можно потянуть Торгового Агента?А главное как?

Ну тогда в вашем случае вроде все правильно. Документ.РасходнаяНакладная.Контрагент.ТорговыйАгент

Цитата
И выводит секции потом таким макаром
Таб.ВывестиСекцию("Родитель|Агент");

Посмотрите что в выводимой таблице указано в "Родитель|Агент"
Flexy
Цитата(Vofka @ 27.09.10, 15:28) необходимо зарегистрироваться для просмотра ссылки

ТЗ.Родитель.ПолнНаименование
Vofka
Выведите и вы так же. Выведет хоть агентов?
Flexy
Спасибо большое Vofk`е.Заработало!!!
При чем проблема была не только в табличной части.Но еще и в поле выбора Торгового Агента.Почему-то оно тянуло Торговых не со справочника Сотрудники.Торговые, а из Справочника контрагентов.
Спасибо за внимание icon_beer17.gif
Vofka
Не понял чем помог, но пожалуйста smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.