Программное изменение динамического списка

1. user901542 22.07.20 09:18 Сейчас в теме
День добрый! Имеется расширения, все изменения только через него
Есть журнал документов, формируется на форме динамическим списком.
Программно меняю текст запроса, чтобы выводить данные по документу из регистра сведений (булево).
Так как вывести нужно в доп. колонку, пытаюсь добавить колонку на форму, НО ничего не выходит так как при указании ПутьКДанным = "Список.НужныйРеквизит", он этот путь не находит, и выдает ошибку из серии "Неверное значение". Если же указываю допустим какой-то реквизит, который уже есть на форме, например "Список.ПометкаНаУдаление", то ошибок не возникает, так как в форме которая в конфигурации "ПометкаНаУдаление" добавлена запросом и её сразу видно на форме в конфигураторе.
Как такое можно победить, заставить видеть Поле из запроса, который был переопределен программно? Вариант с изменением текста запроса на форме в конфигураторе не подходит
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. platonov.e 159 22.07.20 09:37 Сейчас в теме
В дин. списке добавьте пустое строковое поле, и назовите его так, как поле называется в запросе
4. user901542 22.07.20 09:52 Сейчас в теме
(2) Поля автоматически заполняются из текста запроса (АвтоЗаполнениеДоступныхПолей = Истина), в тексте запроса, нужное поле получаю

Но здесь "Список.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора" это поле не появляется, может как-то можно программно "обновить" динамический список с новым текстом запроса?
11. platonov.e 159 22.07.20 10:44 Сейчас в теме
(4) у вас зарания определено какие поля будут?
3. platonov.e 159 22.07.20 09:39 Сейчас в теме
Типа так должен выглядеть запрос в дин. списке
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ВЫРАЗИТЬ("" КАК СТРОКА(25)) КАК Организация,
	ДАТАВРЕМЯ(1, 1, 1, 1, 1, 1) КАК Дата
5. DanDy 55 22.07.20 10:13 Сейчас в теме
Зачем текст запроса переопределять программно?
Можно же в расширении прекрасно зайти в запрос динамического списка и там его изменить его, т.е. в свойствах списка поставить галку "произвольный запрос" и далее поправить его как вам нужно. И колонка будет в составе списка, никаких проблем.
10. TimurD 6 22.07.20 10:43 Сейчас в теме
(5) А потом мучайся после обновление релиза
12. DanDy 55 22.07.20 12:12 Сейчас в теме
(10) С чем мучаться? Это всё в расширении же делается. Ну обновится релиз, дальше что?
С программной подменой текста запроса в дин. списком ещё больше будет проблем
6. sashocq 193 22.07.20 10:14 Сейчас в теме
Может, программно так же добавить и реквизит формы, подчиненный списку?
8. user901542 22.07.20 10:33 Сейчас в теме
(6)
Пробовал следующем образом, ошибка Недопустимый путь к реквизиту. Путь: "Список"


ДобавляемыеРеквизиты = Новый Массив;
	ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("НовоеПоле", Новый ОписаниеТипов("Булево"), "Список", "Новое поле"));
	
	ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
9. TimurD 6 22.07.20 10:36 Сейчас в теме
Не давно сталкивался с похожей проблемой... Конфы под рукой нету, чтобы точно сказать, как я ее решил. Попробуй выполнить следующее:
1. После изменение запроса демонического списка элемент не добавляй. Запусти отладку. В списке, в меню Еще нажми "Установить стандартные настройки".
2. Добавь элемент (колонку) на форму и запусти отладку. Новая колонка должна появиться.
Суть сего метода, что демонический список запоминает все настройки (в том числе колонки) в пользовательских настройках. И когда мы пытаемся программно добавить, получаются такие ошибки. Это даже во всех ReadMe.txt пишут в поставках типовых, типа особенность работы.
Минус этого метода - сбиваются пользовательские отборы и пр.
13. DanDy 55 22.07.20 12:13 Сейчас в теме
(9) Кэш почистил и пока колонки... ))) Шикарный способ)))
14. DanDy 55 22.07.20 12:14 Сейчас в теме
(9)ну или настройки юзера потёр... И так при каждом добавлении колонки.. Сняли 1 геморой, накинули 3
15. SlavaKron 22.07.20 15:42 Сейчас в теме
Проверил на УТ, всё должно работать. Скорее всего имя поля в запросе не такое как указываете в пути к данным.
Прикрепленные файлы:
xa1ter; pusal; SvetaBr; keller; sr5; Night_Trap; +6 Ответить
16. SanchoD 312 30.07.20 10:09 Сейчас в теме
Я так делаю.

Добавляю программно таблицу на форму, связанную с динамическим списком:

НовыйЭлемент = Элементы.Добавить("ИмяТаблицыФормы", Тип("ТаблицаФормы"),ГруппаСтраницаТЧ);
НовыйЭлемент.ПутьКДанным = "ИмяДинамическогоСписка";
НовыйЭлемент.УстановитьДействие("ПриАктивизацииЯчейки", "ЭлементСписокТоваровПриАктивизацииЯчейкиРБ");
НовыйЭлемент.УстановитьДействие("Выбор", "ЭлементСписокТЧВыбор");

Добавляю колонку в таблицу формы с нужным реквизитом, получаемым в динамическом списке:

НоваяКолонкаТаблицы = Элементы.Добавить("ИмяКолонкиВТаблицеФормы", Тип("ПолеФормы"), НовыйЭлемент);
НоваяКолонкаТаблицы.ПутьКДанным = "ИмяДинамическогоСписка"+"."+"ИмяПоляВЗапросе";
17. bayce 47 31.07.20 21:22 Сейчас в теме
Попробуйте и регистр участвующий в запросе тоже в расширение взять.
18. websamson 307 27.01.23 07:20 Сейчас в теме
Наверное, не совсем корректный ответ на вопрос ТС, но все же:
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	
	Для Каждого ТекСтрока Из Строки Цикл
		ТекСтрока.Значение.Данные.ИМЯ_КОЛОНКИ = НОВОЕ_ЗНАЧЕНИЕ;
	КонецЦикла;
	
КонецПроцедуры // СписокПриПолученииДанныхНаСервере()
Показать
19. avv_vlad 24.03.23 12:40 Сейчас в теме
Была необходимость сделал как подсказал (15)
20. rosenword 03.04.23 21:14 Сейчас в теме
Сталкивался с подобной задачей. Решил правкой запроса формирования списка на форме. Программно запрос не трогал от слова "совсем".
21. SP17081992 5 04.04.23 08:27 Сейчас в теме
(1) а в каком событии в расширении вы меняете текст запроса дин. списка? В типовых конфигов в большинством случае текст запроса изменяется программно. Можете в событии ПриСозданиеНаСервереПосле посмотреть есть ли ваши изменения в тексте запроса.
Оставьте свое сообщение

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