Имя: Пароль:
1C
1С v8
Программное изменение динамического списка
0 Wefast
 
04.08.23
12:04
УФ.

На форме есть динамический список.
Хочу добавить в него 1 поле и вывести его на форму.

Пишу:

Процедура ПриСозданииНасервере(отказ, стандартнаяобработка)

МойДинСписок.ТекстЗапроса = МойНовыйЗапрос();

НовКолонка = Элементы.Вставить("НовоеПоле",Тип("ПолеФормы"), Элементы.ДинСписок, Элементы.СуществующееПолеНаФорме)
НовКолонка.ПутьКДанным = "МойДинСписок.НовоеПоле";


КонецПроцедуры


На строке НовКолонка.ПутьКДанным = "МойДинСписок.НовоеПоле"; падает с ошибкой "Недопустимое значение"
1 Garykom
 
04.08.23
12:24
>НовКолонка.ПутьКДанным = "МойДинСписок.НовоеПоле";


уверен что "МойДинСписок"?
2 Garykom
 
04.08.23
12:27
3 Gucci76
 
04.08.23
13:06
А текст запроса разве не надо изменять?
В ЗУП есть доработка динсписка для справочника сотрудников. Посмотрите как там реализовано.
4 Garykom
 
04.08.23
13:13
(3) текст запроса он изменил
но накой то хрен написал
НовКолонка.ПутьКДанным = "МойДинСписок.НовоеПоле";
вместо
НовКолонка.ПутьКДанным = "Список.НовоеПоле";


мог бы сам догадаться по аналоги и с программным добавлением элементов формы для объектов, там "Объект.НовоеПоле"
5 Wefast
 
04.08.23
13:38
Да, пример то писал от руки, поэтому опечатки могут быть.

Не помогло по ссылке

В итоге такой код:


&НаСервере
Процедура ZUP_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
    
    Список.ТекстЗапроса = НовыйТекстЗапросаДинамическогоСпискаСписок();
    
    Список.КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.Полное);
      
    НовЭлемент = ЭтаФорма.Элементы.Вставить("Премия", Тип("ПолеФормы"), Элементы.Список, Элементы.СписокФОТ);
    НовЭлемент.Вид         = ВидПоляФормы.ПолеНадписи;
    НовЭлемент.ПутьКДанным    = "Список.Премия";    
    НовЭлемент.Заголовок    = "Премия";
    
КонецПроцедуры

https://forum.infostart.ru/forum9/topic187815/?ysclid=lkwg5u3c5n382289636 - тут пишут, что у ДинСписка должна стоять галка "Использовать всегда".
Попробую, но теряется тогда весь смысл, я не хотел править что либо на форме.

В отладке в Список.КомпоновщикНастроек.Поля - нет моего поля. Думаю может в этом еще дело.
6 Гипервизор
 
04.08.23
13:41
(3) Ну если надо , например, вывести реквизит ссылки, которая и так есть в запросе ДС, так зачем править запрос? ПутьКДанным = "Список.Ссылка.Реквизит" и готово.
7 Wefast
 
04.08.23
13:43
(6) нет, добавлено левое соединение с другим источником и вывод поля из этого источника.
8 Garykom
 
04.08.23
13:57
9 Wefast
 
04.08.23
14:26
В общем если поставить у дин списка галочку "Автозаполнение доступных полей" то работает такой вариант:

    Список.ТекстЗапроса = НовыйТекстЗапросаДинамическогоСпискаСписок();    
  
    НовЭлемент = ЭтаФорма.Элементы.Вставить("Премия", Тип("ПолеФормы"), Элементы.Список, Элементы.СписокФОТ);
    НовЭлемент.Вид         = ВидПоляФормы.ПолеНадписи;


Надо будет поискать как это обойти
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший