Имя: Пароль:
1C
 
Помогите доделать отчет...
0 Blakangelos
 
15.08.11
15:16
Нужно сделать чтобы был отбор по периоду и чтобы не один отчет выводи ла несколько в Макете за заданый период.

//Функция Печать() Экспорт
//        ТабДокумент = Печать();
//        //Возврат ТабДокумент;
//    
//КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
   //Выборка=Документы.ПриходнаяНакладная.Выбрать(ДатаНачала,ДатаКонец);
   //Пока Выборка.Следующий() Цикл
   //КонецЦикла;
   ПечатьРеестра();
   
КонецПроцедуры

/////////////////////////////////////////////////////////////////////////////

Функция ПечатьРеестра()
   //ищем инфу
   Запрос= новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
                |    ПриходнаяНакладная.Номер,
                |    ПриходнаяНакладная.Дата,
                |    ПриходнаяНакладная.Контрагент КАК Контрагент,
                |    ПРЕДСТАВЛЕНИЕ(ПриходнаяНакладная.Контрагент),
                |    ПриходнаяНакладная.СуммаДокумента КАК СуммаДокумента
                |ИЗ
                |    Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
                |ГДЕ
                |    ПриходнаяНакладная.Дата >= &ПериодНачало
                |    И ПриходнаяНакладная.Дата <= &ПериодКонец
                |
                |СГРУППИРОВАТЬ ПО
                |    ПриходнаяНакладная.Контрагент,
                |    ПриходнаяНакладная.Номер,
                |    ПриходнаяНакладная.Дата,
                |    ПриходнаяНакладная.СуммаДокумента
                |ИТОГИ
                |    СУММА(СуммаДокумента)
                |ПО
                |    ОБЩИЕ,
                |    Контрагент";
                   //записываем инфу            
   Запрос.УстановитьПараметр("ПериодНачало", РабочаяДата);
   Запрос.УстановитьПараметр("ПериодКонец", РабочаяДата);
   Результат=Запрос.Выполнить().Выгрузить();
   
   Для каждого Строка Из Результат Цикл
      Контрагент      =Строка.Контрагент;
      Номер          =Строка.Номер;
      Дата           =Строка.Дата;
      СуммаДокумента =Строка.СуммаДокумента;
     
   //указываем источник
   ТабДокумент=Новый ТабличныйДокумент;
   Макет=ПолучитьМакет("Макет");
   ОбластьМакета=Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.ТекстЗаголовка="Реестр Поставщиков";
   ТабДокумент.Вывести(ОбластьМакета);
   ОбластьМакета=Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Контрагент=Контрагент;
   ТабДокумент.Вывести(ОбластьМакета);
   ОбластьМакета=Макет.ПолучитьОбласть("ШаблонТаблицы");
   ТабДокумент.Вывести(ОбластьМакета);
   ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
   ОбластьМакета.Параметры.Номер=Номер;
   ОбластьМакета.Параметры.Дата=Дата;
   ОбластьМакета.Параметры.Сумма=СуммаДокумента;
   ТабДокумент.Вывести(ОбластьМакета);    
   ОбластьМакета=Макет.ПолучитьОбласть("Итого");
   ТабДокумент.Вывести(ОбластьМакета);    
       
   КонецЦикла;        
   ТабДокумент.Показать();
   
   
           
КонецФункции // СоздатьТабличныйДокументПечатиСчета()
1 salvator
 
15.08.11
15:21
В параметрах запроса устанавливай нужные тебе даты периода.
И убери из цикла создание нового табличного документа, получение макета, и наверняка, заголовок. Поставь их ДО цикла, не позорься...
2 Blakangelos
 
15.08.11
15:26
1.даты задаются с формы!
2.Нельзя убрать их из цикла , если убераю получается переменные не определяются.

и кому тут еще позорится ааа :)
3 Blakangelos
 
15.08.11
15:28
Может кто нибудь дельное сказать ?
4 новичекВ1С
 
15.08.11
15:31
(0) че ты спрашиваешь, видно , что и сам все знаешь ;)
5 Blakangelos
 
15.08.11
15:32
Люди вы или помогайте или проходите мимо зачем на грубость лезть.Знал бы не спрашивал.
6 Blakangelos
 
15.08.11
15:38
никто не подскажет?
7 Sereja
 
15.08.11
15:44
(6)

тебе в (1) Ответили

   ТабДокумент=Новый ТабличныйДокумент;
   Макет=ПолучитьМакет("Макет");     поставь перед циклом
8 borozavr
 
15.08.11
15:46
1.    Запрос.УстановитьПараметр("ПериодНачало", НачалоДня(НачДата));
   Запрос.УстановитьПараметр("ПериодКонец", КонецДня(КонДата));

где НачДата и КонДата идентификаторы реквизитов диалога с типом значения "Дата"

2 Вместо выгрузки в ТЗ используй обход по Группировкам,для вывода в табл.документ используй Область.Параметры.Заполнить(Строка)
9 Blakangelos
 
15.08.11
15:56
Я начинающий делаю как говорите у меня ошибок вылазит большая куча можите в коде написать?
10 Blakangelos
 
15.08.11
15:57
то есть взять мой код и изменить, можите?
11 Sereja
 
15.08.11
15:59
(10)
ТабДокумент=Новый ТабличныйДокумент;
Макет=ПолучитьМакет("Макет");


Для каждого Строка Из Результат Цикл
....................
КонецЦикла;
     
   //указываем источник
12 salvator
 
15.08.11
16:01
(10) Можим. Но ни будим.
13 andrewks
 
15.08.11
16:02
(10) правильно так: могёте?
14 Blakangelos
 
15.08.11
16:03
Серега спасибо , НО один минус когда выводит фирму он пишет только один договор и опять туже фирму но другой договор.
А нужно чтобы он писал фирма такая а снизу все договора этой фирмы. ясно или непонятно???
15 Blakangelos
 
15.08.11
16:09
ПРимер  

                РЕЕСТР ПОСТАВЩИКОВ

011101 ООО Кузьба      3000

                РЕЕСТР ПОСТАВЩИКОВ

012131 ООО Кузьба      16000


и т.д
а нужно


                РЕЕСТР ПОСТАВЩИКОВ

011101 ООО Кузьба      3000
012131 ООО Кузьба      16000
015643 ООО Кузьба      1000
Итого:  101010

011101 ООО Жуйка      31000
012231 ООО Жуйка      161000
013233 ООО Жуйка      111000
Итого:



Как так сделать?
16 salvator
 
15.08.11
16:13
ОбластьМакета=Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.ТекстЗаголовка="Реестр Поставщиков";
   ТабДокумент.Вывести(ОбластьМакета);

Выводи ДО цикла.
Ё-мое, тут кодером быть не надо, нужно совсем немного логически поразмышлять.
И используй п.2 в (8)
17 Blakangelos
 
15.08.11
16:13
Люде помогите
18 Blakangelos
 
15.08.11
16:15
вот пытаюсь разобраться со вторым пунктом.
19 salvator
 
15.08.11
16:15
20 Blakangelos
 
15.08.11
16:15
Просто рабочий день закончился а я тороплюсь
21 borozavr
 
15.08.11
16:35
22 Blakangelos
 
16.08.11
08:38
Народ чуть другие изменения,нужно сравнивать контрагентов по таблице значений и выводить вот так  
              РЕЕСТР ПОСТАВЩИКОВ
     КУЗЬБЫ
011101     3000
012131     16000
015643     1000
Итого:  101010
     Жуйка
011101    31000
012231    161000
013233    111000
Итого:

Как это реализовать?

Функция ПечатьРеестра()
   //ищем инфу
   Запрос= новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
                |    ПриходнаяНакладная.Номер,
                |    ПриходнаяНакладная.Дата,
                |    ПриходнаяНакладная.Контрагент КАК Контрагент,
                |    ПРЕДСТАВЛЕНИЕ(ПриходнаяНакладная.Контрагент),
                |    ПриходнаяНакладная.СуммаДокумента КАК СуммаДокумента
                |ИЗ
                |    Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
                //|ГДЕ
                //|    ПриходнаяНакладная.Дата >= &ПериодНачало
                //|    И ПриходнаяНакладная.Дата <= &ПериодКонец
                |
                |СГРУППИРОВАТЬ ПО
                |    ПриходнаяНакладная.Контрагент,
                |    ПриходнаяНакладная.Номер,
                |    ПриходнаяНакладная.Дата,
                |    ПриходнаяНакладная.СуммаДокумента
                |ИТОГИ
                |    СУММА(СуммаДокумента)
                |ПО
                |    ОБЩИЕ,
                |    Контрагент";
                   //записываем инфу            
   Запрос.УстановитьПараметр("ПериодНачало", РабочаяДата);
   Запрос.УстановитьПараметр("ПериодКонец", РабочаяДата);
   Результат=Запрос.Выполнить().Выгрузить();
   Макет=ПолучитьМакет("Макет");
   ТабДокумент=Новый ТабличныйДокумент;

   ОбластьМакета=Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.ТекстЗаголовка="Реестр Поставщиков";
   ТабДокумент.Вывести(ОбластьМакета);

   Для каждого Строка Из Результат Цикл
      Контрагент      =Строка.Контрагент;
      Номер          =Строка.Номер;
      Дата           =Строка.Дата;
      СуммаДокумента =Строка.СуммаДокумента;
     
   //указываем источник
   
   
   ТаблицаЗначений=Новый ТаблицаЗначений;
   ОбластьМакета=Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Контрагент=Контрагент;
   ТабДокумент.Вывести(ОбластьМакета);
   //ОбластьМакета=Макет.ПолучитьОбласть("ШаблонТаблицы");
   //ТабДокумент.Вывести(ОбластьМакета);
   ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
   ОбластьМакета.Параметры.Номер=Номер;
   ОбластьМакета.Параметры.Дата=Дата;
   ОбластьМакета.Параметры.Сумма=СуммаДокумента;
   ТабДокумент.Вывести(ОбластьМакета);    
   //ОбластьМакета=Макет.ПолучитьОбласть("Итого");
   //ТабДокумент.Вывести(ОбластьМакета);    
       

   //ВыборкаКонтрагент = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Контрагент");
   //Пока ВыборкаКонтрагент.Следующий() Цикл
   //   Контрагент.Параметры.Заполнить(ВыборкаКонтрагент);
   //ТабДокумент.Вывести(ОбластьМакета);
   ТабДокумент.Показать();
   
//КОнецЦикла;    
КонецЦикла            
КонецФункции // СоздатьТабличныйДокументПечатиСчета()
23 Blakangelos
 
16.08.11
08:59
Народ вы живы?
24 butterbean
 
16.08.11
09:03
(23) не надо выгружать в таблицу значений - делай выборку ВыборкаКонтрагенты = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

а потом "внутри" еще одну с прямым порядком обхода
25 borozavr
 
16.08.11
09:13
(23) я ж тебе пример послал, неужели не можешь разобраться?
26 Blakangelos
 
16.08.11
09:50
всё сделал по другому, у тебя там мутно и одни сокращения :)
хотите могу выложить, только , новая проблема что то не хочет с датами работать???

Функция ПечатьРеестра()
   //ищем инфу
   Запрос= новый Запрос;
   Запрос.Текст="ВЫБРАТЬ
   |    ПриходнаяНакладная.Номер,
   |    ПриходнаяНакладная.Дата,
   |    ПриходнаяНакладная.Контрагент КАК Контрагент,
   |    ПРЕДСТАВЛЕНИЕ(ПриходнаяНакладная.Контрагент),
   |    ПриходнаяНакладная.СуммаДокумента КАК СуммаДокумента
   |ИЗ
   |    Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
   |ГДЕ
   |    ПриходнаяНакладная.Дата >= &ПериодНачало
   |    И ПриходнаяНакладная.Дата <= &ПериодКонец
   |
   |СГРУППИРОВАТЬ ПО
   |    ПриходнаяНакладная.Контрагент,
   |    ПриходнаяНакладная.Номер,
   |    ПриходнаяНакладная.Дата,
   |    ПриходнаяНакладная.СуммаДокумента
   |ИТОГИ
   |    СУММА(СуммаДокумента)
   |ПО
   |    ОБЩИЕ,
   |    Контрагент";
   //записываем инфу            
   Запрос.УстановитьПараметр("ПериодНачало", РабочаяДата);
   Запрос.УстановитьПараметр("ПериодКонец", РабочаяДата);
   ТабЗначений=Запрос.Выполнить().Выгрузить();
   Макет=ПолучитьМакет("Макет");
   ТабДокумент=Новый ТабличныйДокумент;
   
   ОбластьМакета=Макет.ПолучитьОбласть("Заголовок");
   ОбластьМакета.Параметры.ТекстЗаголовка="Реестр Поставщиков";
   ТабДокумент.Вывести(ОбластьМакета);
   
   ПроверкаКонтр = ТабЗначений.Получить(0).Контрагент;
   ОбластьМакета=Макет.ПолучитьОбласть("Поставщик");
   ОбластьМакета.Параметры.Контрагент=ПроверкаКонтр;
   ТабДокумент.Вывести(ОбластьМакета);    
   
   Для каждого Строка Из ТабЗначений Цикл
       Если НЕ ПроверкаКонтр = Строка.Контрагент  тогда
           ОбластьМакета=Макет.ПолучитьОбласть("Поставщик");
           ОбластьМакета.Параметры.Контрагент=Строка.Контрагент;
           ТабДокумент.Вывести(ОбластьМакета);    
           ПроверкаКонтр = Строка.Контрагент ;        
       КонецЕсли;    
       Контрагент      =Строка.Контрагент;
       Номер          =Строка.Номер;
       Дата           =Строка.Дата;
       СуммаДокумента =Строка.СуммаДокумента;
       
       //ОбластьМакета=Макет.ПолучитьОбласть("ШаблонТаблицы");
       //ТабДокумент.Вывести(ОбластьМакета);
       ОбластьМакета=Макет.ПолучитьОбласть("Шапка");
       ОбластьМакета.Параметры.Номер=Номер;
       ОбластьМакета.Параметры.Дата=Дата;
       ОбластьМакета.Параметры.Сумма=СуммаДокумента;
       ТабДокумент.Вывести(ОбластьМакета);    
       //ОбластьМакета=Макет.ПолучитьОбласть("Итого");
       //ТабДокумент.Вывести(ОбластьМакета);    
       
       
       //ВыборкаКонтрагент = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Контрагент");
       //Пока ВыборкаКонтрагент.Следующий() Цикл
       //   Контрагент.Параметры.Заполнить(ВыборкаКонтрагент);
       //ТабДокумент.Вывести(ОбластьМакета);
       ТабДокумент.Показать();
       
       //КОнецЦикла;    
   КонецЦикла            
КонецФункции // СоздатьТабличныйДокументПечатиСчета()
27 Blakangelos
 
16.08.11
09:51
как этот касечок поправить?
28 ado
 
16.08.11
09:55
"Недоделанный отчёт – это не беда. Главное, когда будете делать детей – доделайте их! А то потом приходят недоделанные дети и приносят недоделанные отчёты. И никак не прервать этот замкнутый круг."
29 aleks-id
 
16.08.11
09:58
>>"Недоделанный отчёт
правельно гаварить "нидаделатый ачот" хД
30 salvator
 
16.08.11
10:00
Автор, тебе уже тысячу раз написали: делай обход запроса по группировкам. Ты (19) внимательно смотрел? Делай по аналогии.
Насчет дат: на кой тебе РабочаяДата?
31 Blakangelos
 
16.08.11
10:18
Мне нужно задавать периуд
32 Blakangelos
 
16.08.11
10:18
только что то не выходит
33 salvator
 
16.08.11
10:20
(31) А причем тут РабочаяДата? Ты хоть знаешь, означает эта переменная? :))
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс