Программное изменение динамического списка
День добрый! Имеется расширения, все изменения только через него
Есть журнал документов, формируется на форме динамическим списком.
Программно меняю текст запроса, чтобы выводить данные по документу из регистра сведений (булево).
Так как вывести нужно в доп. колонку, пытаюсь добавить колонку на форму, НО ничего не выходит так как при указании ПутьКДанным = "Список.НужныйРеквизит", он этот путь не находит, и выдает ошибку из серии "Неверное значение". Если же указываю допустим какой-то реквизит, который уже есть на форме, например "Список.ПометкаНаУдаление", то ошибок не возникает, так как в форме которая в конфигурации "ПометкаНаУдаление" добавлена запросом и её сразу видно на форме в конфигураторе.
Как такое можно победить, заставить видеть Поле из запроса, который был переопределен программно? Вариант с изменением текста запроса на форме в конфигураторе не подходит
Есть журнал документов, формируется на форме динамическим списком.
Программно меняю текст запроса, чтобы выводить данные по документу из регистра сведений (булево).
Так как вывести нужно в доп. колонку, пытаюсь добавить колонку на форму, НО ничего не выходит так как при указании ПутьКДанным = "Список.НужныйРеквизит", он этот путь не находит, и выдает ошибку из серии "Неверное значение". Если же указываю допустим какой-то реквизит, который уже есть на форме, например "Список.ПометкаНаУдаление", то ошибок не возникает, так как в форме которая в конфигурации "ПометкаНаУдаление" добавлена запросом и её сразу видно на форме в конфигураторе.
Как такое можно победить, заставить видеть Поле из запроса, который был переопределен программно? Вариант с изменением текста запроса на форме в конфигураторе не подходит
По теме из базы знаний
- Динамический отбор динамического списка. Управляемая форма 1С: 8.3
- Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример
- Полезные процедуры по работе с СКД и динамическими списками (часть 3)
- Перечень множественных значений в ячейке динамического списка. Как стало и как было
- Работа с произвольным набором основных и дополнительных реквизитов справочника в одном динамическом списке
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Поля автоматически заполняются из текста запроса (АвтоЗаполнениеДоступныхПолей = Истина), в тексте запроса, нужное поле получаю
Но здесь "Список.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора" это поле не появляется, может как-то можно программно "обновить" динамический список с новым текстом запроса?
Но здесь "Список.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора" это поле не появляется, может как-то можно программно "обновить" динамический список с новым текстом запроса?
Зачем текст запроса переопределять программно?
Можно же в расширении прекрасно зайти в запрос динамического списка и там его изменить его, т.е. в свойствах списка поставить галку "произвольный запрос" и далее поправить его как вам нужно. И колонка будет в составе списка, никаких проблем.
Можно же в расширении прекрасно зайти в запрос динамического списка и там его изменить его, т.е. в свойствах списка поставить галку "произвольный запрос" и далее поправить его как вам нужно. И колонка будет в составе списка, никаких проблем.
(6)
Пробовал следующем образом, ошибка Недопустимый путь к реквизиту. Путь: "Список"
Пробовал следующем образом, ошибка Недопустимый путь к реквизиту. Путь: "Список"
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("НовоеПоле", Новый ОписаниеТипов("Булево"), "Список", "Новое поле"));
ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
Не давно сталкивался с похожей проблемой... Конфы под рукой нету, чтобы точно сказать, как я ее решил. Попробуй выполнить следующее:
1. После изменение запроса демонического списка элемент не добавляй. Запусти отладку. В списке, в меню Еще нажми "Установить стандартные настройки".
2. Добавь элемент (колонку) на форму и запусти отладку. Новая колонка должна появиться.
Суть сего метода, что демонический список запоминает все настройки (в том числе колонки) в пользовательских настройках. И когда мы пытаемся программно добавить, получаются такие ошибки. Это даже во всех ReadMe.txt пишут в поставках типовых, типа особенность работы.
Минус этого метода - сбиваются пользовательские отборы и пр.
1. После изменение запроса демонического списка элемент не добавляй. Запусти отладку. В списке, в меню Еще нажми "Установить стандартные настройки".
2. Добавь элемент (колонку) на форму и запусти отладку. Новая колонка должна появиться.
Суть сего метода, что демонический список запоминает все настройки (в том числе колонки) в пользовательских настройках. И когда мы пытаемся программно добавить, получаются такие ошибки. Это даже во всех ReadMe.txt пишут в поставках типовых, типа особенность работы.
Минус этого метода - сбиваются пользовательские отборы и пр.
Я так делаю.
Добавляю программно таблицу на форму, связанную с динамическим списком:
НовыйЭлемент = Элементы.Добавить("ИмяТаблицыФормы", Тип("ТаблицаФормы"),ГруппаСтраницаТЧ);
НовыйЭлемент.ПутьКДанным = "ИмяДинамическогоСписка";
НовыйЭлемент.УстановитьДействие("ПриАктивизацииЯчейки", "ЭлементСписокТоваровПриАктивизацииЯчейкиРБ");
НовыйЭлемент.УстановитьДействие("Выбор", "ЭлементСписокТЧВыбор");
Добавляю колонку в таблицу формы с нужным реквизитом, получаемым в динамическом списке:
НоваяКолонкаТаблицы = Элементы.Добавить("ИмяКолонкиВТаблицеФормы", Тип("ПолеФормы"), НовыйЭлемент);
НоваяКолонкаТаблицы.ПутьКДанным = "ИмяДинамическогоСписка"+"."+"ИмяПоляВЗапросе";
Добавляю программно таблицу на форму, связанную с динамическим списком:
НовыйЭлемент = Элементы.Добавить("ИмяТаблицыФормы", Тип("ТаблицаФормы"),ГруппаСтраницаТЧ);
НовыйЭлемент.ПутьКДанным = "ИмяДинамическогоСписка";
НовыйЭлемент.УстановитьДействие("ПриАктивизацииЯчейки", "ЭлементСписокТоваровПриАктивизацииЯчейкиРБ");
НовыйЭлемент.УстановитьДействие("Выбор", "ЭлементСписокТЧВыбор");
Добавляю колонку в таблицу формы с нужным реквизитом, получаемым в динамическом списке:
НоваяКолонкаТаблицы = Элементы.Добавить("ИмяКолонкиВТаблицеФормы", Тип("ПолеФормы"), НовыйЭлемент);
НоваяКолонкаТаблицы.ПутьКДанным = "ИмяДинамическогоСписка"+"."+"ИмяПоляВЗапросе";
Наверное, не совсем корректный ответ на вопрос ТС, но все же:
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Для Каждого ТекСтрока Из Строки Цикл
ТекСтрока.Значение.Данные.ИМЯ_КОЛОНКИ = НОВОЕ_ЗНАЧЕНИЕ;
КонецЦикла;
КонецПроцедуры // СписокПриПолученииДанныхНаСервере()
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот