Имя: Пароль:
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) собрал структуру отбора нужной конфигурации и отправил в отбор, только предусмотри ситуацию, когда не выбрано ни одной строки ОтборСтрок = Неопределено, возможно, при вводе новой строки, у тебя пока не заполнены нужные поля, соответственно и отбор некорректный. Собственно, текущая строка уже установлена, но пустая (дообработай отбор после окончания редактирования строки)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший