Вход | Регистрация

1С:Предприятие ::

Метки:

Вопрос по отчету

Я
   Leha
 
15.04.04 - 14:32
Такой вопрос. Вот например выписываем счет опредленному контрагенту, в счете указываем разные параметры, и примеру рубрику (газета). Как ее со счета перетянуть в отчет? В отчете что написать?
При написании что то не получается.

Заранее благоадрен

PS. я только учусь...
 
 
   SiMazx
 
1 - 15.04.04 - 14:43
- У меня не начинается!!!!
- Что не начинается?
- НИЧЕГО не начинается!!!
(с)Масяня...
Эти "разные параметры" в документе счет в шапке или в табличной части?
   Gavrila
 
2 - 15.04.04 - 14:43
А как ты отчет формируешь? Запросом или выборкой по документам?
если выборкой, то
Док = СоздатьОбъект("Документ.Счет");
Док.ВыбратьДокументы(Дата1, Дата2);
Пока Док.Получитьдокумент() = 1 Цикл
  а = Док."примеру рубрику (газета)" - в переменной а у тебя будет твои данные
КонецЦикла;
Если в запросе по регистрам, то нужно получить ссылку на "счет" а потом можно и к реквизиту счета добраться:
ТекстЗапроса = "
...
|ДокСчет = Регистр.РезервыТоваров.ПоСчету;
|ЗначениеПараметра = Регистр.РезервыТоваров.ПоСчету.ЗначениеПараметра;
...
";
и т.д.
   Gavrila
 
3 - 15.04.04 - 14:45
Хотя в (1) правильно сказано подробнее плиз :)
   Leha
 
4 - 15.04.04 - 14:49
Процедура ПриОткрытии()
    глОтчетПриОткрытии(Контекст,"Отчет1");
Конецпроцедуры    

//******************************************************************************

Функция ПолучитьКвадраты(сч) 
    сч.ВыбратьСтроки();
    к=0;
    Пока сч.ПолучитьСтроку()=1 Цикл
        ВидыСв=СоздатьОбъект("Справочник.ВидыСвойств");  
        Св=СоздатьОбъект("Справочник.СвойстваНоменклатуры");
        Св.ИспользоватьВладельца(Сч.Номенклатура);
        ВидыСв.НайтиПоКоду("00001");
        Св.НайтиПоРеквизиту("ВидСвойства",ВидыСв.ТекущийЭлемент(),0);
        Квм=СВ.ЗначениеСвойства; 
        к=к+Сч.Количество*Число(Квм.Наименование);
        
    КонецЦикла;
    Возврат к;
КонецФункции    
//*******************************************


// Процедура генерации запроса Сформировать.

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

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать) 

    |Без Итогов;
    |Период с ДатаС по ДатаПо;
    |Фирма = Регистр.Заявки.Фирма;
    |Владелец = Регистр.Заявки.ДоговорПокупателя.Владелец;
    |ЗаявкаПокупателя = Регистр.Заявки.ЗаявкаПокупателя;
    |Менеджер = Регистр.Заявки.ЗаявкаПокупателя.Менеджер;
    |КоличествоРасход = Регистр.Заявки.КоличествоРасход;
    |СтоимостьРасход = Регистр.Заявки.СтоимостьРасход;    
    |Функция КонОстСум = КонОст(СтоимостьРасход); 
    |Функция НачОстСум = НачОст(СтоимостьРасход);
    |Функция ПриходСум = Приход(СтоимостьРасход);
    |Функция РасходСум=  Расход(СтоимостьРасход);
    |Группировка ЗаявкаПокупателя упорядочить по ЗаявкаПокупателя.ДатаДок,ЗаявкаПокупателя.НомерДок ;
    |//}}ЗАПРОС

    ; 
    Если ВыбМенеджер.Выбран()=1 Тогда
        ТекстЗапроса=ТекстЗапроса+"Условие(Менеджер = ВыбМенеджер);";
    КонецЕсли;
   // Если ошибка в запросе, то выход из процедуры

    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;                         
   //создаем список для заоминания номеров выхода

    Сп=СоздатьОбъект("СписокЗначений");           
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    ПечМенеджер=?(ВыбМенеджер.Выбран()=1," "+ВыбМенеджер,"СВОДНАЯ"); 
    печЗаг=?(ВыбФирма.Код="00001","Реклама в газете 'Ва-банкъ в Новосибирске'","Услуги КС");
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);   
    ИтогСч=0;
    ИтогРекл=0;
    ИтогОпл=0;
    ИтогКв=0;
    Пока Запрос.Группировка() = 1 Цикл   
       //Пока Запрос.Группировка("Владелец") = 1 Цикл 

       //    Пока Запрос.Группировка("ЗаявкаПокупателя") = 1 Цикл     

        кв=0;
        СуммаРекламы=Запрос.расходСум; 
       //     Найдем оплаты

        Счет=Запрос.ЗаявкаПокупателя;
        Если ПустоеЗначение(Счет.Контрагент) = 0 тогда
            Если Счет.Контрагент.НеВключать = 1 Тогда 
                Продолжить;
            КонецЕсли; 
        КонецЕсли;    
        Если Счет.Фирма<>ВыбФирма Тогда Продолжить; КонецЕсли;
        Если (Счет.ДатаДок>ДатаПо) или (Счет.ДатаДок<ДатаС) Тогда Продолжить; КонецЕсли;     
       //+нве

            СуммаСч=Счет.Итог("Сумма");
            Док=СоздатьОбъект("Документ");
            Док.ВыбратьПодчиненныеДокументы(счет-100,счет+100,счет);  
            СуммаОпл=0; 
            кв=ПолучитьКвадраты(Счет);
            ДатаОплаты="";
            ВидОплаты="";
            Пока Док.получитьДокумент()=1 Цикл
                Вид=Док.Вид();    
                Если Вид="СтрокаВыпискиПриход" Тогда
                    СуммаОпл=СуммаОпл+Док.Сумма;  
                    ВидОплаты="БезНал";
                    ДатаОплаты=Док.ДатаДок;
                ИначеЕсли Вид="ПКО" Тогда
                    Если Док.ВыбратьСтроки() = 1 Тогда
                        Пока Док.ПолучитьСтроку() = 1 Цикл
                            Если Док.Контрагент_ = Счет.Контрагент Тогда
                                СуммаОпл=СуммаОпл+Док.Сумма_;  
                            КонецЕсли;    
                        КонецЦикла;    
                    Иначе
                        СуммаОпл=СуммаОпл+Док.Сумма;  
                    КонецЕсли;    
                    ВидОплаты="Нал"; 
                    ДатаОплаты=Док.ДатаДок;
                   //Слава    

                ИначеЕсли Вид = "КорректировкаДолга" Тогда
                    СуммаОпл=СуммаОпл+(- Док.Сумма);  
                    ВидОплаты="Взаимозачет";
                    ДатаОплаты=Док.ДатаДок;
                   //Слава

                КонецЕсли;
            КонецЦикла;
            
            НомераВыпусков="";
            Сп.УдалитьВсе();
            Если Счет.ВыбратьСтроки()=1 тогда 
                
                Пока Счет.ПолучитьСтроку()=1 Цикл     
                    Если Сп.НайтиЗначение(Счет.номервыхода.Наименование)=0 Тогда
                        Сп.ДобавитьЗначение(СокрЛП(Счет.номервыхода.Наименование));
                    КонецЕсли;
                КонецЦикла;     
               //номер строки в списке значений

                НомСтрвСп=0;
                
                Для НомСтрвСп=1 По Сп.размерСписка() Цикл                       
                    НомВып=    Сп.ПолучитьЗначение(НомСтрвСп);    
                    Если НомераВыпусков="" тогда
                        НомераВыпусков="" +НомВып;
                    Иначе
                        НомераВыпусков=НомераВыпусков+", "+НомВып;
                    КонецЕсли;
                КонецЦикла;     
            КонецЕсли;
            
           // Заполнение полей Сформировать  


            Если (флНеоплСчета=0) ИЛИ ((флНеоплСчета=1) И (СуммаСч>СуммаОпл)) Тогда
                Таб.ВывестиСекцию("Сформировать");  
                ИтогСч=итогСч+СуммаСч;
                ИтогРекл=ИтогРекл+СуммаРекламы;
                ИтогОпл=ИтогОпл+СуммаОпл; 
                ИтогКв=ИтогКв+кв;
            КонецЕсли;  
        

    КонецЦикла;
    Таб.ВывестиСекцию("Итого");
   // Вывод заполненной формы

    Таб.ТолькоПросмотр(1);
    Таб.ПараметрыСтраницы(2,,,,,,,,,1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры
ДатаС=НачМесяца(ТекущаяДата());
ДатаПо=ПолучитьДатуТА();

Сюда вот еще добавить надо рубрики, и скидку, которая опять же есть в счете :-)
   Leha
 
5 - 15.04.04 - 14:50
Скидка и рубрика в табличной части
   Gavrila
 
6 - 15.04.04 - 15:15
Вот и добавь... во время перебора строк счета


Список тем форума
Рекламное место пустует   Рекламное место пустует
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует