Имя: Пароль:
1C
 
Установка данных класса СообщениеПользователю
0 pro3ri
 
08.05.15
13:04
Добрый день!
Был код в МО, перенес в общий модуль, не работает(не указывает на конкр строку ТЧ):

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

Как побороть?
1 asady
 
08.05.15
13:23
(0) Попробуй

Сообщение.Поле =  ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Товары", Выборка.НомерСтроки, "Количество");
                ,
2 asady
 
08.05.15
13:24
(1)+ если нет такой функции вот ее код

Функция ПутьКТабличнойЧасти(Знач ИмяТабличнойЧасти, Знач НомерСтроки,
    Знач ИмяРеквизита) Экспорт

    Возврат ИмяТабличнойЧасти + "[" + Формат(НомерСтроки - 1, "ЧН=0; ЧГ=0") + "]." + ИмяРеквизита;

КонецФункции
3 pro3ri
 
08.05.15
13:27
(1) добил сам, может не супер оптимально, но ворк:

Процедура РеализацияТоваров(Движения, ЭтотОбъект, ПровестиБезКонтроля = Ложь) Экспорт

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


КонецПроцедуры
4 pro3ri
 
08.05.15
13:42
(2) спс все равно