Имя: Пароль:
1C
1C 7.7
v7: Скажите, а какой смысл в такой функции может быть?
0 Скользящий
 
25.10.12
10:25
Наткнулся в одном из отчетов.

Функция ПредыдущаяДата(ИсходнаяДата)
   
   ИсхДата_Число = ДатаЧисло(ИсходнаяДата);
   ИсхДата_Месяц = ДатаМесяц(ИсходнаяДата);
   ИсхДата_Год =    ДатаГод(ИсходнаяДата);
   
   Если ИсхДата_Число = 1 Тогда
       Если ИсхДата_Месяц = 1 Тогда
           Результат = Дата(ИсхДата_Год-1, 12, 31);
       Иначе
           Результат = КонМесяца(Дата(ИсхДата_Год, ИсхДата_Месяц-1, ИсхДата_Число));
       КонецЕсли            
   Иначе    
       Результат = Дата(ИсхДата_Год, ИсхДата_Месяц, ИсхДата_Число-1);
   КонецЕсли;    
   
   Возврат Результат;    
   
КонецФункции
1 Mikeware
 
25.10.12
10:26
Ошибка в ДНК
2 mikecool
 
25.10.12
10:27
работает - не трожь! (с)
3 Жан Пердежон
 
25.10.12
10:27
смысл: вычесть 1 день из даты
4 Скользящий
 
25.10.12
10:28
Ну, мне тоже кажется, что ошибка в ДНК, хотя остальной код вроде достаточно приличный.
5 Преднаименование
 
25.10.12
10:28
Скорее всего имелось ввиду ДОбавитьМесяц(ИсходнаяДата,-1)
6 Starhan
 
25.10.12
10:28
не помню как в 7.7. Но чел хотел сделать что то вроде
НчалоДня(НачалоДня(Дата)-1)

просто не знал как реалзиовать.
7 povar
 
25.10.12
10:28
(0) нормально, чел получает бабки в зависимости от количества строк кода )
8 Рэйв
 
25.10.12
10:29
Если первое число, то берет последний день предыдущего месяца
9 Chai Nic
 
25.10.12
10:29
Может автор просто не знал, что допустима арифметика сложения и вычитания между датой и числовым значением.
10 Преднаименование
 
25.10.12
10:29
В(5) ошибся, скорее всего как в (3)
11 Рэйв
 
25.10.12
10:29
хотя витиевато конечно:-)
12 1Сергей
 
25.10.12
10:29
Функция ПредыдущаяДата(ИсходнаяДата)
   
   //ИсхДата_Число = ДатаЧисло(ИсходнаяДата);
   //ИсхДата_Месяц = ДатаМесяц(ИсходнаяДата);
   //ИсхДата_Год =    ДатаГод(ИсходнаяДата);
   //
   //Если ИсхДата_Число = 1 Тогда
   //    Если ИсхДата_Месяц = 1 Тогда
   //        Результат = Дата(ИсхДата_Год-1, 12, 31);
   //    Иначе
   //        Результат = КонМесяца(Дата(ИсхДата_Год, ИсхДата_Месяц-1, ИсхДата_Число));
   //    КонецЕсли            
   //Иначе    
   //    Результат = Дата(ИсхДата_Год, ИсхДата_Месяц, ИсхДата_Число-1);
   //КонецЕсли;    
   //
   //Возврат Результат;    
   
   Возврат ИсходнаяДата-1;
   
КонецФункции
13 Chai Nic
 
25.10.12
10:30
Скорее всего, у автора не было ЖКК, и он осваивал 1с методом тыка
14 1Сергей
 
25.10.12
10:31
(13) Скорее всего у автора частое заболевание - Восьмёрка головного мозга
15 Скользящий
 
25.10.12
10:31
Я наткнулся на эту функцию, сказал что то вроде вРотМнеНоги и выложил на мисту, может я чего то не понимаю в этом шедевре. ) По контексту отчета надо было получить предыдущую дату конца периода.
16 Chai Nic
 
25.10.12
10:32
(14) Вряд ли. Я прямо так себе и представил программиста, вынужденного писать на 1сv7 и лишенного документации.. вынужденного пользоваться синтакс-помощником. А в нём нет полного описания языка.
17 Mikeware
 
25.10.12
10:34
(16) СП обычно вполне хватает.
отладчик тоже никто не отменял.
А ЖКК ненамного полнее СП.
18 akaBrr
 
25.10.12
10:35
(0) Жесть, к чему все эти сложности?
19 Chai Nic
 
25.10.12
10:35
(17) Где в СП написано, что к дате можно прибавлять/вычитать число? :)
Да и в ЖКК есть многое, чего нет в СП. Во многих статьях СП так и написано "подробности в описании языка"
20 nv24
 
25.10.12
10:36
(0) а где часы минуты и секунды?
21 Chai Nic
 
25.10.12
10:37
(20) Восьмерочник детектед )
22 nv24
 
25.10.12
10:38
(21) в 7ке тоже есть;)
23 GLazNik
 
25.10.12
10:38
(19) +1
Автор изобрел велосипед, ориентируясь на процедуры и функции имеющиеся в СП.
24 akaBrr
 
25.10.12
10:38
(22) в дате?
25 Ptmlk
 
25.10.12
10:39
Кажется никто не обратил внимания, что иногда отнимается 1 день, а иногда - 1 месяц.
26 akaBrr
 
25.10.12
10:40
(25) а иногда год, вот только нафига?
27 GLazNik
 
25.10.12
10:41
(22) нету там. ни в составе даты ни отдельно
(25) все там норм... КонМесяца не пропустили случаем?
28 Starhan
 
25.10.12
10:42
(25)(26) лол  при вычетании месяца и год,  конецмесяца и конецгода случае если это 1е счисло месяца и года вы и не заметили
29 1Сергей
 
25.10.12
10:42
(25) месяц декрементируется если число первое, всё как положено
30 GLazNik
 
25.10.12
10:42
(27) КонецГода там нет если чо :)
31 nv24
 
25.10.12
10:43
(27) а в регистре документы  каким временем проводятся?
32 GLazNik
 
25.10.12
10:43
(30) к (28)
33 Starhan
 
25.10.12
10:44
(32) угу на автомате написал. Но там явно прописано 12 31
34 Ptmlk
 
25.10.12
10:44
(28) И правда, пропустил. Ну тогда и правда оплата за строки.
35 1Сергей
 
25.10.12
10:45
(31) в регистре документы проводятся позицией документа
36 akaBrr
 
25.10.12
10:45
(28) я все заметил, откуда такие выводы?
37 GLazNik
 
25.10.12
10:47
(27) это дело к типу "Дата" не имеет никакого отношения... и работой с датой... архитектурно оно хранится в виде строки...
38 GLazNik
 
25.10.12
10:50
(37) да шо я седня все мажу то... к (31) это все
39 1Сергей
 
25.10.12
10:52
Семёрошники изголодались по дятлам. Один появится, так сразу налетают как коршуны :)
40 nv24
 
25.10.12
10:52
(35) казалось бы  причем здесь
ПолучитьВремя(<Часы>,<Минуты>,<Секунды>)
41 1Сергей
 
25.10.12
10:54
(40) В регистре-то? Да, вообще не при чём
42 nv24
 
25.10.12
10:55
(41) я так не думаю
43 Жан Пердежон
 
25.10.12
10:56
(15) всё правильно: увидел индусский код - сразу выкладывай на мисту, его тут так не хватает;
а заодно и своё ЧСВ поднимешь.
44 1Сергей
 
25.10.12
10:57
45 1Сергей
 
25.10.12
10:58
46 GLazNik
 
25.10.12
10:58
(40) И? Какое это отношение имеет к (0)? Как такого времени в клюшках нет. Можно получить текущее время (в виде строки и/или отдельно часах, минутах, секундах) и можно получить/установить время документа (опять таки отдельно в часах, минутах, секундах)
47 Скользящий
 
25.10.12
11:00
(43) Я не считаю себя крутым программером, более того, я им и не являюсь, но даже на мой взгляд среднего дятла это алмаз гамнокода. )
48 Stagor
 
25.10.12
11:00
(12) Все гораздо проще
ИсходнаяДата = ИсходнаяДата - 1;
функция не нужна :)
49 1Сергей
 
25.10.12
11:05
(47)>>Я не считаю себя крутым программером, более того, я им и не являюсь

Пафосно :)
50 Mikeware
 
25.10.12
11:07
(47) а то ты никогда таких "алмазов" не высирал? :-)
Я вот недавно в гараже нашел пачку листингов студенческих времен. Там такой наивняк... Прикольно через 20 лет смотреть (хоть на сишный код, хоть на ассемблерные)
51 chief accountant
 
25.10.12
11:12
(43) это что? продолжим тему Я даже не представляю как это назвать...
?
52 dmpl
 
25.10.12
11:37
(0) Может такой код работает быстрее. В семерке такое бывало.