1. Perl / Говнокод #9735

    −120

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    my $uid = 0;
    	my $parse_uid = $parse_sid->{uid} || 0;
    	my $memd_uid  = $RR::Init::memd->get('sid'.$sid) || 0;
    	# Авторизуем при помощи memd
    	if ($parse_uid==$memd_uid){
    		$uid = $memd_uid;
    	}
    
    	# Запоминаем в Куку
    	$r->pnotes('USER_SID' => $sid);
    	$param{sid} = $sid;
    	
    	# Захватываем sid
    	unless (defined $uid){
    		$RR::Init::memd->set('sid'.$sid, 0);
    	}
    	# Всяке артефакты лезут
    	$uid||=undef;

    Лезут всякие артефакты видите ли...

    PSIAlt, 22 Марта 2012

    Комментарии (7)
  2. C# / Говнокод #9734

    +961

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    namespace WindowsFormsApplication3
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                switch (keyData)
                {
                    case Keys.Up:
                        if ((pictureBox1.Location.X + pictureBox1.Width >= pictureBox4.Location.X) & (pictureBox1.Location.X <= pictureBox4.Location.X + pictureBox4.Width) & (pictureBox1.Location.Y <= pictureBox4.Location.Y + pictureBox4.Height) & (pictureBox1.Location.Y >= pictureBox4.Location.Y + pictureBox4.Height / 2)) ;
                        else pictureBox1.Top -= 5;
                        if ((pictureBox2.Visible) & (pictureBox3.Visible))
                            if ((pictureBox1.Location.Y >= pictureBox2.Location.Y) & (pictureBox1.Location.Y + pictureBox1.Height <= pictureBox2.Location.Y + pictureBox2.Height) & (pictureBox1.Location.X >= pictureBox2.Location.X) & (pictureBox1.Location.X + pictureBox1.Width <= pictureBox2.Location.X + pictureBox2.Width))
                                pictureBox1.Location = new Point(pictureBox3.Location.X + (pictureBox1.Location.X - pictureBox2.Location.X), pictureBox3.Location.Y - 5);
                        if ((pictureBox2.Visible) & (pictureBox3.Visible))
                            if ((pictureBox1.Location.Y >= pictureBox3.Location.Y) & (pictureBox1.Location.Y + pictureBox1.Height <= pictureBox3.Location.Y + pictureBox3.Height) & (pictureBox1.Location.X >= pictureBox3.Location.X) & (pictureBox1.Location.X + pictureBox1.Width <= pictureBox3.Location.X + pictureBox3.Width))
                                pictureBox1.Location = new Point(pictureBox2.Location.X + (pictureBox1.Location.X - pictureBox3.Location.X), pictureBox2.Location.Y - 5);
                                break;
                    case Keys.Down:
                                if ((pictureBox1.Location.X + pictureBox1.Width >= pictureBox4.Location.X) & (pictureBox1.Location.X <= pictureBox4.Location.X + pictureBox4.Width) & (pictureBox1.Location.Y + pictureBox1.Height <= pictureBox4.Location.Y + pictureBox4.Height / 2) & (pictureBox1.Location.Y + pictureBox1.Height >= pictureBox4.Location.Y)) ;
                        else pictureBox1.Top += 5;
                        if ((pictureBox2.Visible) & (pictureBox3.Visible))
                            if ((pictureBox1.Location.Y >= pictureBox2.Location.Y) & (pictureBox1.Location.Y + pictureBox1.Height <= pictureBox2.Location.Y + pictureBox2.Height) & (pictureBox1.Location.X >= pictureBox2.Location.X) & (pictureBox1.Location.X + pictureBox1.Width <= pictureBox2.Location.X + pictureBox2.Width))
                                pictureBox1.Location = new Point(pictureBox3.Location.X + (pictureBox1.Location.X - pictureBox2.Location.X), (pictureBox3.Location.Y + pictureBox3.Height) - 5);
                        if ((pictureBox2.Visible) & (pictureBox3.Visible))
                            if ((pictureBox1.Location.Y >= pictureBox3.Location.Y) & (pictureBox1.Location.Y + pictureBox1.Height <= pictureBox3.Location.Y + pictureBox3.Height) & (pictureBox1.Location.X >= pictureBox3.Location.X) & (pictureBox1.Location.X + pictureBox1.Width <= pictureBox3.Location.X + pictureBox3.Width))
                                pictureBox1.Location = new Point(pictureBox2.Location.X + (pictureBox1.Location.X - pictureBox3.Location.X), (pictureBox2.Location.Y + pictureBox2.Height) - 5);
                                break;

    Это не поддаётся описанию. Полная версия: http://pastebin.com/97sbSVLa

    P4R4, 22 Марта 2012

    Комментарии (14)
  3. VisualBasic / Говнокод #9733

    −104

    1. 1
    Dim KolvoZnakov As String = IIf(SqlUser = "Beschastnova" Or SqlUser = "Rodionova", "00000", "00")

    Для двух привередливых бухов выводим аж 4 знака после запятой.

    axel1000, 22 Марта 2012

    Комментарии (3)
  4. C# / Говнокод #9732

    +122

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    else
                    {
                        if ((textBox1.Text == textBox2.Text) | (textBox1.Text == textBox3.Text) | (textBox1.Text == textBox4.Text) | (textBox1.Text == textBox7.Text)) textBox1.ForeColor = Color.Red; else textBox1.ForeColor = Color.Black;
                        if ((textBox2.Text == textBox1.Text) | (textBox2.Text == textBox3.Text) | (textBox2.Text == textBox5.Text) | (textBox2.Text == textBox8.Text)) textBox2.ForeColor = Color.Red; else textBox2.ForeColor = Color.Black;
                        if ((textBox3.Text == textBox1.Text) | (textBox3.Text == textBox2.Text) | (textBox3.Text == textBox6.Text) | (textBox3.Text == textBox9.Text)) textBox3.ForeColor = Color.Red; else textBox3.ForeColor = Color.Black;
                        if ((textBox4.Text == textBox5.Text) | (textBox4.Text == textBox6.Text) | (textBox4.Text == textBox1.Text) | (textBox4.Text == textBox7.Text)) textBox4.ForeColor = Color.Red; else textBox4.ForeColor = Color.Black;
                        if ((textBox5.Text == textBox4.Text) | (textBox5.Text == textBox6.Text) | (textBox5.Text == textBox2.Text) | (textBox5.Text == textBox8.Text)) textBox5.ForeColor = Color.Red; else textBox5.ForeColor = Color.Black;
                        if ((textBox6.Text == textBox4.Text) | (textBox6.Text == textBox5.Text) | (textBox6.Text == textBox3.Text) | (textBox6.Text == textBox9.Text)) textBox6.ForeColor = Color.Red; else textBox6.ForeColor = Color.Black;
                        if ((textBox7.Text == textBox8.Text) | (textBox7.Text == textBox9.Text) | (textBox7.Text == textBox1.Text) | (textBox7.Text == textBox4.Text)) textBox7.ForeColor = Color.Red; else textBox7.ForeColor = Color.Black;
                        if ((textBox8.Text == textBox7.Text) | (textBox8.Text == textBox9.Text) | (textBox8.Text == textBox2.Text) | (textBox8.Text == textBox5.Text)) textBox8.ForeColor = Color.Red; else textBox8.ForeColor = Color.Black;
                        if ((textBox9.Text == textBox7.Text) | (textBox9.Text == textBox8.Text) | (textBox9.Text == textBox3.Text) | (textBox9.Text == textBox6.Text)) textBox9.ForeColor = Color.Red; else textBox9.ForeColor = Color.Black;
                        if ((textBox1.Text == textBox2.Text) | (textBox1.Text == textBox3.Text) | (textBox1.Text == textBox4.Text) | (textBox1.Text == textBox7.Text) |
                            (textBox2.Text == textBox1.Text) | (textBox2.Text == textBox3.Text) | (textBox2.Text == textBox5.Text) | (textBox2.Text == textBox8.Text) |
                            (textBox3.Text == textBox1.Text) | (textBox3.Text == textBox2.Text) | (textBox3.Text == textBox6.Text) | (textBox3.Text == textBox9.Text) |
                            (textBox4.Text == textBox5.Text) | (textBox4.Text == textBox6.Text) | (textBox4.Text == textBox1.Text) | (textBox4.Text == textBox7.Text) |
                            (textBox5.Text == textBox4.Text) | (textBox5.Text == textBox6.Text) | (textBox5.Text == textBox2.Text) | (textBox5.Text == textBox8.Text) |
                            (textBox6.Text == textBox4.Text) | (textBox6.Text == textBox5.Text) | (textBox6.Text == textBox3.Text) | (textBox6.Text == textBox9.Text) |
                            (textBox7.Text == textBox8.Text) | (textBox7.Text == textBox9.Text) | (textBox7.Text == textBox1.Text) | (textBox7.Text == textBox4.Text) |
                            (textBox8.Text == textBox7.Text) | (textBox8.Text == textBox9.Text) | (textBox8.Text == textBox2.Text) | (textBox8.Text == textBox5.Text) |
                            (textBox9.Text == textBox7.Text) | (textBox9.Text == textBox8.Text) | (textBox9.Text == textBox3.Text) | (textBox9.Text == textBox6.Text)) ;
                        else
                        {
                            label1.Visible = true;
                            label2.Visible = true;
                        }

    Удивлению нет границ! Полная версия: http://pastebin.com/S2getyHn

    P4R4, 22 Марта 2012

    Комментарии (6)
  5. PHP / Говнокод #9730

    +158

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    function return_report($new,$do) {
     $dosec = $do - $new;
     $days = floor($dosec / 86400);
     $hour = floor(($dosec - ($days*86400))/3600);
     $min = floor(($dosec - ($days*86400) - ($hour*3600))/60);
     $sec = floor(($dosec - ($days*86400) - ($hour*3600) - ($min*60)));
     switch(substr($days, -2)) { // какое выводить слово
     case 1: case 21: $ost = 'остался '; break;
     default: $ost = 'осталось '; break;
     }
     switch(substr($days, -2)) { // вывод дней
     case 1: case 21: case 31: case 41: $d=' день '; break;
     case 2: case 3: case 4: case 22: case 23: case 24: case 32: case 33: case 34: case 42: case 43: case 44: $d=' дня '; break;
     default: $d=' дней '; 
     }
     switch(substr($hour, -2)) { // вывод часов
     case 1: case 21: $h=' час '; break;
     case 2: case 3: case 4: case 22: case 23: case 24: $h=' часа '; break;
     default: $h=' часов '; 
     }
     switch(substr($min, -2)) { // вывод минут
     case 1: case 21: case 31: case 41: case 51: $m=' минута '; break;
     case 2: case 3: case 4: case 22: case 23: case 24: case 32: case 33: case 34: case 42: case 43: case 44: case 52: case 53: case 54: $m=' минуты '; break;
     default:$m=' минут ';
     }
     switch(substr($sec, -2)) { // вывод секунд
     case 1: case 21: case 31: case 41: case 51: $s=' секунда'; break;
     case 2: case 3: case 4: case 22: case 23: case 24: case 32: case 33: case 34: case 42: case 43: case 44: case 52: case 53: case 54: $s=' секунды'; break;
     default:$s=' секунд';
     }
     if ($dosec > 0) {
     $period = $ost;
     if ($days > 0) $period .= '<b>'.$days.'</b>'
    .$d;
     if ($hour > 0) $period .= '<b>'.$hour.'</b>'
    .$h;
     if ($min > 0) $period .= '<b>'.$min.'</b>'.
    $m;
     if ($sec > 0) $period .= '<b>'.$sec.'</b>'.
    $s;
     return $period;
     }
    return false;
    }

    Человек пытался сделать вывод времени, прошедшего с определенного момента *FACEPALM*

    pro100shureg, 22 Марта 2012

    Комментарии (6)
  6. 1C / Говнокод #9729

    −122

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    Функция ПреобразованиеДаты(Дата) Экспорт
    Если НЕ ПустаяСтрока(Дата) Тогда	
    	ГодКраткий = Прав(Дата, 2);
    	Если 		ГодКраткий = "83" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1983";		
    		ИначеЕсли   ГодКраткий = "84" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1984";
    		ИначеЕсли   ГодКраткий = "85" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1985";	
    		ИначеЕсли   ГодКраткий = "86" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1986";	
    		ИначеЕсли   ГодКраткий = "87" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1987";	
    		ИначеЕсли   ГодКраткий = "88" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1988";	
    		ИначеЕсли   ГодКраткий = "89" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1989";	
    		ИначеЕсли   ГодКраткий = "90" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1990";	
    		ИначеЕсли   ГодКраткий = "91" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1991";	
    		ИначеЕсли   ГодКраткий = "92" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1992";	
    		ИначеЕсли   ГодКраткий = "93" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1993";	
    		ИначеЕсли   ГодКраткий = "94" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1994";	
    		ИначеЕсли   ГодКраткий = "95" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1995";	
    		ИначеЕсли   ГодКраткий = "96" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1996";	
    		ИначеЕсли   ГодКраткий = "97" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1997";	
    		ИначеЕсли   ГодКраткий = "98" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1998";	
    		ИначеЕсли   ГодКраткий = "99" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "1999";	
    		ИначеЕсли   ГодКраткий = "00" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2000";	
    		ИначеЕсли   ГодКраткий = "01" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2001";	
    		ИначеЕсли   ГодКраткий = "02" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2002";	
    		ИначеЕсли   ГодКраткий = "03" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2003";	
    		ИначеЕсли   ГодКраткий = "04" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2004";	
    		ИначеЕсли   ГодКраткий = "05" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2005";	
    		ИначеЕсли   ГодКраткий = "06" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2006";	
    		ИначеЕсли   ГодКраткий = "07" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2007";	
    		ИначеЕсли   ГодКраткий = "08" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2008";	
    		ИначеЕсли   ГодКраткий = "09" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2009";	
    		ИначеЕсли   ГодКраткий = "10" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2010";	
    		ИначеЕсли   ГодКраткий = "11" Тогда
    			ДатаНовая = "" + Лев(Дата,6) + "2011";					
    		КонецЕсли;
    
    ДатаЗначение = Дата(Сред(ДатаНовая,7,4),Сред(ДатаНовая,4,2),Сред(ДатаНовая,1,2));	
    Возврат ДатаЗначение;	
    КонецЕсли;
    КонецФункции

    Прихожу сегодня с утра и вижу вот такой код коллеги. Надо теперь психологически восстанавливаться.

    i-ale, 22 Марта 2012

    Комментарии (51)
  7. PHP / Говнокод #9728

    +157

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    class UserAPI
    {
       function GetUserName($UserId)
       {
          $SqlQuery = mysql_query("SELECT UserName FROM users WHERE id='$UserId'");
          $Response = mysql_fetch_array($SqlQuery);
          return  $Response['UserName'];
       }
         
       function GetUserSurname($UserId)
       {
          $SqlQuery = mysql_query("SELECT UserSurname FROM users WHERE id='$UserId'");
          $Response = mysql_fetch_array($SqlQuery);
          return  $Response['UserSurname'];
       }
       
       function GetUserPhoto($UserId)
       {
          $SqlQuery = mysql_query("SELECT UserPhoto FROM users WHERE id='$UserId'");
          $Response = mysql_fetch_array($SqlQuery);
          return  $Response['UserPhoto'];
       }
       
       function GetUserCountry($UserId)
       {
          $SqlQuery = mysql_query("SELECT country FROM users WHERE id='$UserId'");
          $Response = mysql_fetch_array($SqlQuery);
          return  $Response['country'];
       }
    }

    О да!

    Govnisti_Diavol, 22 Марта 2012

    Комментарии (8)
  8. PHP / Говнокод #9727

    +156

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    //.....
    $post['avatar'] = @$imgpath;
    //.....
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    //.....

    "файлы не загружаются, не знаю в чем проблема"

    _jokz, 21 Марта 2012

    Комментарии (3)
  9. C++ / Говнокод #9726

    +995

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    Для Каждого ТекСтрокаТовары Из ЭтотОбъект.Товары Цикл
    		
          //Товары в резерве на складах
          Если ЗначениеЗаполнено(ЭтотОбъект.ЗаказПокупателя) Тогда
    
            ЗапросРезерв = Новый Запрос;
            ЗапросРезерв.УстановитьПараметр("Период", КонецДня(ЭтотОбъект.Дата));
            ЗапросРезерв.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
            ЗапросРезерв.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
    	ЗапросРезерв.УстановитьПараметр("Цвет", ТекСтрокаТовары.Цвет);
    	ЗапросРезерв.УстановитьПараметр("Регистратор", ЭтотОбъект.ЗаказПокупателя.Ссылка);
    	ЗапросРезерв.Текст = "ВЫБРАТЬ
    	|	ТоварыВРезервеНаСкладах.Номенклатура,
    	|	isnull(ТоварыВРезервеНаСкладах.Количество, 0) КАК Количество,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер42, 0) КАК Размер42,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер44, 0) КАК Размер44,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер46, 0) КАК Размер46,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер48, 0) КАК Размер48,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер50, 0) КАК Размер50,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер52, 0) КАК Размер52,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер54, 0) КАК Размер54,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер56, 0) КАК Размер56,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер58, 0) КАК Размер58,
    	|	isnull(ТоварыВРезервеНаСкладах.Размер60, 0) КАК Размер60
    	|ИЗ
    	|	РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
    	|ГДЕ
    	|	ТоварыВРезервеНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    	|	ТоварыВРезервеНаСкладах.Период <= &Период
    	|	И ТоварыВРезервеНаСкладах.Регистратор = &Регистратор
    	|	И ТоварыВРезервеНаСкладах.Склад = &Склад
    	|	И ТоварыВРезервеНаСкладах.Номенклатура = &Номенклатура
    	|	И ТоварыВРезервеНаСкладах.Цвет = &Цвет";
    	ТЗРезерв = ЗапросРезерв.Выполнить().Выгрузить();
    			
    	Если ЗапросРезерв.Выполнить().Пустой() = Истина Тогда
    	Иначе
    		ЗапросСнятие = Новый Запрос;
    		ЗапросСнятие.УстановитьПараметр("Период", КонецДня(ЭтотОбъект.Дата));
    		ЗапросСнятие.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
    		ЗапросСнятие.УстановитьПараметр("Номенклатура", ТекСтрокаТовары.Номенклатура);
    		ЗапросСнятие.УстановитьПараметр("Цвет", ТекСтрокаТовары.Цвет);
    		ЗапросСнятие.УстановитьПараметр("ДокументРезерва", ЭтотОбъект.ЗаказПокупателя.Ссылка);
    		ЗапросСнятие.Текст = "ВЫБРАТЬ
    		|	ТоварыВРезервеНаСкладах.Номенклатура,
    		|	isnull(ТоварыВРезервеНаСкладах.Количество, 0) КАК Количество,
    		|	isnull(ТоварыВРезервеНаСкладах.Размер42, 0) КАК Размер42,
    				.....
    		|	isnull(ТоварыВРезервеНаСкладах.Размер60, 0) КАК Размер60			
    		|ИЗ
    		|	РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах
    		|ГДЕ
    		|	ТоварыВРезервеНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
    		|	И ТоварыВРезервеНаСкладах.ДокументРезерва = &ДокументРезерва
    		|	И ТоварыВРезервеНаСкладах.Период = &Период
    		|	И ТоварыВРезервеНаСкладах.Склад = &Склад
    		|	И ТоварыВРезервеНаСкладах.Номенклатура = &Номенклатура
    		|	И ТоварыВРезервеНаСкладах.Цвет = &Цвет";
    		ТЗСнятие = ЗапросСнятие.Выполнить().Выгрузить();
    				
    		//Товары в резерве на складах
    		Движение = Движения.ТоварыВРезервеНаСкладах.Добавить();
    		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
    		Движение.Период = Дата;
    		Движение.Склад = ЭтотОбъект.Склад; 
    		Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
    		Движение.ДокументРезерва = ЭтотОбъект.ЗаказПокупателя.Ссылка;
    		Движение.Цвет = ТекСтрокаТовары.Цвет;
    		//42
    		Если ТЗРезерв.Итог("Размер42") - ТЗСнятие.Итог("Размер42") > 0 Тогда
    			Если ТЗРезерв.Итог("Размер42") - ТЗСнятие.Итог("Размер42") > ТекСтрокаТовары.Количество Тогда
    				Движение.Размер42 = ТекСтрокаТовары.Размер42;
    			Иначе
    				Движение.Размер42 = ТЗРезерв.Итог("Размер42") - ТЗСнятие.Итог("Размер42");
    			КонецЕсли;
    		КонецЕсли;      
    		...
                    //И так до 60го размера

    Нашел у себя эту простыню. Чтобы вычислить остатки по резерву - делается запрос по движения со знаком плюс, потом запрос с движениями по минус.
    Далее все это дело выгружается в две таблицы значений и высчитывается разность колонок. Вместо простого запроса по регистру остатков) Ну и много чего интересного)

    ErrorEd88, 21 Марта 2012

    Комментарии (16)
  10. C++ / Говнокод #9725

    +1000

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    // Array below is for faster processing of variable length fields with ascii length.
    // Varbuut sho var arii initcializeet dinamiski. 
    char an[1000][3] = 
    {
    	{'0','0','0'},{'0','0','1'},{'0','0','2'},{'0','0','3'},{'0','0','4'},{'0','0','5'},{'0','0','6'},{'0','0','7'},{'0','0','8'},{'0','0','9'},
    	{'0','1','0'},{'0','1','1'},{'0','1','2'},{'0','1','3'},{'0','1','4'},{'0','1','5'},{'0','1','6'},{'0','1','7'},{'0','1','8'},{'0','1','9'},
    	{'0','2','0'},{'0','2','1'},{'0','2','2'},{'0','2','3'},{'0','2','4'},{'0','2','5'},{'0','2','6'},{'0','2','7'},{'0','2','8'},{'0','2','9'},
    	{'0','3','0'},{'0','3','1'},{'0','3','2'},{'0','3','3'},{'0','3','4'},{'0','3','5'},{'0','3','6'},{'0','3','7'},{'0','3','8'},{'0','3','9'},
    // 84 lines deleted
    	{'8','8','0'},{'8','8','1'},{'8','8','2'},{'8','8','3'},{'8','8','4'},{'8','8','5'},{'8','8','6'},{'8','8','7'},{'8','8','8'},{'8','8','9'},
    	{'9','0','0'},{'9','0','1'},{'9','0','2'},{'9','0','3'},{'9','0','4'},{'9','0','5'},{'9','0','6'},{'9','0','7'},{'9','0','8'},{'9','0','9'},
    // 6 lines deleted
    	{'9','7','0'},{'9','7','1'},{'9','7','2'},{'9','7','3'},{'9','7','4'},{'9','7','5'},{'9','7','6'},{'9','7','7'},{'9','7','8'},{'9','7','9'},
    	{'9','8','0'},{'9','8','1'},{'9','8','2'},{'9','8','3'},{'9','8','4'},{'9','8','5'},{'9','8','6'},{'9','8','7'},{'9','8','8'},{'9','8','9'}
    };
    
    			int ll = f->cfg.len_len;
    			long dl = f->data_len;
    			// Prepare length
    			if ( NULL == dst )
    			{
    				dst_len = f->data_len + ll + 1 ;
    				dst = (char*) malloc ( dst_len );
    			}
    			else
    			//if( dst_len < ll + dl )
    			if( dst_len < (unsigned) (ll + dl) )
    			{
    				// TO DOO - error should be processed
    				break;
    			}
    			long i2;
    			if ( ll < 2 )
    			{
    				dst[0]=an[dl][2];
    			}
    			else if ( ll < 3 )
    			{
    				dst[0]=an[dl][1];
    				dst[1]=an[dl][2];
    			}
    			else if ( ll < 4 )
    			{
    				dst[0]=an[dl][0];
    				dst[1]=an[dl][1];
    				dst[2]=an[dl][2];
    			}
    			else if ( ll < 5 )
    			{
    				i2 = dl / 1000;
    				dst[0]=an[i2][2];
    				i2 = dl % 1000;
    				dst[3]=an[i2][2];
    				dst[2]=an[i2][1];
    				dst[1]=an[i2][0];
    			}
    			else if ( ll < 6 )
    			{
    				i2 = dl / 1000;
    				dst[0]=an[i2][1];
    				dst[1]=an[i2][2];
    				i2 = dl % 1000;
    				dst[4]=an[i2][2];
    				dst[3]=an[i2][1];
    				dst[2]=an[i2][0];
    			}
    			else
    			{
    				// General case
    				for ( int k = ll  ; k > 0  ; k-- )
    				{
    					dst[k-1] ='0' + dl % 10;
    					dl/=10;
    				}
    			}
    
    			dst[dl]=0;

    This is a faster version of itoa() or sprintf(str,"%d",value)...
    Unfortunately it has a bug - lines of array with numbers 890-899 and 990-999 is missing.

    wtfcode, 21 Марта 2012

    Комментарии (13)