1. 1C / Говнокод #17737

    −121

    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
    79. 79
    КодТек = Каст(ID);
    
    Возвр = "{";
    
    ТекПользоваетель Контрагенты.НайтиПоКоду(КодТек);
    Если ТекПользователь = Контрагенты.ПустаяСсылка тогда
    		возврат 1;//Пользователь не найден
    конецЕсли;
    
    ТекЛев = Контрагенты.НайтиПоКоду(ТекПользователь.ЛеваяНога);
    
    Если не ТекЛев = Контрагенты.ПустаяСсылка тогда
    		Возвр=Возвр+"""cur_left"":{"+
    			"""id"":"""+ТекЛев.ID+""","+
    			"""last_name"":"""+ТекЛев.Фамилия+""","+
    			"""first_name"":"""+ТекЛев.Имя+""","+
    			"""middle_name"":"""+ТекЛев.Отчество+"""},";
    		
    		ТекЛевЛев = Контрагенты.НайтиПоКоду(ТекЛев.ЛеваяНога);
    
    		Если не ТекЛевЛев = Контрагенты.ПустаяСсылка тогда
    				Возвр=Возвр+"""cur_left_left"":{"+
    					"""id"":"""+ТекЛевЛев.ID+""","+
    					"""last_name"":"""+ТекЛевЛев.Фамилия+""","+
    					"""first_name"":"""+ТекЛевЛев.Имя+""","+
    					"""middle_name"":"""+ТекЛевЛев.Отчество+"""},";
    		конецЕсли;
    			
    		ТекЛевПрв = Контрагенты.НайтиПоКоду(ТекЛев.ПраваяНога);
    
    		Если не ТекЛевПрв = Контрагенты.ПустаяСсылка тогда
    				Возвр=Возвр+"""cur_left_right"":{"+
    					"""id"":"""+ТекЛевПрв.ID+""","+
    					"""last_name"":"""+ТекЛевПрв.Фамилия+""","+
    					"""first_name"":"""+ТекЛевПрв.Имя+""","+
    					"""middle_name"":"""+ТекЛевПрв.Отчество+"""},";
    		конецЕсли;
    конецЕсли;
    
    
    ТекПрв = Контрагенты.НайтиПоКоду(ТекПользователь.ПраваяНога);
    
    Если не ТекПрв = Контрагенты.ПустаяСсылка тогда
    		Возвр=Возвр+"""cur_right"":{"+
    			"""id"":"""+ТекПрв.ID+""","+
    			"""last_name"":"""+ТекПрв.Фамилия+""","+
    			"""first_name"":"""+ТекПрв.Имя+""","+
    			"""middle_name"":"""+ТекПрв.Отчество+"""},";
    		
    		ТекПрвЛев = Контрагенты.НайтиПоКоду(ТекПрв.ЛеваяНога);
    
    		Если не ТекПрвЛев = Контрагенты.ПустаяСсылка тогда
    				Возвр=Возвр+"""cur_right_left"":{"+
    					"""id"":"""+ТекПрвЛев.ID+""","+
    					"""last_name"":"""+ТекПрвЛев.Фамилия+""","+
    					"""first_name"":"""+ТекПрвЛев.Имя+""","+
    					"""middle_name"":"""+ТекПрвЛев.Отчество+"""},";
    		конецЕсли;
    			
    		ТекПрвПрв = Контрагенты.НайтиПоКоду(ТекПрв.ПраваяНога);
    
    		Если не ТекПрвПрв = Контрагенты.ПустаяСсылка тогда
    				Возвр=Возвр+"""cur_right_right"":{"+
    					"""id"":"""+ТекПрвПрв.ID+""","+
    					"""last_name"":"""+ТекПрвПрв.Фамилия+""","+
    					"""first_name"":"""+ТекПрвПрв.Имя+""","+
    					"""middle_name"":"""+ТекПрвПрв.Отчество+"""},";
    		конецЕсли;
    конецЕсли;
    
    
    ДлСтр = ДлинаСтроки(Возвр);
    
    Если ДлСтр=1 тогда 
    	возврат 2;//Ноги пусты
    иначе
    	Возрв = Лев(Возвр, ДлСтр-1)+"}";
    	возврат Возвр;
    конецЕсли;

    1С - хорошая среда. В этой среде очень просто и весело писать говнокод, причем с вполне серьезной мордой.

    Запостил: Rijen, 05 Марта 2015

    Комментарии (7) RSS

    • >ТекПользователь.ЛеваяНога

      сильно
      Ответить
    • > Пользоваетель
      Этот код точно работал?
      Ответить
      • Нет, я этот код набросал на коленке и закинул сюда, чтобы передать так как тут подсветка есть. Вы так же можете заметить несуществующие функции "Каст, ДлинаСтроки", опять таки Пишется "ПоискПоКоду", и передается ссылка.
        Ответить
        • не пишите больше на коленке, потом плохо отмывается.
          Ответить
    • Что-то ни кто не ругается на дублирование кода и составление json. Это что, нормальное решение для 1С?
      Ответить
      • Для 1С вполне. Качественно не нужно, нужно быстро. А функции делать - это время терять. Поддержка? Так в редакторе Ctrl+H есть. Документация на платформу тоже для идиотов. В 8.3.5 уже есть поддержка JSON, только кому она нужна?
        Ответить
        • Есть? Урря! *Ушел искать*
          Правда у меня под рукой последняя - 8,3,19
          Ответить

    Добавить комментарий