По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Можно так написать
ЭлементОтбораКомпоновкиДанных = ДинамическийСписок.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКомпоновкиДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИмяПоля");
ЭлементОтбораКомпоновкиДанных.ВидСравнения = ВидСравнения;
ЭлементОтбораКомпоновкиДанных.ПравоеЗначение = ВашеЗначение;
ЭлементОтбораКомпоновкиДанных.Использование = Использование;
(9)
Переменная не определена (ОбщегоНазначенияКлиентСервер)
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Для Каждого Элемент Из ПараметрыВыполненияКоманды.Источник.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
Если Элемент.ТекущийЭлемент = Неопределено тогда
Возврат;
КонецЕсли;
ИмяПоля = Элемент.ТекущийЭлемент.Имя;
УстановитьОтборНаКлиенте(ПараметрыВыполненияКоманды.Источник[Элемент.Имя], ИмяПоля, Элемент.ТекущиеДанные[Элемент.ТекущийЭлемент.Имя]);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура УстановитьОтборНаКлиенте(Список, ИмяПоля, ЗначениеПоля)
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, ИмяПоля, ЗначениеПоля, ВидСравненияКомпоновкиДанных.Равно, "ОборПоНоменклатуре", Истина);
КонецПроцедуры
ПоказатьПеременная не определена (ОбщегоНазначенияКлиентСервер)
(18)
{Обработка.УправлениеЗаказамиНаПроизводство.Форма.ФормаОтчета.Форма(2502)}: Поле объекта не обнаружено (Отбор)
ЭлементОтбораКомпоновкиДанных = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Что я не так делаю?
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Для Каждого Элемент Из ПараметрыВыполненияКоманды.Источник.Элементы Цикл
Если ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
Если Элемент.ТекущийЭлемент = Неопределено тогда
Возврат;
КонецЕсли;
ИмяПоля = Элемент.ТекущийЭлемент.Имя;
УстановитьОтборНаКлиенте(ПараметрыВыполненияКоманды.Источник[Элемент.Имя], ИмяПоля, Элемент.ТекущиеДанные[Элемент.ТекущийЭлемент.Имя]);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура УстановитьОтборНаКлиенте(Список, ИмяПоля, ЗначениеПоля)
ЭлементОтбораКомпоновкиДанных = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКомпоновкиДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИмяПоля");
ЭлементОтбораКомпоновкиДанных.ВидСравнения = ВидСравнения;
ЭлементОтбораКомпоновкиДанных.ПравоеЗначение = ЗначениеПоля;
ЭлементОтбораКомпоновкиДанных.Использование = Истина;
КонецПроцедуры
Показать{Обработка.УправлениеЗаказамиНаПроизводство.Форма.ФормаОтчета.Форма(2502)}: Поле объекта не обнаружено (Отбор)
ЭлементОтбораКомпоновкиДанных = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Что я не так делаю?
(27)Процедура УстановитьОтборНаКлиенте(Список, ИмяПоля, ЗначениеПоля)
текдан= ЭлементыФормы.ДеревоЗаказы.ТекущиеДанные;
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДеревоЗаказы);
НовыйОтбор = ПостроительЗапроса.Отбор.Добавить("Состав");
НовыйОтбор.Использование = Истина;
НовыйОтбор.ВидСравнения = ВидСравнения.Содержит;
НовыйОтбор.Значение =текдан.Состав;
ПостроительЗапроса.Выполнить();
ДеревоЗаказы=ПостроительЗапроса.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
КонецПроцедуры
Вот так получается,но выводится пустое дерево
текдан= ЭлементыФормы.ДеревоЗаказы.ТекущиеДанные;
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДеревоЗаказы);
НовыйОтбор = ПостроительЗапроса.Отбор.Добавить("Состав");
НовыйОтбор.Использование = Истина;
НовыйОтбор.ВидСравнения = ВидСравнения.Содержит;
НовыйОтбор.Значение =текдан.Состав;
ПостроительЗапроса.Выполнить();
ДеревоЗаказы=ПостроительЗапроса.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
КонецПроцедуры
Вот так получается,но выводится пустое дерево
(23) Смотрите если у вас список - это динамический список то воспользуйтесь вот этим кодом
Если же у вас список - это ДокументСписок тогда нужно по написать
При по тому реквизиту которому делаете отбор он должен быть реквизитом документа!
ЭлементОтбораКомпоновкиДанных = ДинамическийСписок.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораКомпоновкиДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИмяПоля");
ЭлементОтбораКомпоновкиДанных.ВидСравнения = ВидСравнения;
ЭлементОтбораКомпоновкиДанных.ПравоеЗначение = ВашеЗначение;
ЭлементОтбораКомпоновкиДанных.Использование = Использование;
Если же у вас список - это ДокументСписок тогда нужно по написать
ЭлементОтбора = ДокументСписок.Отбор["ИмяВашегоРеквизитаПоКоторомуНужноОтобрать"];
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
ЭлементОтбора.Значение = ИмяРеквизитаВКоторомХранитьсяЗначение;
При по тому реквизиту которому делаете отбор он должен быть реквизитом документа!
(24)У меня дерево значений
Пытаюсь вот так
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДеревоЗаказы);
НовыйОтбор = ПостроительЗапроса.Отбор.Добавить("Состав");
НовыйОтбор.Использование = Истина;
НовыйОтбор.ВидСравнения = ВидСравнения.Содержит;
НовыйОтбор.Значение = "шкаф";
ПостроительЗапроса.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией)
Пытаюсь вот так
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДеревоЗаказы);
НовыйОтбор = ПостроительЗапроса.Отбор.Добавить("Состав");
НовыйОтбор.Использование = Истина;
НовыйОтбор.ВидСравнения = ВидСравнения.Содержит;
НовыйОтбор.Значение = "шкаф";
ПостроительЗапроса.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией)
Прикрепленные файлы:
(36) Вот я могу ошибаться, но на сколько я знаю в источнике данных у построителя может быть только таблица значений. А если все таки может быть дерево значений, то скорее всего там будут браться строки только самого первого уровня. Попробуйте сперва преобразовать дерево значений в таблицу значений и все у вас получиться.
(37) дополнию что истоником данных может быть ТаблицаЗначений; РезультатЗапроса; ОбластьЯчеекТабличногоДокумента; Табличная часть; РегистрНакопленияНаборЗаписей.<Имя регистра накопления>; РегистрСведенийНаборЗаписей.<Имя регистра сведений>; РегистрБухгалтерииНаборЗаписей.<Имя регистра бухгалтерии>; РегистрРасчетаНаборЗаписей.<Имя регистра расчета>. Нужно преобразование в таблицу значений
(38)Процедура УстановитьОтборНаКлиенте(Список, ИмяПоля, ЗначениеПоля)
текдан= ЭлементыФормы.ДеревоЗаказы.ТекущиеДанные;
//ПостроительЗапроса = Новый ПостроительЗапроса;
//ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДеревоЗаказы);
//НовыйОтбор = ПостроительЗапроса.Отбор.Добавить("Состав");
//НовыйОтбор.Использование = Истина;
//НовыйОтбор.ВидСравнения = ВидСравнения.Содержит;
//НовыйОтбор.Значение =текдан.Состав;
//ПостроительЗапроса.Выполнить();
//ДеревоЗаказы=ПостроительЗапроса.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Отбор = Новый Структура("Состав", текдан.Состав);
МассивСтрокДерева = ДеревоЗаказы.Строки.НайтиСтроки(Отбор, Истина);
ДеревоЗаказы.Строки.Очистить();
Для Каждого СтрокаДерева Из МассивСтрокДерева Цикл
УзелДерева=ДеревоЗаказы.Строки.Добавить();
УзелДерева.Состав=ДеревоЗаказы.Состав;
КонецЦикла
КонецПроцедуры
так ругается на состав.
Уже не знаю, что делать
текдан= ЭлементыФормы.ДеревоЗаказы.ТекущиеДанные;
//ПостроительЗапроса = Новый ПостроительЗапроса;
//ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ДеревоЗаказы);
//НовыйОтбор = ПостроительЗапроса.Отбор.Добавить("Состав");
//НовыйОтбор.Использование = Истина;
//НовыйОтбор.ВидСравнения = ВидСравнения.Содержит;
//НовыйОтбор.Значение =текдан.Состав;
//ПостроительЗапроса.Выполнить();
//ДеревоЗаказы=ПостроительЗапроса.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Отбор = Новый Структура("Состав", текдан.Состав);
МассивСтрокДерева = ДеревоЗаказы.Строки.НайтиСтроки(Отбор, Истина);
ДеревоЗаказы.Строки.Очистить();
Для Каждого СтрокаДерева Из МассивСтрокДерева Цикл
УзелДерева=ДеревоЗаказы.Строки.Добавить();
УзелДерева.Состав=ДеревоЗаказы.Состав;
КонецЦикла
КонецПроцедуры
так ругается на состав.
Уже не знаю, что делать
А поскольку у вас дерево значений попробуйте вот так.
В результате у вас получиться массив строк дерева значений с найденой номенклатурой.
Даллее обходите массив и создаете новое дерево значений
Отбор = Новый Структура("Номенклатура", РеквизитНоменклатура);
МассивСтрокДерева = Дерево.Строки.НайтиСтроки(Отбор, Истина);
В результате у вас получиться массив строк дерева значений с найденой номенклатурой.
Даллее обходите массив и создаете новое дерево значений
Просто не важно как хоть запросом, хоть отбором вы в результате получитете какой то результат. Но далее вам этот результат нужно представить пользователю. Следовательно вы должны очистить текущее дерево и добавить в него новые значения из вашего результат запроса или отбора.
При очистки отбора вам нужно вернуть дерево значений в исходное состояние.
При очистки отбора вам нужно вернуть дерево значений в исходное состояние.
Можно как то так написать только:
Отбор = Новый Структура("Номенклатура", РеквизитНоменклатура);
МассивСтрокДерева = Дерево.Строки.НайтиСтроки(Отбор, Истина);
Дерево.Строки.Очистить();
Для Каждого СтрокаДерева Из МассивСтрокДерева Цикл
УзелДерева = Дерево.Строки.Добавить();
/// .......... далее заполняете реквизиты
Конеццикла
Отбор = Новый Структура("Номенклатура", РеквизитНоменклатура);
МассивСтрокДерева = Дерево.Строки.НайтиСтроки(Отбор, Истина);
Дерево.Строки.Очистить();
Для Каждого СтрокаДерева Из МассивСтрокДерева Цикл
УзелДерева = Дерево.Строки.Добавить();
/// .......... далее заполняете реквизиты
Конеццикла
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот