Имя: Пароль:
1C
1С v8
Контроль остатков. Опять.
0 e2e4
 
26.02.15
23:45
Если коротко - фигли в результате запроса2 NULL'ы в остатках???
//Код
        МенеджерВТ = Новый МенеджерВременныхТаблиц;
        Запрос = Новый Запрос;
        Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
        Запрос.Текст =
            "ВЫБРАТЬ
            |    птиВыбытиеЖивотныхТовары.Номенклатура,
            |    птиВыбытиеЖивотныхТовары.Ферма,
            |    птиВыбытиеЖивотныхТовары.Ответственный
            |ПОМЕСТИТЬ ДанныеДокумента
            |ИЗ
            |    Документ.птиВыбытиеЖивотных.Товары КАК птиВыбытиеЖивотныхТовары
            |ГДЕ
            |    птиВыбытиеЖивотныхТовары.Ссылка = &Ссылка
            |СГРУППИРОВАТЬ ПО
            |    птиВыбытиеЖивотныхТовары.Номенклатура,
            |    птиВыбытиеЖивотныхТовары.Ферма,
            |    птиВыбытиеЖивотныхТовары.Ответственный";

        Запрос.УстановитьПараметр("Ссылка", Ссылка);

        РезультатЗапроса = Запрос.Выполнить();

        Запрос2 = Новый Запрос;
        Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
        Запрос2.Текст = "ВЫБРАТЬ
                        |    ДанныеДокумента.Номенклатура,
                        |    ДанныеДокумента.Ферма,
                        |    ДанныеДокумента.Ответственный,
                        |    птиЖивотныеНаФермахОстатки.КоличествоГоловОстаток,
                        |    птиЖивотныеНаФермахОстатки.ЖивойВесОстаток,
                        |    птиЖивотныеНаФермахОстатки.СуммаОстаток
                        |ИЗ
                        |    ДанныеДокумента КАК ДанныеДокумента
                        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.птиЖивотныеНаФермах.Остатки КАК

птиЖивотныеНаФермахОстатки
                        |        ПО ДанныеДокумента.Номенклатура = птиЖивотныеНаФермахОстатки.Номенклатура
                        |            И ДанныеДокумента.Ферма = птиЖивотныеНаФермахОстатки.Ферма
                        |            И ДанныеДокумента.Ответственный = птиЖивотныеНаФермахОстатки.Ответственный";
        
        РезультатЗапроса = Запрос2.Выполнить();
        
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            сообщить(""+ВыборкаДетальныеЗаписи.Номенклатура + " | "+ВыборкаДетальныеЗаписи.Ферма + " |

"+ВыборкаДетальныеЗаписи.Ответственный + " | "+
            ВыборкаДетальныеЗаписи.КоличествоГоловОстаток + " | "+ВыборкаДетальныеЗаписи.ЖивойВесОстаток + " |

"+ВыборкаДетальныеЗаписи.СуммаОстаток + " | ");
            // Вставить обработку выборки ВыборкаДетальныеЗаписи
        КонецЦикла;

- в результате выполнения всей этой шарманки я благополучно получаю сообщения со всеми Номенклатура-Ферма-Ответственный, которые имеются в табличке проводимого дока - но вместо остатков (а ресурса аж три штуки) одни NULL'ы. При этом визуальное изучение регистра накопления убеждает, что там,  в регистре накопления, до фуя искомой номенклатуры на указанных фермах у указанных конюхов...
1 e2e4
 
27.02.15
00:01
вот я тупень....даже не скажу, в чем было дело (то ли когда-то при переносе наработок забыл ссылочные объекты с собой захватить, то ли че - но два измерения в регистре оказались типа "Строка"...)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший