Имя: Пароль:
1C
 
Отбор для таблице значений на форме. Глюк?
0 егаис
 
27.06.26
16:02
&НаКлиенте
Процедура ДеревоЗаявокПриАктивизацииСтроки(Элемент)  
    
    ТекущиеДанные = Элементы.ДеревоЗаявок.ТекущиеДанные;  
    
    Если ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Если ТекущиеДанные.НомерЗаявки <> "" Тогда  
        ОтборПоКорзинe =  Новый ФиксированнаяСтруктура("НомерЗаявки",ТекущиеДанные.НомерЗаявки);
        
        Если НЕ ТекущиеДанные.ТМЦ.Пустая() Тогда  
            ОтборПоКорзинe =  Новый ФиксированнаяСтруктура("НомерЗаявки,ТМЦ",ТекущиеДанные.НомерЗаявки,ТекущиеДанные.ТМЦ);

            Если НЕ ТекущиеДанные.ФизЛицо.Пустая() Тогда  
                ОтборПоКорзинe =  Новый ФиксированнаяСтруктура("НомерЗаявки,ТМЦ,ФизЛицо",ТекущиеДанные.НомерЗаявки,ТекущиеДанные.ТМЦ,ТекущиеДанные.ФизЛицо);
            КонецЕсли;    
        КонецЕсли;    
    КонецЕсли;    
    Элементы.КорзинаВыдаваемыхТМЦ.ОтборСтрок = ОтборПоКорзинe;

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


Если я нахожусь на строке, где заполнен номер заявки или ТМЦ, все корректно.
Как только выбираю строку с заполненным ФизЛицо
условие Если ТекущиеДанные.НомерЗаявки <> "" Тогда  не работает
Хотя в отладке НомерЗаявки присвоен.

Текущие данные - это строки дерева значений. Группировки НомерЗаявки/ТМЦ/Физлицо. Т.е при заполенном физлицо номерзаявки не может быть пустим никак.
Это глюк какой-то недокументированный?
3 Chameleon1980
 
27.06.26
16:24
пошагово в отладку
с отбором строк проблем замечено не было
4 егаис
 
27.06.26
16:26
Тупанул. Надо было в фиксированную структуру засунуть структуру с параметрами отбора. Вопрос закрыт.

    СтруктураПараметров = Новый Структура;
    
    Если ТекущиеДанные.НомерЗаявки <> "" Тогда  
        СтруктураПараметров.Вставить("НомерЗаявки",ТекущиеДанные.НомерЗаявки);
    КонецЕсли;
    Если НЕ ТекущиеДанные.ТМЦ.Пустая() Тогда  
        СтруктураПараметров.Вставить("ТМЦ",ТекущиеДанные.ТМЦ);
    КонецЕсли;
    Если НЕ ТекущиеДанные.ФизЛицо.Пустая() Тогда  
        СтруктураПараметров.Вставить("ФизЛицо",ТекущиеДанные.ФизЛицо);
    КонецЕсли;
    Элементы.КорзинаВыдаваемыхТМЦ.ОтборСтрок = Новый ФиксированнаяСтруктура(СтруктураПараметров);
5 Chameleon1980
 
27.06.26
16:25
ак только выбираю строку с заполненным ФизЛицо
покажите, что в этот момент в ТекущиеДанные.НомерЗаявки
в табло
6 Fedor-1971
 
29.06.26
14:32
(0) твой изначальный алгоритм не равен (4)
   Если ТекущиеДанные.НомерЗаявки <> "" Тогда  
        ОтборПоКорзинe =  Новый ФиксированнаяСтруктура("НомерЗаявки",ТекущиеДанные.НомерЗаявки);
        
        Если НЕ ТекущиеДанные.ТМЦ.Пустая() Тогда  
            ОтборПоКорзинe =  Новый ФиксированнаяСтруктура("НомерЗаявки,ТМЦ",ТекущиеДанные.НомерЗаявки,ТекущиеДанные.ТМЦ);

            Если НЕ ТекущиеДанные.ФизЛицо.Пустая() Тогда  
                ОтборПоКорзинe =  Новый ФиксированнаяСтруктура("НомерЗаявки,ТМЦ,ФизЛицо",ТекущиеДанные.НомерЗаявки,ТекущиеДанные.ТМЦ,ТекущиеДанные.ФизЛицо);
            КонецЕсли;    
        КонецЕсли;    
    КонецЕсли;    

У тебя не будет формироваться структура если НомерЗаявки =""
В (4) собрал структуру отбора нужной конфигурации и отправил в отбор, только предусмотри ситуацию, когда не выбрано ни одной строки ОтборСтрок = Неопределено, возможно, при вводе новой строки, у тебя пока не заполнены нужные поля, соответственно и отбор некорректный. Собственно, текущая строка уже установлена, но пустая (дообработай отбор после окончания редактирования строки)