|
Прошу мнения экспертов. | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
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" ); КонецПроцедуры Теперь человек просит задание посложнее. Вопрос экспертам -как вы думаете, стоит ли давать? |
|||||||
1
zak555
11.07.12
✎
10:47
|
Пока Истина Цикл
|
|||||||
2
zak555
11.07.12
✎
10:47
|
.
Немного подождать. |
|||||||
3
artems
11.07.12
✎
10:47
|
Пусть пишет есчо :)
|
|||||||
4
artems
11.07.12
✎
10:48
|
забыл :)
Стоит! Человек реально научился делать отчеты! |
|||||||
5
Error pro
11.07.12
✎
10:48
|
Жестко.
Немного подождать. |
|||||||
6
Stim
11.07.12
✎
10:48
|
прострелить коленку
|
|||||||
7
Ёпрст
11.07.12
✎
10:48
|
3. кг/ам
|
|||||||
8
artems
11.07.12
✎
10:49
|
Ты только сюда не забывай постить его шедевры
|
|||||||
9
salvator
11.07.12
✎
10:49
|
?(конПериода = Дата(1,1,1), конПериода, КонецДня(конПериода) )
Нормально. Стоит! Человек реально научился делать отчеты! |
|||||||
10
acsent
11.07.12
✎
10:49
|
За такое
| ВЫБОР | КОГДА &начД <> &ПустаяДата | И &конД <> &ПустаяДата | ТОГДА Дата МЕЖДУ &начД И &конД | КОГДА &начД = &ПустаяДата | И &конД <> &ПустаяДата | ТОГДА Дата <= &конД | КОГДА &конД = &ПустаяДата | И &начД <> &ПустаяДата | ТОГДА Дата >= &начД | КОГДА &начД = &ПустаяДата | И &конД = &ПустаяДата | ТОГДА ИСТИНА | КОНЕЦ Пальцы отрубать нещадно |
|||||||
11
Balabass
11.07.12
✎
10:50
|
Работает?
Ну а че еще нужно? |
|||||||
12
Balabass
11.07.12
✎
10:50
|
Стоит! Человек реально научился делать отчеты! |
|||||||
13
Агент Инфостарта
11.07.12
✎
10:50
|
(0) Приобщи его к пакетным запросам и купите уже книжки.
Немного подождать. |
|||||||
14
AaNnDdRrEeYy
11.07.12
✎
10:52
|
дело даже не в коде, а в подходе, такие веши на скд делать надо.
Немного подождать. |
|||||||
15
Галахад
гуру
11.07.12
✎
10:52
|
Человек просит, зачем отказывать?
Стоит! Человек реально научился делать отчеты! |
|||||||
16
SanGvin
11.07.12
✎
10:57
|
жесть
Немного подождать. |
|||||||
17
Агент Инфостарта
11.07.12
✎
10:57
|
(15) Потом за ним дерьмо сам будешь разгребать? Во франч, пусть ИТСы поразносит ещё полгода.
|
|||||||
18
ptiz
11.07.12
✎
10:58
|
3. Стоит. Человек умеет делать отчеты.
Нормальный код, чего придрались? |
|||||||
19
Галахад
гуру
11.07.12
✎
11:00
|
(15) На кошка все равно ничему хорошему не научиться. Нужно читать чужой код.
|
|||||||
20
zippygrill
11.07.12
✎
11:01
|
а почему не скд?
|
|||||||
21
palpetrovich
11.07.12
✎
11:07
|
(0) зачем сюда запостил? свое эго почесать? тогда выкладывай свои произвекдения
научить не смог, на мисту не пускаешь небось, варится парнишка в собственном соку... зы: задолбали своим скд уже... легофилы блин |
|||||||
22
Zixxx
11.07.12
✎
11:08
|
Главное практика, обязательно кидай задачи посложнее
Стоит! Человек реально научился делать отчеты! |
|||||||
23
Iven777
11.07.12
✎
11:18
|
(21) Легофилы - это что такое? В справочнике извращенцев на букву "Л" только леприконофилы, леголасофилы и лепрозориофилы :)
|
|||||||
24
H A D G E H O G s
11.07.12
✎
11:21
|
Пусть идет обратно в семерку. У них там своя, особая атмосфера.
|
|||||||
25
philll
11.07.12
✎
11:22
|
работает же
Стоит! Человек реально научился делать отчеты! |
|||||||
26
palpetrovich
11.07.12
✎
11:27
|
(23) wiki:LEGO
|
|||||||
27
gosn1ck
11.07.12
✎
11:28
|
(0) чего вы все набросились? там условие в запросе сделать почеловечески и сделать 1 пакетный запрос вместо 2х.
Стоит! Человек реально научился делать отчеты! |
|||||||
28
Iven777
11.07.12
✎
12:02
|
Спасибо за ответы, поскольку победил первый вариант, выдам ему сейчас следующую задачу.
PS: отчет не рабочий - не думаю, что бухгалтер хочет видеть в отчете помеченный на удаление объект, это раз. Пакетный запрос не проходит - это два. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |