Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 июл 2025, 15:33

Программное добавление в ДЗ

Автор sali, Вчера в 07:52

sali и 2 гостей просматривают эту тему.

sali

ВСЁ , ИЗВИНЯЮСЬ . НЕ ТАК ПОНЯЛ ВАШ КОД. ДО ЭТОГО С ДЕРЕВОМ НЕ РАБОТАЛ, САМ СЕБЯ ДЕРЕВОМ ОЩУЩАЮ

sali

а такой вопрос можно ли использовать один и тот же запрос но когда то обращаться к нему с переменной , а когда то нет??

опишу, есть запрос который выводит одни и те же данные. он пишется в двух процедурах , практически идентичен, просто в одном из случаи в него передается номенклатура ( потому что отбор идет). и вопрос складывается можно ли сделать процедуру с этим запросом и передавать/не передавать туда переменную??

sali

&Наклиенте
процедура приоткрытии()
    заполнитьдереводанными();
конецпроцедуры


&наклиенте
процедура  отборпоэлементамноменклатуры()
    заполнитьдереводанными(номенклатураотбора);
конецпроцедуры


&насервере
процедура заполнитьдереводанными(*переменная надо или нет???*)
запрос=.....
конецпроцедуры
по типу этого

antoneus

В запросе в секцию ГДЕ или параметры виртуальной таблицы

Выбор когда &ОтборПоНоменклатуре тогда <условие по номенклатуре> иначе истина конец

.....

Запрос.УстановитьПараметр("ОтборПоНоменклатуре", ЗначениеЗаполнено(Номенклатура));
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

sali

&НаКлиенте
Процедура ПоискПоНоменклатуреПриИзменении(Элемент)

Если Не ЗначениеЗаполнено(ПоискПоНоменклатуре) Тогда
Возврат;
КонецЕсли;

//ЗаполнитьСвойстваНоменклатуры(ПоискПоНоменклатуре);   
ЗаполнитьДеревоДанными(ПоискПоНоменклатуре);

// ДобавитьПозициюНоменклатуры(СтруктураПараметров);                                                                                                                             
ПоискПоНоменклатуре = Неопределено;

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

&НаСервере
Процедура ЗаполнитьДеревоДанными(Номенклатура = неопределено)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Склад КАК Склад,
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество
|ПОМЕСТИТЬ вт_остатки
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
| вт_остатки.Склад КАК Склад,
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
| вт_остатки.Количество КАК Количество
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ вт_остатки КАК вт_остатки
| ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = вт_остатки.Номенклатура
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование ПОДОБНО ""%розничная%""
| И ЦеныНоменклатурыСрезПоследних.Номенклатура.ПометкаУдаления = ЛОЖЬ
| И ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа = ЛОЖЬ
| И ВЫБОР
| КОГДА &ОтборПоНоменклатуре
| ТОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.Родитель В ИЕРАРХИИ (&ОтборПоНоменклатуре)
| КОГДА &ПоискПоНоменклатуре
| ТОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура = &ПоискПоНоменклатуре
| ИНАЧЕ ИСТИНА
| КОНЕЦ
|ИТОГИ ПО
| Номенклатура ИЕРАРХИЯ";   
Запрос.УстановитьПараметр("ОтборПоНоменклатуре", Номенклатура);
Запрос.УстановитьПараметр("ПоискПоНоменклатуре", Номенклатура);

РезультатЗапроса = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЗначениеВРеквизитФормы(РезультатЗапроса, "Дерево");

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


sali

он просто проходит весь код и выдает все товары

antoneus

Запрос.УстановитьПараметр("ОтборПоНоменклатуре", Номенклатура);
У меня разве так?

sali


sali

antoneus, НЕ ТАК
я что подставляю данные с реквизитов - Снимок экрана 2025-07-18 164319.png
&НаСервере
Процедура ЗаполнитьДеревоДанными(Номенклатура = неопределено)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Склад КАК Склад,
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество
|ПОМЕСТИТЬ вт_остатки
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
| вт_остатки.Склад КАК Склад,
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
| вт_остатки.Количество КАК Количество
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ вт_остатки КАК вт_остатки
| ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = вт_остатки.Номенклатура
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.ВидЦены.Наименование ПОДОБНО ""%розничная%""
| И ЦеныНоменклатурыСрезПоследних.Номенклатура.ПометкаУдаления = ЛОЖЬ
| И ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа = ЛОЖЬ
|{ГДЕ
| (ВЫБОР
| КОГДА &ОтборНоменклатуры
| ТОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.Родитель В ИЕРАРХИИ (&ОтборНоменклатуры)
| КОГДА &ПоискПоНоменклатуре
| ТОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура = &ПоискПоНоменклатуре
| ИНАЧЕ ИСТИНА
| КОНЕЦ) КАК Поле1}
|ИТОГИ ПО
| Номенклатура ИЕРАРХИЯ";   
Запрос.УстановитьПараметр("ОтборПоНоменклатуре", ЗначениеЗаполнено(ОтборНоменклатуры));
Запрос.УстановитьПараметр("ПоискПоНоменклатуре", ЗначениеЗаполнено(ПоискПоНоменклатуре));

РезультатЗапроса = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЗначениеВРеквизитФормы(РезультатЗапроса, "Дерево");

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

&НаКлиенте
Процедура ПоискПоНоменклатуреПриИзменении(Элемент)

Если Не ЗначениеЗаполнено(ПоискПоНоменклатуре) Тогда
Возврат;
КонецЕсли;

//ЗаполнитьСвойстваНоменклатуры(ПоискПоНоменклатуре);   
ЗаполнитьДеревоДанными(ПоискПоНоменклатуре);

// ДобавитьПозициюНоменклатуры(СтруктураПараметров);                                                                                                                             
ПоискПоНоменклатуре = Неопределено;

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

&НаКлиенте
Процедура ОтборНоменклатурыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
//СтруктураПараметров = ЗаполнитьСвойстваНоменклатурыПоОтбору(ВыбранноеЗначение);

ЗаполнитьДеревоДанными(ВыбранноеЗначение);

//ЗаполнитьСвойстваНоменклатурыПоОтбору(ВыбранноеЗначение);


//ДобавитьПозициюНоменклатурыпо(СтруктураПараметров);
ОтборНоменклатуры = Неопределено;

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


sali

оно везде пишет ложь, не заполнено

Теги:

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

Рейтинг@Mail.ru

Поиск