Имя: Пароль:
1C
1С v8
v8: Не формируются движения по регистрам
0 Jupiter
 
05.08.14
21:41
День добрый господа.
1С 8.3

Помогите новичку. Ошибок не выдает документ проводит но движения по регистрам не формируются.

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

        
        // Регистр ОстаткиТоваров Расход
        Движение = Движения.ТоварыНаСкладах.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        Движение.Склад = Склад;
        Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;

        Движение = Движения.Продажи.Добавить();
        Движение.Период = Дата;
        Движение.Организация = Организация;
        Движение.Покупатель = Покупатель;
        Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
        Движение.ЦенаПродажная = ВыборкаДетальныеЗаписи.Цена;
        Движение.Себестоимость = ВыборкаДетальныеЗаписи.Количество * Себестоимость;
        
        Движение = Движения.СебестоимостьТоваров.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
        Движение.Количество = ВыборкаДетальныеЗаписи.Количество;
        Движение.Стоимость = ВыборкаДетальныеЗаписи.Количество * Себестоимость;
    КонецЦикла;
    
    КонецПроцедуры
1 Jupiter
 
05.08.14
21:53
Отладчиком смотрел. В цикл не проваливается. Почему понять не могу.
2 Крошка Ру
 
05.08.14
21:56
(0) Выборка не пустая?

И, кстати, зачем в ВТ регистров условия по номенклатуре? Ведь соединения по этой же номенклатуре с этой же временной таблицой идут.
3 Крошка Ру
 
05.08.14
21:56
?
4 Крошка Ру
 
05.08.14
22:01
И ещё кстати: а зачем временную таблицу в отдельном запросе?
5 Jupiter
 
05.08.14
22:02
Выборка не пустая.
Пробовал использовать временные таблицы.
6 Крошка Ру
 
05.08.14
22:05
(5) Что значит "пробовал"? Ты и сейчас её используешь. Зачем разбивать запрос на два - не очень понятно. Но дело твое.
7 Крошка Ру
 
05.08.14
22:06
(5) Если выборка не пустая, значит заходит в цикл.
8 Jupiter
 
05.08.14
22:07
И должны быть движения?
9 Крошка Ру
 
05.08.14
22:08
Вот здесь ошибка:

РеализацияТоваровТовары.Номенклатура.Ссылка = &Ссылка
10 hhhh
 
05.08.14
22:08
(8) вот это

        |ГДЕ
        |    РеализацияТоваровТовары.Номенклатура.Ссылка = &Ссылка

сравниваешь номенклатуру с документом реализацией. Они никогда не сравнятся. Даже если в бубен стучать на уровне 10 см от пола.
11 Крошка Ру
 
05.08.14
22:08
Передаешь ссылку на документ, а сравниваешь с ссылкой номенклатуры
12 Крошка Ру
 
05.08.14
22:10
И в "продажи" зачем количество остатков запихивать?
13 Jupiter
 
05.08.14
22:12
Уже запарился, там количество проданного товара должно быть.
14 Jupiter
 
05.08.14
22:15
Спасибо. Помогло. Нужно передохнуть наверно и свежими глазами на ког глянуть.
15 ДенисЧ
 
05.08.14
22:16
(14) Да. На когг нужно глянуть. И топор заточить. И главное - бороду расчесать и элю выпить! А потом уже можно и на Британию идти...
16 Крошка Ру
 
05.08.14
22:22
(15) Во славу Одина, предводителя асов!
Или короче - 1Сов!