|
Помогите доделать отчет... | ☑ | ||
---|---|---|---|---|
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
|
Держи пример:
http://narod.ru/disk/21828134001/Реестр.erf.html |
|||
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) А причем тут РабочаяДата? Ты хоть знаешь, означает эта переменная? :))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |