Отбор в реквизите с типом ДеревоЗначений

1. A1nur1ch 11.01.24 11:10 Сейчас в теме
Надо в реквизите с типом ДеревоЗначений убрать лишние строки. Через запрос получаю Номенклатуру и Характеристику, нужно убрать строки, где нету номенклатуры с запроса. Как это можно сделать ? Долго копал, всё никак не могу дойти до истины.
1С 8.3.22
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YozZzhik 11.01.24 12:29 Сейчас в теме
1. Описываешь новое дерево значений, которое будет принимать в себя нужные строки
2. Получаешь объект дерева с формы (РеквизитФормыВЗначение)
2. Формируешь запрос
3. По результатам запроса в цикле ищешь строки дерева, которые удовлетворяют условию по номенклатуре и характеристике (ДеревоСФормы.Строки.НайтиСтроки)
4. Помещаешь эти строки в новое дерево
5. Помещаешь данные нового дерева в реквизит формы (ЗначениеВРеквизитФормы)

Наверное, на вскидку, как-то так

P.S. Предполагаю, что в каких-то строках может потеряться родитель, на счет этого как-то нужно подумать
3. A1nur1ch 11.01.24 12:57 Сейчас в теме
(2) Метода найти нету, толи выпилили в моей версии или что. Дерево.Строки() пишешь, но выдает ошибку, что нету такой функции у дерева
4. YozZzhik 11.01.24 13:09 Сейчас в теме
(3) Во-первых, Дерево.Строки, во-вторых, нужно получить объектную сущность, а не данные формы, чтобы работать со строками
5. A1nur1ch 11.01.24 13:24 Сейчас в теме
(4) Точно, там без скобок, извиняюсь. Про объектную сущность, вы про Дерево.ПолучитьЭлементы() ? Или как можно получить объектную сущность ?
6. YozZzhik 11.01.24 13:27 Сейчас в теме
(5) Я же целый список действий даже написал в первом сообщении) РеквизитФормыВЗначение("ИмяВашегоДереваКакРеквизитФормы")
7. A1nur1ch 11.01.24 13:30 Сейчас в теме
(6) А, вы про это, так я его и пишу. Называется он Товары. Пишу Строки = Товары.Строки;
Но нифига, выдает ошибку
8. A1nur1ch 11.01.24 13:36 Сейчас в теме
(7) Поле объекта не обнаружено (Строки)
{ Обработка.СостояниеОбеспечения.Форма.Форма.Форма(47)}:Товар = Товары.Строки;
{Обработка.СостояниеОбеспечения.Форма.Форма.Форма(26)}:ОтборПоЗаказамПоставщикаИстина();
{Обработка.СостояниеОбеспечения.Форма.Форма.Форма(39)}: ВыводДанных();
{Обработка.СостояниеОбеспечения.Форма.Форма.Форма(385)}: ЗаполнитьКолонкиСостояниеИРекомендацииТаблицыТовары();
{Обработка.СостояниеОбеспечения.Форма.Форма.Форма(235)}: ОбновитьСостояниеНаСервере();
Вот ошибка
9. YozZzhik 11.01.24 13:44 Сейчас в теме
ДеревоСтарое = РеквизитФормыВЗначение("Товары");

....

Пока Выборка.Следующий Цикл
Строки = ДеревоСтарое.Строки.НайтиСтроки(Новый Структура("Номенклатура,Характеристика",
Выборка.Номенклатура,
Выборка.Характеристика);
КонецЦикла;

Дальше сам)
10. A1nur1ch 11.01.24 13:46 Сейчас в теме
(9) А, ага, извиняюсь за тупость Ю_Ю
Чет не подумал
РеквизитФормыВЗначение("Товары");

Тенкью, дальше да, разберусь, спасибо большое !!!
11. A1nur1ch 11.01.24 16:46 Сейчас в теме
(9) А как корректно добавлять данные в дерево ?
Чет я встрял опять...
Или может можно как-то удалить используя эту строку данные со старого дерева ? Чтобы оставить только нужные данные. А потом, когда отбор не будет нужен, то просто заново вывести всё
Оставьте свое сообщение

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