Имя: Пароль:
1C
 
Обработка выполняет задуманную функцию — меняет срок гарантии в товарах выбранной группы.
0 Дима1С-ник
 
27.02.25
22:31
Добрый день, не могу перебрать группу....Почему-то перебирает все группы а ту которую указывает пользователь....

Процедура УстановитьНаСервере()
    ////}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА           
    
         //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка КАК Ссылка,
        |    Номенклатура.СрокГарантии КАК СрокГарантии
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();       

    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл  
        
        Если  НЕ ЗначениеЗаполнено(Объект.ГруппаНоменклатуры) Тогда
            Сообщить("Не выбрана группа справочника Номенклатура!");  
            Возврат;
        Иначе СправочникОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();                
                
        СправочникОбъект.СрокГарантии = Объект.СрокГарантии;
        
        СправочникОбъект.Записать();
        
        
        КонецЕсли;
        
    КонецЦикла;  
    
        
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    
    
КонецПроцедуры
1 PR
 
27.02.25
22:40
42
2 Дима1С-ник
 
27.02.25
22:46
Перебирает все группы Номенклатуры, а не ту которую указывает пользователь....
3 PR
 
27.02.25
22:49
(2) Код работает правильно
Как ты написал, так и работает
Фильтра в запросе на выбранную группу нет, поэтому все и обрабатывает
4 Дима1С-ник
 
27.02.25
22:52
(3) Обязательно через фильтр запроса добавить, или можно в цикле это написать, чтобы перебирал именно группу что я указываю???
5 PR
 
27.02.25
22:54
(4) Зависит от принадлежности или непринадлежности к группе секс-меньшинств
6 craxx
 
28.02.25
05:57
(0) Дима, судя по вопросу, ты нифига не 1С-ник. Позови программиста.
7 breezee
 
28.02.25
06:11
(4) Можно и в цикле, но в запросе быстрее будет
8 mg-samara
 
28.02.25
06:21
...стаж: 2 дн...

зато низкий порог входа в профессию :-)
9 mg-samara
 
28.02.25
06:23
"ту которую указывает пользователь...."

А как программа узнает какую он указал?
Наверное силой мысли?


Покажи в коде где ты используешь группу "ту которую указывает пользователь...."?
10 Дима1С-ник
 
28.02.25
07:36
(8) Пока только 1-я неделя, учусь понемногу....
11 Волшебник
 
28.02.25
07:41
(0) В запросе нет отбора
ГДЕ Ссылка В ИЕРАРХИИ (&Группа)
12 Дима1С-ник
 
28.02.25
07:41
в коде (в цикле перебора) есть только условие если пользователь не выбрал группу номенклатуры.....
13 Волшебник
 
28.02.25
07:42
(12) Отбор по группе должен быть в запросе
14 Дима1С-ник
 
28.02.25
07:49
(11) (13) хорошо, понял принял
15 mg-samara
 
28.02.25
09:09
(12)
Конечно правильно сразу писать условие в запросе.

Но и в цикле код написан все равно неверно.
У тебя просто пропускаются элементы у которых не заполнена группа. Причем цикл прерывается как только найдется первый такой элемент. А проверки на то как отобрать элементы по той группе, которую указал пользователь нет.
16 Волшебник
 
28.02.25
09:33
Если хочется сделать выбор группы необязательным, то условие в запросе можно сделать таким:

ГДЕ (&ВсеГруппы ИЛИ Ссылка В ИЕРАРХИИ (&ВыбГруппа))

и ниже:
Запрос.УстановитьПараметр("Группа", ВыбГруппа);
Запрос.УстановитьПараметр("ВсеГруппы", ВыбГруппа.Пустая());
17 Мультук
 
гуру
28.02.25
09:34
(16)

Воу-воу. Полегче.
Тут "мама мыла раму", а ты уже про синхрофазотроны :-)
18 Волшебник
 
28.02.25
09:37
(17) нейронки быстро учатся
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший