Программное создание произвольного объекта по типу
По теме из базы знаний
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Управляемое приложение: правильное программное открытие форм
- Программное создание графических схем (v.2): API для ГрафическойСхемы
- Программная работа с графическими схемами. Готовое решение
- Программный интерфейс для доработки форм
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
// Это движок форума пробел вставляет сам...
Встречался когда-то с такой конструкцией
Я много с чем и с кем в своей жизни встречался... Даже с CRE ATE TABLE...
Думал сработает, да и по логике если думать, будто бы должно работать
Но вот беда: по логике вещей и CRE ATE TABLE всегда и везде должно работать (ведь понятно же все написано!), ан нет - не работает!
// Это движок форума пробел вставляет сам...
(4) Только логика была не в синтаксисе, а в том, что такая конструкция действительно возвращала объект указанного типа. Да и в принципе какое тогда у этой конструкции назначение, если ничего с этим не сделать. Ради получения метаданных (.метаданные())? Грандиозное удовольствие.
(5) см. СП:
В конструкторе объекта это должно быть прописано про Новый.
Далее.
(5)
Для получения СправочникОбъект необходимо вызывать его конструктор. Через Новый создается не инициализированный объект.
Оператор позволяет создать значение указанного типа. Допустим только для тех типов, для которых разрешено создание с помощью данного оператора (подробнее см. описание объектов языка).
В конструкторе объекта это должно быть прописано про Новый.
Далее.
(5)
Только логика была не в синтаксисе, а в том, что такая конструкция действительно возвращала объект указанного типа.
Для получения СправочникОбъект необходимо вызывать его конструктор. Через Новый создается не инициализированный объект.
(9) а у примитивных есть конструктор?
У ссылочных не вызывается конструктор напрямую. но он там есть.. Там свой синтаксис. Но если есть конструктор, то и Новый не будет ошибку давать, хоть и не будет инициировать.
Тот же конструктор для элемента справочника не вызывается напрямую, а через метод СоздатьЭлемент(), в котором происходит инициализация.
У ссылочных не вызывается конструктор напрямую. но он там есть.. Там свой синтаксис. Но если есть конструктор, то и Новый не будет ошибку давать, хоть и не будет инициировать.
Тот же конструктор для элемента справочника не вызывается напрямую, а через метод СоздатьЭлемент(), в котором происходит инициализация.
(7)
Работает также и для любых регистров. Хотя набор записей можно сразу получить через Новый.
для чего конструкция работает
Мне удобно использовать для получения менеджера объекта в универсальных решениях.МетаданныеОбъекта = Метаданные.НайтиПоТипу(Тип);
МенеджерОбъекта = Новый(СтрЗаменить(МеталанныеОбъекта.ПолноеИмя(), ".", "Менеджер."));
Работает также и для любых регистров. Хотя набор записей можно сразу получить через Новый.
В контексте управляемой формы сработает:
&НаСервере
Процедура Команда1НаСервере()
ИмяТипаПрикладногоОбъекта = "ДокументОбъект.Документ1";
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(Новый РеквизитФормы("ПрикладнойОбъект", Новый ОписаниеТипов(ИмяТипаПрикладногоОбъекта)));
ИзменитьРеквизиты(МассивРеквизитов);
ПрикладнойОбъект = РеквизитФормыВЗначение("ПрикладнойОбъект");
ПрикладнойОбъект.Дата = ТекущаяДата();
ПрикладнойОбъект.Записать();
КонецПроцедуры
Показать
(13) Ну это уже немного тяжелое что-то. Я хотел использовать такое создание для решения задачи по универсальной загрузке данных. В моей реализации после выбора загружаемого объекта (справочник / документ), в отдельной вкладке выводятся все его реквизиты, где необходимо расставить соответствия с колонками. Но для реквизитов с составным типом необходимо указать ЯВНО какой тип мы хотим грузить, и, если это ссылка, то создавать / искать объект по выбранному в колонке типу.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот