Программная работа с пользовательскими реквизитами

1. Enigma 309 21.01.19 08:12 Сейчас в теме
Приветствую коллеги,

На управляемых формах есть возможность добавить пользовательский элемент к форме списка (Еще - Изменить форму - встаем на "Ссылка" (или другой реквизит ссылочного типа) - Добавить - выбираем реквизит). Возможность очень удобная, но хотелсь бы её сделать еще более удобной для конечного пользователя и дать ему возможность нажатием одной кнопки вывести сразу несколько пользовательских элементов себе на форму.

Проблема в том, что я не знаю где эти элементы хранятся. В коллекции значений Элементы их не существует. Я смог найти эти элементы через ЭтаФорма.Список.ТекущийЭлемент (если предварительно выбрать этот элемент в Предприятии), но при попытке понять что это (с помощью табло) платформа 8.3.13.1644 вылетает (даже не пытаясь записать дамп).

Есть ли у кого опыт программной работы с этими пользовательскими элементами?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. lefthander 21.01.19 08:45 Сейчас в теме
(1)Это системная функция - она зашита в платформу. Для использования вашей задумки необходимо писать свой интерфейс. Главное не очень понятно зачем? Ведь настройка сохраняется, достаточно настроить колонки один раз они будут вызываться всегда.
markw; t.v.s.; +2 Ответить
7. Enigma 309 21.01.19 09:29 Сейчас в теме
(4) Не хочется бегать по пользователям и им все перенастраивать. Также не хочется изменять запрос динсписка и потом париться с обновлениями.

(5) Попробую так сделать.
8. EVKash 14 21.01.19 09:47 Сейчас в теме
(7) Как вариант запрос тоже можно модифицировать программно, но элементы все равно создавать, хоть они и появятся в выборе для пользователей.
		СтрокаДляПоиска = 	"
							|ИЗ
							|	Справочник.Партнеры КАК СправочникПартнеры";
		СтрокаДляЗамены =	",
							|	СправочникПартнеры.НужныйРеквизит1 КАК НужныйРеквизит1,
							|	СправочникПартнеры.НужныйРеквизит2 КАК НужныйРеквизит2
							|ИЗ
							|	Справочник.Партнеры КАК СправочникПартнеры";
		Список.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, СтрокаДляПоиска, СтрокаДляЗамены);
Показать
9. lefthander 21.01.19 09:52 Сейчас в теме
(7)Расширения - это теперь наше все.
10. EVKash 14 21.01.19 10:13 Сейчас в теме
(9) Офтоп.
При сильном изменении конфы, расширения тоже ломаются.
Вероятность поломки можно сильно снизить, если создавать расширение в пустой конфигурации и все изменения делать программно в модуле формы.
11. lefthander 21.01.19 10:24 Сейчас в теме
(10)Странно, а примеры поломки описанные в интернете можно посмотреть.
Я понимаю, если у меня не ломается, это не значит что у всех не ломается, но не видел сообщений о массовой поломке расширений сильно измененных конф. Смысл расширения это снизить количество изменений в самой типовой конфе. В идеале вообще не трогать типовую и доработать функционал под свои нужды только с помощью расширения. Но если конфа уже дорабатывается, то с помощью расширения есть смысл изменения типового функционала перенести в расширение только для того что бы облегчить процесс обновления.
ЗЫ ИМХО ваше утверждение о поломках расширений сильно преувеличены, и да, кстати, не обязательно все делать на пустой конфе, программно менять объекты можно в высоко нагруженной и сильно заполненной конфе. Для подобных вещей кстати предназначены хранилища. Разрабатывается и тестируется с подключенным хранилищем, а затем доработки переносятся в рабочую базу.
12. EVKash 14 21.01.19 11:00 Сейчас в теме
(11) Я о том, что при изменении в обновленной конфе любого контролируемого в расширении реквизита, расширение не запустится. Пример обновление УТ 11.3 на 11.4
При этом, если расширение было создано в пустой конфигурации (не могу сейчас найти публикацию по теме), то там только режим совместимости надо было бы поправить. Смысл в том, что в пустой конфе создается объект, в нем нужная форма, и все изменения производятся программно в модуле формы. Влияние изменения других объектов, которые тащатся автоматом в классическое расширение, на такое расширение минимально.
13. lefthander 21.01.19 16:12 Сейчас в теме
(12)Так при изменении контролируемых реквизитов, их тоже надо менять в расширении. К сожалению 1С пока не умеет автоматом менять контролируемые реквизиты.
5. EVKash 14 21.01.19 08:51 Сейчас в теме
(1) Сам так не делал, но в принципе должно быть как-то так.
Создаем новый элемент - колонку списка и путькданным указываем "НазваниеДинСписка.Ссылка.КакойТоРеквизит"
6. lefthander 21.01.19 08:59 Сейчас в теме
(5)Не забыть проверить реквизит объекта ссылка, должен быть с признаком "использовать всегда".
А вообще достаточно сделать команду и вывести нужные колонки динамически переформировав табличную часть, да и не только, можно форму настроить как нужно, добавив или убрав любые реквизиты.
2. dhurricane 21.01.19 08:28 Сейчас в теме
Уточните, пожалуйста, Вы хотите по нажатию на некоторую кнопку вывести на форму списка несколько наперед известных колонок?
3. dhurricane 21.01.19 08:32 Сейчас в теме
Если же я правильно Вас понял, и Вы хотите доработать форму пользовательской настройки формы, открываемой по команде "Изменить форму...", то добраться у Вас до этой формы и изменить ее не получится. Только разработать свою форму и добавить для нее свою команду.
lefthander; +1 Ответить
Оставьте свое сообщение

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