Имя: Пароль:
1C
Юмор
Прошу мнения экспертов.
0 Iven777
 
11.07.12
10:45
1. Стоит! Человек реально научился делать отчеты! 58% (7)
2. Немного подождать. 42% (5)
Всего мнений: 12

Добрый день. Есть программист, изучает полгода восьмерку (опыт работы в 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:  отчет не рабочий - не думаю, что бухгалтер хочет видеть в отчете помеченный на удаление объект, это раз. Пакетный запрос не проходит - это два.