Имя: Пароль:
1C
1С v8
Колонка УИД в Динамическом списке
0 1Сергей
 
26.03.19
15:30
Подскажите, можно ли и как?

Программно создаваемый ДС без запроса, данные из справочника. Что-то не получается у меня


&НаСервере
Процедура СоздатьТаблицуНаФорме()
    
    // Добавить реквизит "Динамический список".
    ТипыРеквизита = Новый Массив;
    ТипыРеквизита.Добавить(Тип("ДинамическийСписок"));

    ОписаниеТиповДляРеквизита = Новый ОписаниеТипов(ТипыРеквизита);

    НовыйРеквизит = Новый РеквизитФормы("ТаблицаДанных",    // имя
    ОписаниеТиповДляРеквизита,                                 // тип
    ,                                                        // путь
    "СписокТоваров",                                        // заголовок
    Истина);                                                // сохраняемые данные

    ДобавляемыеРеквизиты = Новый Массив;
    ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
    
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    
    //ЭтаФорма["ТаблицаДанных"].УстановитьДействие("ПриПолученииДанныхНаСервере", "ТаблицаДанныхПриПолученииДанныхНаСервере");
    
    // Задать текст запроса и другие свойства динамического списка.
    РеквизитСписок = ЭтаФорма["ТаблицаДанных"];
    //РеквизитСписок.ТекстЗапроса = "ВЫБРАТЬ Наименование, Код ИЗ Справочник.Товары";
    РеквизитСписок.ОсновнаяТаблица = "Справочник." + ИмяСправочника;
    
    // Добавить элемент формы и связать его с реквизитом.
    НовыйЭлемент = Элементы.Добавить("ЭлементТаблицаДанных", Тип("ТаблицаФормы"));
    НовыйЭлемент.ПутьКДанным = "ТаблицаДанных";
    НовыйЭлемент.УстановитьДействие("ПриПолученииДанныхНаСервере", "ТаблицаДанныхПриПолученииДанныхНаСервере");
    
    // Создать колонки и связать их с данными.
    НоваяКолонкаТаблицы = Элементы.Добавить("КолонкаУИД", Тип("ПолеФормы"), НовыйЭлемент);
    
    Мета = Метаданные.Справочники[ИмяСправочника];
    Для Каждого МетаРек Из Мета.СтандартныеРеквизиты Цикл
        НоваяКолонкаТаблицы = Элементы.Добавить("Колонка" + МетаРек.Имя, Тип("ПолеФормы"), НовыйЭлемент);
        НоваяКолонкаТаблицы.ПутьКДанным = "ТаблицаДанных." + МетаРек.Имя;
    КонецЦикла;
    Для Каждого МетаРек Из Мета.Реквизиты Цикл
        Если МетаРек.Тип.СодержитТип(Тип("ХранилищеЗначения")) Тогда
            Продолжить;
        КонецЕсли;
        НоваяКолонкаТаблицы = Элементы.Добавить("Колонка" + МетаРек.Имя, Тип("ПолеФормы"), НовыйЭлемент);
        НоваяКолонкаТаблицы.ПутьКДанным = "ТаблицаДанных." + МетаРек.Имя;
    КонецЦикла;
    
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ТаблицаДанныхПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
    Для Каждого СтрокаДинСписка Из Строки Цикл
        СтрокаДинСписка.Данные["КолонкаУИД"] = СтрокаДинСписка.Данные["Ссылка"].УникальныйИдентификатор();
    КонецЦикла;
КонецПроцедуры


{ВнешняяОбработка.ПросмотрОбъектов.Форма.Форма.Форма(101)}: Поле объекта не обнаружено (Данные)
        СтрокаДинСписка.Данные["КолонкаУИД"] = СтрокаДинСписка.Данные["Ссылка"].УникальныйИдентификатор();
1 sqr4
 
26.03.19
15:35
2 sqr4
 
26.03.19
15:37
хотя че это даст
3 1Сергей
 
26.03.19
15:38
(1) смотрел, мой вопрос там не затрагивается даже

Мне бы пример по событию ПриПолученииДанныхНаСервере
4 sqr4
 
26.03.19
15:43
СтрокаДинСписка.Значение.Данные["КолонкаУИД"] как я понимаю по отладке
5 Timon1405
 
26.03.19
15:45
судя по https://wonderland.v8.1c.ru/blog/obrabotka-i-oformlenie-dannykh-dinamicheskogo-spiska/
у вас нет строчки ПолучитьКлючи()
6 1Сергей
 
26.03.19
15:48
(5) это незачем. Есть строка:

Для Каждого СтрокаДинСписка Из Строки Цикл
7 1Сергей
 
26.03.19
15:49
Кажется, понял. Придётся всё-таки запрос писать
8 sqr4
 
26.03.19
15:50
(7) Для Каждого Строка из Строки Цикл
        Строка.Значение.Данные.Этажей = 100;    
    КонецЦикла;
    
У меня так работает
9 1Сергей
 
26.03.19
15:54
(8) это да, заметил, что "Значение" пропустил.

Но, у тебя же "Этажей" привязано к чему-то? К данным каким-то
10 sqr4
 
26.03.19
16:04
Да
11 1Сергей
 
26.03.19
16:25
Всё получилось, всем спасибо.

ПутьКДанным у колонки должен ссылаться на данные источника. Иначе колонка не создаётся
12 aleks_default
 
26.03.19
17:30
(0)А зачем извращения по программному созданию дин списка?
13 1Сергей
 
26.03.19
17:48
(12) универсальная смотрелка обьектов бд