|
Прошу мнения экспертов. | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
Iven777
11.07.12
✎
10:45
|
Добрый день. Есть программист, изучает полгода восьмерку (опыт работы в 7.7 - не менее шесть лет). Недавно сделал отчет: форма КО-3, реестр ПКО и РКО (в УПП такой нет по умолчанию). Вот такой код:
Процедура КнопкаСформироватьНажатие(Кнопка) // подготовим запрос по приходникам Запрос1 = Новый Запрос; Запрос1.УстановитьПараметр( "начД", начПериода ); Запрос1.УстановитьПараметр( "конД", ?(конПериода = Дата(1,1,1), конПериода, КонецДня(конПериода) )); Запрос1.УстановитьПараметр( "ПустаяДата", Дата(1,1,1)); Запрос1.Текст = " |ВЫБРАТЬ | | ПриходныйКассовыйОрдер.Дата, | ПриходныйКассовыйОрдер.Проведен, | ПриходныйКассовыйОрдер.СуммаДокумента КАК Сумма, | ПриходныйКассовыйОрдер.Номер, | ПриходныйКассовыйОрдер.ВалютаДокумента, | ПриходныйКассовыйОрдер.Комментарий | |ИЗ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер | |ГДЕ | ВЫБОР | КОГДА &начД <> &ПустаяДата | И &конД <> &ПустаяДата | ТОГДА Дата МЕЖДУ &начД И &конД | КОГДА &начД = &ПустаяДата | И &конД <> &ПустаяДата | ТОГДА Дата <= &конД | КОГДА &конД = &ПустаяДата | И &начД <> &ПустаяДата | ТОГДА Дата >= &начД | КОГДА &начД = &ПустаяДата | И &конД = &ПустаяДата | ТОГДА ИСТИНА | КОНЕЦ | | |Упорядочить ПО |Номер | |"; // подготовим запрос по расходникам Запрос2 = Новый Запрос; Запрос2.УстановитьПараметр( "начД", начПериода ); Запрос2.УстановитьПараметр( "конД", ?(конПериода = Дата(1,1,1), конПериода, КонецДня(конПериода) )); Запрос2.УстановитьПараметр( "ПустаяДата", Дата(1,1,1)); Запрос2.Текст = " |ВЫБРАТЬ | | РасходныйКассовыйОрдер.Дата, | РасходныйКассовыйОрдер.Проведен, | РасходныйКассовыйОрдер.СуммаДокумента КАК Сумма, | РасходныйКассовыйОрдер.Номер, | РасходныйКассовыйОрдер.ВалютаДокумента, | РасходныйКассовыйОрдер.Комментарий | |ИЗ Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер | |ГДЕ | ВЫБОР | КОГДА &начД <> &ПустаяДата | И &конД <> &ПустаяДата | ТОГДА Дата МЕЖДУ &начД И &конД | КОГДА &начД = &ПустаяДата | И &конД <> &ПустаяДата | ТОГДА Дата <= &конД | КОГДА &конД = &ПустаяДата | И &начД <> &ПустаяДата | ТОГДА Дата >= &начД | КОГДА &начД = &ПустаяДата | И &конД = &ПустаяДата | ТОГДА ИСТИНА | КОНЕЦ | | |Упорядочить ПО |Номер | |"; // подготовим макет Таб = Новый ТабличныйДокумент; Макет = ПолучитьМакет("Макет"); // выведем первую страницу ОбластьЗаголовок = Макет.ПолучитьОбласть("Страница1"); //ОбластьЗаголовок.Параметры.печПериод = "Период с утра "+Формат(НачПериода, "ДЛФ=Д") + " по вечер " + Формат(КонПериода, "ДЛФ=Д"); Таб.Вывести(ОбластьЗаголовок); Таб.ВывестиГоризонтальныйРазделительСтраниц(); // выведем шапку ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); Таб.Вывести(ОбластьШапка); ОбластьПовтор=Макет.ПолучитьОбласть("Шапка"); Таб.ПовторятьПриПечатиСтроки=Таб.Области.Шапка; // подготовим строку ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); // выполним запросы Выборка1 = Запрос1.Выполнить().Выбрать( ОбходРезультатаЗапроса.ПоГруппировкам ); Выборка2 = Запрос2.Выполнить().Выбрать( ОбходРезультатаЗапроса.ПоГруппировкам ); Пока Истина Цикл Если Выборка1.Следующий() = Ложь Тогда Флаг1 = 0; ОбластьСтрока.Параметры.печДатаПрих = ""; ОбластьСтрока.Параметры.печНомерПрих = ""; ОбластьСтрока.Параметры.печСуммаПрих = ""; ОбластьСтрока.Параметры.печПримПрих = ""; Иначе Флаг1 = 1; ОбластьСтрока.Параметры.печДатаПрих = Формат(Выборка1.Дата, "ДЛФ=Д"); ОбластьСтрока.Параметры.печНомерПрих = Выборка1.Номер; ОбластьСтрока.Параметры.печСуммаПрих = ""+Выборка1.Сумма + " "+Выборка1.ВалютаДокумента; ОбластьСтрока.Параметры.печПримПрих = СокрЛП(Выборка1.Комментарий); КонецЕсли; Если Выборка2.Следующий() = Ложь Тогда Флаг2 = 0; ОбластьСтрока.Параметры.печДатаРасх = ""; ОбластьСтрока.Параметры.печНомерРасх = ""; ОбластьСтрока.Параметры.печСуммаРасх = ""; ОбластьСтрока.Параметры.печПримРасх = ""; Иначе Флаг2 = 1; ОбластьСтрока.Параметры.печДатаРасх = Формат(Выборка2.Дата, "ДЛФ=Д"); ОбластьСтрока.Параметры.печНомерРасх = Выборка2.Номер; ОбластьСтрока.Параметры.печСуммаРасх = ""+Выборка2.Сумма + " "+Выборка2.ВалютаДокумента; ОбластьСтрока.Параметры.печПримРасх = СокрЛП(Выборка2.Комментарий); КонецЕсли; // выход из цикла Если Флаг1 + Флаг2 = 0 Тогда Прервать; КонецЕсли; // выведем подготовленную строку Таб.Вывести(ОбластьСтрока); КонецЦикла; // бесконечного Таб.АвтоМасштаб = Истина; Таб.Показать( "КО-3" ); КонецПроцедуры Теперь человек просит задание посложнее. Вопрос экспертам -как вы думаете, стоит ли давать? |
|||||||
4
artems
11.07.12
✎
10:48
|
забыл :)
Стоит! Человек реально научился делать отчеты! |
|||||||
9
salvator
11.07.12
✎
10:49
|
?(конПериода = Дата(1,1,1), конПериода, КонецДня(конПериода) )
Нормально. Стоит! Человек реально научился делать отчеты! |
|||||||
12
Balabass
11.07.12
✎
10:50
|
Стоит! Человек реально научился делать отчеты! |
|||||||
15
Галахад
гуру
11.07.12
✎
10:52
|
Человек просит, зачем отказывать?
Стоит! Человек реально научился делать отчеты! |
|||||||
22
Zixxx
11.07.12
✎
11:08
|
Главное практика, обязательно кидай задачи посложнее
Стоит! Человек реально научился делать отчеты! |
|||||||
25
philll
11.07.12
✎
11:22
|
работает же
Стоит! Человек реально научился делать отчеты! |
|||||||
27
gosn1ck
11.07.12
✎
11:28
|
(0) чего вы все набросились? там условие в запросе сделать почеловечески и сделать 1 пакетный запрос вместо 2х.
Стоит! Человек реально научился делать отчеты! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |