Имя: Пароль:
1C
1С v8
При проводке документа у всей номенклатуры сумма становиться последней номенклатуры
0 jinny84
 
21.08.19
17:44
Добрый день. Не подскажете в чем косяк: При проводке документа у всей номенклатуры сумма становиться последней номенклатуры

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