Advertisement
Guest User

Untitled

a guest
Jan 21st, 2013
2,576
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.64 KB | None | 0 0
  1. Функция json(Объект)
  2.  
  3. Тип = ТипЗнч(Объект);
  4.  
  5. Если
  6. Тип = Тип("Массив")
  7. ИЛИ Тип = Тип("ТаблицаЗначений")
  8. ИЛИ Тип = Тип("СписокЗначений")
  9.  
  10. Тогда
  11.  
  12. Количество = Объект.Количество();
  13. Результат = "[";
  14.  
  15. Для н = 0 ПО Количество - 1 Цикл
  16. Результат = Результат + json(Объект[н]) + ?(н < Количество - 1, ", ", "");
  17. КонецЦикла;
  18.  
  19. Результат = Результат + "]";
  20. Возврат Результат;
  21.  
  22. ИначеЕсли
  23. Тип = Тип("Структура")
  24. ИЛИ Тип = Тип("Соответствие") Тогда
  25. н = 0;
  26. Количество = Объект.Количество();
  27. Результат = "{";
  28.  
  29. Для Каждого Пара Из Объект Цикл
  30. Результат = Результат + json(Пара.Ключ) + ": " + json(Пара.Значение) + ?(н < Количество - 1, ", ", "");
  31. н = н + 1;
  32. КонецЦикла;
  33. Результат = Результат + "}";
  34. Возврат Результат;
  35.  
  36. ИначеЕсли Тип = Тип("СтрокаТаблицыЗначений") Тогда
  37.  
  38. Результат = "{";
  39. Колонки = Объект.Владелец().Колонки;
  40. Количество = Колонки.Количество();
  41.  
  42. Для н = 0 ПО Количество - 1 Цикл
  43. Ключ = Колонки[н].Имя;
  44. Результат = Результат + json(Ключ) + ": " + json(Объект[Ключ]) + ?(н < Количество - 1, ", ", "");
  45. КонецЦикла;
  46.  
  47. Результат = Результат + "}";
  48. Возврат Результат;
  49.  
  50. ИначеЕсли Тип = Тип("ЭлементСпискаЗначений") Тогда
  51. Возврат json(Объект.Значение);
  52.  
  53. ИначеЕсли Тип = Тип("Строка") Тогда
  54. Результат = Объект;
  55.  
  56. Результат = СтрЗаменить(Результат, "\", "\\");
  57. Результат = СтрЗаменить(Результат, "/", "\/");
  58. Результат = СтрЗаменить(Результат, """", "\""");
  59. Результат = СтрЗаменить(Результат, Символы.ВК, "\r");
  60. Результат = СтрЗаменить(Результат, Символы.Таб, "\t");
  61. Результат = СтрЗаменить(Результат, Символы.ПС, "\n");
  62.  
  63. Возврат """" + Результат + """";
  64.  
  65. ИначеЕсли Тип = Тип("Число") Тогда
  66. Возврат Формат(Объект, "ЧРД=.; ЧН=0; ЧГ=0");
  67.  
  68. ИначеЕсли Тип = Тип("Булево") Тогда
  69. Возврат Формат(Объект, "БЛ=false; БИ=true");
  70.  
  71. ИначеЕсли Тип = Тип("Дата") Тогда
  72. Возврат json(Формат(Объект, "ДФ=yyyy-MM-ddThh:mm:ss"));
  73.  
  74. ИначеЕсли
  75. Объект = Неопределено
  76. ИЛИ Объект = Null
  77.  
  78. Тогда Возврат "null";
  79.  
  80. ИначеЕсли
  81. Справочники.ТипВсеСсылки().СодержитТип(Тип)
  82. Или Документы.ТипВсеСсылки().СодержитТип(Тип)
  83.  
  84. Тогда
  85. Возврат json(Объект.УникальныйИдентификатор());
  86.  
  87. Иначе
  88. Возврат json(Строка(Объект));
  89.  
  90. КонецЕсли;
  91. КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement