Приведение ссылки к структуре значений простых типов


Набор функционала (процедуры и функции) для преобразования любого объекта в структуру, содержащую расшифровку реквизитов объекта в виде простых типов

Реквизиты объекта преобразовываются в структуры, в которых реквизиты подчиненных объектов тоже преобразуются в структуры — пока объект не развернется до иерархической структуры, содержащей значения простого типа

Уровень вхождения можно ограничить параметром, тогда конечное значение будет преобразовано в строку

Может использоваться:

— при работе с сервером с клиента (универсальность может сказаться на производительности, но тут важен контекст задачи),

— при работе с 1С по COM-интерфейсу,  

— при выгрузке в XML структура простых типов выгружается предельно просто (что продемонстрировано в прилагаемой обработке). Избыточность, конечно, зашкаливает — но зачастую бывает, что на это не стоит обращать внимание

— при сохранении версий объекта при записи

В качестве бонуса к последней опции — Функция СравнитьВеткиСтруктуры() — позволяет сравнить две структуры на изменения  (к примеру: для контроля изменений в версиях)

 

Основной функционал:

Функция ПреобразоватьОбъектВСтруктуру(Объект, НаСервере = Ложь, СтруктураСоответствия = Неопределено, Исключения = Неопределено) Экспорт

Функция ПривестиОбъектыВСтруктуреКПростомуТипу(СтруктураОбъекта, Уровень = 0, МаксимальныйУровень = Неопределено, НаСервере = Ложь) Экспорт

Функция СравнитьВеткиСтруктуры(элемент1, элемент2, СтруктураСравнения, Исключения = «», ПрерватьПриРазличии = Ложь) Экспорт

 

upd 20130227: вывожу УникальныйИдентификатор в любом случае

на всякий случай только заккоментировал //Если НаСервере Тогда — поиском 1 раз встречается

4 Comments

  1. bulpi

    Все хорошо, только почему-то в тег «ссылка» выгружается представление объекта, а не ID, как хотелось бы.

    Reply
  2. nnn

    (1) bulpi, ID — это УникальныйИдентификатор() -?

    там параметр есть:

    ПреобразоватьОбъектВСтруктуру(Объект, НаСервере = Ложь, СтруктураСоответствия = Неопределено, Исключения = Неопределено) Экспорт

    Если НаСервере будет Истина Тогда в структуре появится соответствующее значение с ключем УникальныйИдентификатор

    значение с ключем «Ссылка» в этом контексте не актуально — руки доберутся — уберу

    upd: хотя — УникальныйИдентификатор() работает на клиенте

    «исторически сложилось» видимо — было не в универсальном контексте

    вечером посмотрю

    upd: сделал, .УникальныйИдентификатор появляется всегда

    Reply
  3. devs

    Реквизит с Типом «ХранилищеЗначения» тоже раскладывает?

    PS проверил, с хранилищем не предусмотрено

    Reply
  4. tango

    плюса не глядя

    интересно, что сделали с перечислениями

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *