Имя: Пароль:
1C
1С v8
8.3 УТ 11.5
0 saradip
 
23.10.22
20:50
Подскажите, хочу установить сообщение с наводкой на строку ТЧ, а именно поле ВидЦены, но в итоге не наводится ошибка, хотя если передать поле Контрагент, то работает.
Что я делаю не так?
    МассивСтрокТовары = ЭтотОбъект.Товары;  
    Если НЕ МассивСтрокТовары = Неопределено Тогда

        Для каждого Строка из МассивСтрокТовары Цикл
            Если Строка.ВидЦены.Пустая() Тогда  
            //Сообщить("Произвольная цена запрещена!", СтатусСообщения.ОченьВажное);
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Произвольная цена запрещена!";
            Сообщение.Поле = "Строка.ВидЦены";
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();
            Отказ = Истина;
            КонецЕсли;
        КонецЦикла;
        
        
    КонецЕсли;
1 saradip
 
23.10.22
21:06
Разобрался

    
    Если ЭтотОбъект.Товары.Количество() > 0 Тогда
        
    Для каждого Строка из ЭтотОбъект.Товары Цикл
            Если Строка.ВидЦены.Пустая() Тогда  
            //Сообщить("Произвольная цена запрещена!", СтатусСообщения.ОченьВажное);
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Произвольная цена запрещена!";
            Сообщение.Поле = "Товары[Строка.НомерСтроки - 1].ВидЦены";
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();
            Отказ = Истина;
            КонецЕсли;
        КонецЦикла;
        
    КонецЕсли;
2 saradip
 
23.10.22
21:29
Только так, а то индекс передается типом строки:

    Если ЭтотОбъект.Товары.Количество() > 0 Тогда
        
    Для каждого Строка из ЭтотОбъект.Товары Цикл
        Если Строка.ВидЦены.Пустая() Тогда      
            
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Произвольная цена запрещена!";
            Сообщение.Поле = "Товары["+(Строка.НомерСтроки - 1)+"].ВидЦены";
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();
            Отказ = Истина;
            
            КонецЕсли;
        
        КонецЦикла;
        
    КонецЕсли;
3 RomaH
 
naïve
24.10.22
12:40
Если ЭтотОбъект.Товары.Количество() > 0 Тогда
это зачем?
4 banco
 
24.10.22
14:35
(0) А почему не смотреть как в самой конфигурации сделано?

ПутьКТабЧасти = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Строка.НомерСтроки, "ВидЦены");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, ЭтотОбъект, ПутьКТабЧасти, , Отказ);
5 vicof
 
24.10.22
14:39
За такие темы банить нужно
6 Timon1405
 
24.10.22
15:12
(4)(5) правы. а "разобравшийся сам" ТС упадёт по НПП на 1001й строчке
Сообщение.Поле = "Товары["+(Строка.НомерСтроки - 1)+"].ВидЦены";