Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 ноя 2024, 17:50

Как заполнить корректно ДеревоЗначений?

Автор fruitella, 27 апр 2023, 13:14

0 Пользователей и 1 гость просматривают эту тему.

antoneus

А поля Номенклатура и Артикул на форму выведены? Поле Наименование - пустое и поле ID - 0, что вы там хотите увидеть?

fruitella

antoneus, Да можно вытащить на самом деле только номенклатуру, внутри нее все данные. Просто тут для отображения в качестве реквизита используется дерево, вот я поэтому и начал спрашивать как с ней корректно взаимодействовать?


fruitella

В общем написал вот такой костыль, пока получаю ошибку о несоответствии типов на строке:
ЭтаФорма.РеквизитФормыВЗначение(ДеревоРезультатов, "ДеревоТоваров1");
 
Вопрос по данной строке при обращении к реквизиту. Такой способ будет только работать, если типы данных и названия колонок будет совпадать 100%?

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


antoneus

Да. Кстати, дерево можно заполнять и без этих реквизитформывзначение и обратно, через ПолучитьЭлементы().

fruitella

antoneus, Можно пример пожалуйста?
Короче, я переделал вот так, ошибок ни каких нет, но даже так товар не отображается в общем списке после добавления  :dfbsdfbsdf:

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


antoneus

Ну, например, так.

fruitella

antoneus, Спасибо, пример помог. Разобрался, сейчас вроде заработало.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск