🤯 ТипизированнаяСтруктура
➖ В коде на 1С очень много структур. И у всех у них есть один недостаток - их нельзя "типизировать".
Обычная практика - методы, которые возвращают специальную структуру определенного содержимого. Например, конструктор параметров основного экспортного метода. Но эту структуру всегда можно видоизменить до неузнаваемости (специально или же случайно где-то в стеке вызовов).
➖ Вот была бы специальная структура, которую при создании можно было бы "настроить". Но не как "ФиксированнаяСтруктура", а чтобы можно было изменить значения свойств. Но при этом каждое свойство будет строго типизированным. Такими типами, которые мы ожидаем внутри своих методов. И никто не сможет обмануть наш код и сделать с ним что-то непредвиденное (пусть даже случайно).
➖ И у нас есть такая структура. Это ДанныеФормыСтруктура. У неё есть свойства, каждое строго типизировано (причем до квалификаторов примитивных типов). Платформа не позволит добавить новое свойство, а в существующие нельзя будет установить другой тип данных. Идеально.
🤔 Вот только ДанныеФормыСтруктура не имеет конструкторов. Нельзя просто взять (👌) и создать Новый ДанныеФормыСтруктура... Или можно?
😎 На данном канале нет ничего невозможного!
❕ В результате экспериментов удалось выяснить, что программно можно создавать произвольные объекты ДанныеФормыСтруктура. Не привязанные к какой-то форме. Их можно безнаказанно передавать между клиентом и сервером.
👀 И открывает этот дивный мир нам сериализация XML. Мы можем программно создать текст XML по нужному формату внутреннего типа XDTO у платформы. И потом просто БСПшным методом ЗначениеИзСтрокиXML получить новый объект ДанныеФормыСтруктура. С такими ключами и типами, которые нам нужны.
🩼 Конечно, это все костыли. Нельзя использовать такое на проде. НО. Подобные эксперименты показывают нам сколько всего позволяет на самом деле платформа и как много возможностей скрыто от программиста 1С.
❔А вы как думаете, в каких случаях были бы полезны "Типизированные структуры"?
Post #749
4.02K

- 🔥 51
- 👍 15
- 👏 7
- 🕊 1