Куда пропал произвольный тип из конфигуратора?

1. Fox_65 1 30.07.24 06:18 Сейчас в теме
Не знаю с какого релиза в конфигураторе в выборе Тип Значения пропал тип Произвольный. Столкнулся с этой проблемой когда в обычном приложении понадобилось вывести в таблицу значений на форму результаты функции НайтиПоСсылкам(). Для вывода результата не подходит никакой тип из предлагаемых в конфигураторе. Думал, что данный тип совсем упразднили, но в списке значений можно не выбирать тип значения для элементов, что в общем соответствует Произвольному типу. За что так наказали Таблицу значений и Дерево значений?
Вопрос заключается вот в чем. Поделитесь своим опытом. Как вы обходите данное ограничение? Не все можно поместить в список (в одну колонку), а в других (таблица, дерево) нельзя вывести, к примеру, записи регистра сведений (они не ссылочного типа).
По теме из базы знаний
Найденные решения
11. SlavaKron 30.07.24 15:09 Сейчас в теме
Да, если нужно только выводить значения без редактирования, то достаточно:
ДеревоСсылок.Колонки.Добавить("Ссылки");
ЭлементыФормы.ДеревоСсылок.Колонки.Ссылки.Данные = "Ссылки";
Предварительно нужно добавить колонку "Ссылки" без привязки к данным (очистить свойство колонки "Данные").
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1880116 30.07.24 07:39 Сейчас в теме
Опять проклятая платформа не дает творить дичь креативному разработчику. Да когда же это кончится?

(1)
Как вы
Мы понимаем разницу между данными информационной базы, реквизитами формы и элементами диалога.
orakool; user2033930; +2 Ответить
6. Fox_65 1 30.07.24 13:52 Сейчас в теме
(2) Я тоже понимаю разницу между данными, реквизитами и элементами. Приходилось писать для разных платформ (начиная с 6.0). Тут потребовалась отработка для УТ 10.3. Причем не вопрос создать программно такую таблицу, но зачем такой геморой?
Прикрепленные файлы:
7. SlavaKron 30.07.24 14:06 Сейчас в теме
(6) В чем геморрой? Создать то нужно только колонку.
8. Fox_65 1 30.07.24 14:29 Сейчас в теме
(7) А вот тут начинается самое интересное. Если создать программно колонку для реквизита Формы, то на форме она не появится. Можно программно добавить колонку и на форму, но связи между ними не будет.. И такая свистопляска только из за того, чтобы на форму в колонку таблицы выводились значения любых типов.
9. SlavaKron 30.07.24 14:49 Сейчас в теме
(8) Попробовал - программно создаем только 1 колонку для хранения значения с произвольным типом. В таблицу добавляем колонку для представления. Если требуется еще редактирование значения произвольного типа, то нужна еще колонка с описанием типов. Накидал пример, максимально покрывающий возможные задачи.
Прикрепленные файлы:
КолонкаПроизвольногоТипаВДереве.epf
10. user2033930 30.07.24 14:50 Сейчас в теме
(8) Давно ли 1С запретила элементам формы указывать путь к данным?
SlavaKron; +1 Ответить
12. Fox_65 1 30.07.24 16:27 Сейчас в теме
13. Fox_65 1 30.07.24 16:38 Сейчас в теме
(10) Конечно путь прописываю. Только в колонке на форме не показываются данные из колонки реквизита. Хотя процедура ПриВыводеСтроки срабатывает. Так что похоже получаются невидимые строки в таблице на форме.
14. user2033930 30.07.24 16:56 Сейчас в теме
(13) Потому что отсутствует понятие Представление для непонятных данных типа "ссылка на строку таблицы". Наверное, ты сам должен решить как показывать непонятные данные, и обрабатывать это при получении данных в таблицу, или еще как...
16. Fox_65 1 30.07.24 17:16 Сейчас в теме
(14) Спасибо. Решение как обойти ограничения платформы с минимальным кодированием нашлось. Больше флудить не будем
4. user1880116 30.07.24 07:48 Сейчас в теме
(1)
в обычном приложении
То же самое:
Прикрепленные файлы:
3. user2033930 30.07.24 07:46 Сейчас в теме
ЧЯДНТ?
Прикрепленные файлы:
5. soft_wind 30.07.24 10:54 Сейчас в теме
приходится преобразовывать во что-то подходящее,
у меня такой код работает (фрагмент)
	тзРезультат = НайтиПоСсылкам(МассивСсылок);
	
	тзРезультат.Колонки.Добавить("ДанныеСтрока");
	тзРезультат.Колонки.Добавить("ТипСтрока");
	
	лкДопМассив = Новый Массив; //иерархия объектов
	
    Для каждого лкСтр Из тзРезультат Цикл
		//лкСтр.Данные
		лкМета 			= лкСтр.Метаданные;
		лкМетаТип 		= лкМета.ПолноеИмя();
		лкСтр.ТипСтрока = лкМетаТип;
		
		//по наличию метода: УникальныйИдентификатор, определяем что это Ссылка
		Попытка
			лкГУИД = лкСтр.Данные.УникальныйИдентификатор();
			лкЭтоСсылка = Истина;
		Исключение
			лкЭтоСсылка = Ложь;
		КонецПопытки;
		
		Если лкЭтоСсылка Тогда
			лкСтр.ДанныеСтрока	= Строка(лкСтр.Данные); //представление данных
		Иначе
			лкСтр.ДанныеСтрока	= лкМетаТип; //представление данных
		КонецЕсли;
	
	КонецЦикла; 
	
	//тзРезультат.Колонки.Удалить("Данные");
	тзРезультат.Колонки.Удалить("Метаданные");
	Возврат Новый ХранилищеЗначения(тзРезультат);
	
Показать
17. Fox_65 1 30.07.24 17:55 Сейчас в теме
(5) Код интересный. И приводит результат к таблице годной для заполнения дерева значений. Лучше чем таскать в колонке метаданные.Спасибо обязательно воспользуюсь.
11. SlavaKron 30.07.24 15:09 Сейчас в теме
Да, если нужно только выводить значения без редактирования, то достаточно:
ДеревоСсылок.Колонки.Добавить("Ссылки");
ЭлементыФормы.ДеревоСсылок.Колонки.Ссылки.Данные = "Ссылки";
Предварительно нужно добавить колонку "Ссылки" без привязки к данным (очистить свойство колонки "Данные").
15. Fox_65 1 30.07.24 17:03 Сейчас в теме
(11) Отличное решение. Добавил таким образом 2 колонки и теперь вся таблица из НайтиПоСсылкам доступна. Спасибо.
18. Fox_65 1 30.07.24 18:16 Сейчас в теме
Спасибо всем огромное!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот