Advertisement
Adam_Martin

Untitled

Feb 17th, 2012
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. ///////////////////////////////////////////////////////////////////////
  2.  
  3. //16-символьное представление объекта
  4.  
  5. Функция ЗначениеВСтрокуВнутр16(прм_об,прм_ПрефиксБазы = "") Экспорт
  6. стр = СокрЛП(ЗначениеВСтрокуВнутр(прм_об));
  7. стр = Сред(стр,2,СтрДлина(стр)-2); //убираем {}
  8.  
  9. сп = СоздатьОбъект("СписокЗначений");
  10. сп.ИзСтрокиСРазделителями(стр);
  11. Если сп.РазмерСписка()<>7 Тогда
  12. Сообщить("Неправильный размер списка "+стр); а=1/0;
  13. КонецЕсли;
  14. тип=сп.ПолучитьЗначение(1);
  15. вид=сп.ПолучитьЗначение(4);
  16. объ=сп.ПолучитьЗначение(7);
  17. Если СтрДлина(тип)<>1 Тогда
  18. Сообщить("Неправильный размер идентификатора типа, ожидается 1 *"+тип+"*"); а=1/0;
  19. КонецЕсли;
  20. Если вид="0" Тогда
  21. Если СтрДлина(объ)<>23 Тогда
  22. Сообщить("Неправильный размер идентификатора, ожидается 23 *"+объ+"*"); а=1/0;
  23. КонецЕсли;
  24. вид=лев(объ, 10);
  25. объ=прав(объ,13);
  26. КонецЕсли;
  27. Если СтрДлина(объ)<>13 Тогда
  28. Сообщить("Неправильный размер идентификатора, ожидается 13 *"+объ+"*"); а=1/0;
  29. КонецЕсли;
  30. урбд=прав(" "+прм_ПрефиксБазы,3);
  31. объ=лев(объ,10);
  32. вид=_IdToStr(0+вид);
  33. объ=_IdToStr(0+объ);
  34. Если СтрДлина(вид)<>6 Тогда
  35. Сообщить("Неправильный размер идентификатора вида, ожидается 6 *"+вид+"*"); а=1/0;
  36. КонецЕсли;
  37. ид=тип+вид+объ+урбд;
  38. стр=СтрЗаменить(ид, " ", "_");
  39. Возврат стр;
  40. КонецФункции
  41. ///////////////////////////////////////////////////////////////////////
  42.  
  43. //объект из 16-символьного представления
  44.  
  45. Функция ЗначениеИзСтрокиВнутр16(прм_ИД16) Экспорт;
  46. // Вот такой должен быть результат:"{"O","0","0","19434","0","0"," 1897252 "}"
  47.  
  48. Если СтрДлина(прм_ИД16)<>16 Тогда
  49. Сообщить("Ожидается строка длиной 16:"+прм_ИД16); а=1/0;
  50. КонецЕсли;
  51. стр_ИД = """" + Лев(прм_ИД16,1)+"""," + """0""," + """0""," + """"+_StrToId(Сред(прм_ИД16,2,6))+"""," + """0""," + """0""," + """" + _StrToId(сред(прм_ИД16,8,6)) + """," + """" + Прав(прм_ИД16,3) +"""";
  52. стр_ИД = "{"+стр_ИД+"}";
  53. Возврат ЗначениеИзСтрокиВнутр(стр_ИД);
  54. КонецФункции
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement