Имя: Пароль:
1C
 
Как сделать вывод сообщения пользователю в табл часть?
0 program345
 
29.03.15
10:36
Добрый день!
Имеется код:
//
Процедура ОбработкаПроведения(Отказ, Режим)
    
    // регистр ТоварыНаСкладах Расход
    Движения.ТоварыНаСкладах.Записывать = Истина;
    МассивТоваров = Новый Массив;
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.ТоварыНаСкладах.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
        Движение.Цена = ТекСтрокаТовары.Цена;
        Движение.Количество = ТекСтрокаТовары.Количество;
        Движение.Контрагент = Контрагент;
        МассивТоваров.Добавить(ТекСтрокаТовары.Номенклатура);
    КонецЦикла;
    Движения.Записать();
    //РегистрыНакопления.ТоварыНаСкладах.Остатки().Найти(ТекСтрокаТовары.Номенклатура,"Номенклатура")
            
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ТоварыНаСкладахОстатки.Номенклатура,
                          |    ТоварыНаСкладахОстатки.КоличествоОстаток
                          |ИЗ
                          |    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В (&Товары)) КАК ТоварыНаСкладахОстатки
                          |ГДЕ
                          |    ТоварыНаСкладахОстатки.КоличествоОстаток < 0");
                          
    Запрос.УстановитьПараметр("Товары", МассивТоваров);
    Результат = Запрос.Выполнить();
    Если Не Результат.Пустой() Тогда
        
        Отказ = Истина;
        Выгрузка = Результат.Выгрузить();
        Для каждого Строка Из Выгрузка Цикл
        
            //Сообщить("Не хватает " + (Строка.КоличествоОстаток*-1) + " единиц товара "+ Строка.Номенклатура);
            Сообщение = Новый СообщениеПользователю();
            Сообщение.Текст = "Не хватает " + (Строка.КоличествоОстаток*-1) + " единиц товара "+ Строка.Номенклатура;
            Сообщение.Поле = "Номенклатура[1].Количество";
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();

        КонецЦикла;
                
    КонецЕсли;
    
КонецПроцедуры
//

Требуется вывод сообщения пользователю непосредственно над Номенклатурой товаров, которого недостаточно, как наладить?
1 Fragster
 
гуру
29.03.15
10:45
убери "установить данные"
2 program345
 
29.03.15
10:52
(1) убрал, не помогло, окошко перестало выходить
3 program345
 
29.03.15
10:59
Если Не Результат.Пустой() Тогда
        
        Отказ = Истина;
        Выгрузка = Результат.Выгрузить();
        Для каждого Строка Из Выгрузка Цикл
        
            //Сообщить("Не хватает " + (Строка.КоличествоОстаток*-1) + " единиц товара "+ Строка.Номенклатура);
            Сообщение = Новый СообщениеПользователю();
            Сообщение.Текст = "Не хватает " + (Строка.КоличествоОстаток*-1) + " единиц товара "+ Строка.Номенклатура;
            Сообщение.Поле = "Товары[товары.найти(Строка.Номенклатура).НомерСтроки].Номенклатура";
            
            
            //товары.найти(Строка.Номенклатура).НомерСтроки
        КонецЦикла;
        Сообщение.УстановитьДанные(ЭтотОбъект);
        Сообщение.Сообщить();
                
    КонецЕсли;

так выходит только для 1 строки ТЧ
4 program345
 
29.03.15
11:15
//
Сообщение = Новый СообщениеПользователю();
        
        Для каждого Строка Из Выгрузка Цикл
        
            //Сообщить("Не хватает " + (Строка.КоличествоОстаток*-1) + " единиц товара "+ Строка.Номенклатура);
            Сообщение.Текст = "Не хватает " + (Строка.КоличествоОстаток*-1) + " единиц товара "+ Строка.Номенклатура;
            Сообщение.Поле = "Товары[товары.найти(Строка.Номенклатура).НомерСтроки-1].Номенклатура";
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();
            
            //товары.найти(Строка.Номенклатура).НомерСтроки
        КонецЦикла;

//
так должно работать но увы
5 program345
 
29.03.15
12:24
вот решение:

//
Процедура ОбработкаПроведения(Отказ, Режим)
    
    // регистр ТоварыНаСкладах Расход
    МассивТоваров = Новый Массив;
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Движение = Движения.ТоварыНаСкладах.ДобавитьРасход();
        Движение.Период = Дата;
        Движение.Номенклатура = ТекСтрокаТовары.Номенклатура;
        Движение.Количество = ТекСтрокаТовары.Количество;
    КонецЦикла;
    Движения.ТоварыНаСкладах.Записать();
    
    #область моя
    //Движения.Записать();
    ////РегистрыНакопления.ТоварыНаСкладах.Остатки().Найти(ТекСтрокаТовары.Номенклатура,"Номенклатура")
    //        
    //Запрос = Новый Запрос("ВЫБРАТЬ
    //                      |    ТоварыНаСкладахОстатки.Номенклатура,
    //                      |    ТоварыНаСкладахОстатки.КоличествоОстаток
    //                      |ИЗ
    //                      |    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В (&Товары)) КАК ТоварыНаСкладахОстатки
    //                      |ГДЕ
    //                      |    ТоварыНаСкладахОстатки.КоличествоОстаток < 0");
    //                      
    //Запрос.УстановитьПараметр("Товары", МассивТоваров);
    //Результат = Запрос.Выполнить();
    //Если Не Результат.Пустой() Тогда
    //    
    //    Отказ = Истина;
    //    Выгрузка = Результат.Выгрузить();
    //    
    //    Сообщение = Новый СообщениеПользователю();
    //    
    //    Для каждого Строка Из Выгрузка Цикл
    //    
    //        //Сообщить("Не хватает " + (Строка.КоличествоОстаток*-1) + " единиц товара "+ Строка.Номенклатура);
    //        Сообщение.Текст = "Не хватает " + (Строка.КоличествоОстаток*-1) + " единиц товара "+ Строка.Номенклатура;
    //        Сообщение.Поле = "Товары[товары.найти(Строка.Номенклатура).НомерСтроки-1].Количество";
    //        Сообщение.УстановитьДанные(ЭтотОбъект);
    //        Сообщение.Сообщить();
    //        
    //        //товары.найти(Строка.Номенклатура).НомерСтроки
    //    КонецЦикла;
    //                    
    //КонецЕсли;
    #КонецОбласти     
    
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ТоварыНаСкладахОстатки.Номенклатура,
                          |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Нехватка,
                          |    Док.НомерСтроки
                          |ИЗ
                          |    РегистрНакопления.ТоварыНаСкладах.Остатки(
                          |            &Момент,
                          |            Номенклатура В
                          |                (ВЫБРАТЬ РАЗЛИЧНЫЕ
                          |                    РеализацияТоваровИУслугТовары.Номенклатура
                          |                ИЗ
                          |                    Документ.РеализацияТоваровИУслуг.Товары КАК РеализацияТоваровИУслугТовары
                          |                ГДЕ
                          |                    РеализацияТоваровИУслугТовары.Ссылка = &Ссылка)) КАК ТоварыНаСкладахОстатки
                          |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                          |            РеализацияТоваровИУслугТовары.Номенклатура КАК Номенклатура,
                          |            МАКСИМУМ(РеализацияТоваровИУслугТовары.НомерСтроки) КАК НомерСтроки
                          |        ИЗ
                          |            Документ.РеализацияТоваровИУслуг.Товары КАК РеализацияТоваровИУслугТовары
                          |        ГДЕ
                          |            РеализацияТоваровИУслугТовары.Ссылка = &Ссылка
                          |        
                          |        СГРУППИРОВАТЬ ПО
                          |            РеализацияТоваровИУслугТовары.Номенклатура) КАК Док
                          |        ПО ТоварыНаСкладахОстатки.Номенклатура = Док.Номенклатура
                          |ГДЕ
                          |    ТоварыНаСкладахОстатки.КоличествоОстаток < 0");
                          
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Граница = Новый Граница(МоментВремени(), ВидГраницы.Включая);
    Запрос.УстановитьПараметр("Момент", Граница);
    Результат = Запрос.Выполнить();
    Если Не Результат.Пустой() Тогда
    
        Отказ = Истина;
        Выборка = Результат.Выбрать();
        Пока Выборка.Следующий() Цикл
        
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Нехватка товара в кол-ве" + (-Выборка.Нехватка);
            Сообщение.Поле = "Товары["+(Выборка.НомерСтроки-1)+"].Количество";
            Сообщение.УстановитьДанные(ЭтотОбъект);
            Сообщение.Сообщить();            
        
        КонецЦикла;
    
    КонецЕсли;
    
КонецПроцедуры
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn