|
Прошу мнения экспертов. | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
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" ); КонецПроцедуры Теперь человек просит задание посложнее. Вопрос экспертам -как вы думаете, стоит ли давать? |
|||||||
2
zak555
11.07.12
✎
10:47
|
.
Немного подождать. |
|||||||
5
Error pro
11.07.12
✎
10:48
|
Жестко.
Немного подождать. |
|||||||
13
Агент Инфостарта
11.07.12
✎
10:50
|
(0) Приобщи его к пакетным запросам и купите уже книжки.
Немного подождать. |
|||||||
14
AaNnDdRrEeYy
11.07.12
✎
10:52
|
дело даже не в коде, а в подходе, такие веши на скд делать надо.
Немного подождать. |
|||||||
16
SanGvin
11.07.12
✎
10:57
|
жесть
Немного подождать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |