Имя: Пароль:
1C
 
Ошибка в чтении значения
0 ZloyRafa
 
19.09.16
07:29
Создал запрос, провел документ движения не отработали, отладчиком пошел по выборке

РезультатЗапроса = Запрос.Выполнить();//Работает
    
    Выборка = РезультатЗапроса.Выбрать();//В Выборке ошибка чтения значения.
Поэтому видимо движений нет, а в чем ошибка не пойму


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

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

    //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецЕсли;

КонецЦикла;
     Движения.ОстаткиНоменклатуры.Записывать = Истина;
    Движения.Себестоимость.Записывать             = Истина;

    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

    КонецПроцедуры
1 Рэйв
 
19.09.16
07:31
В чем вопрос то?
2 ZloyRafa
 
19.09.16
07:32
(1) Движения не проходят, почему не понимаю.
3 чувак
 
19.09.16
07:35
(2) отладчик в цикле что-то поймал?
4 DDwe
 
19.09.16
07:38
Про отладчик говорили?
5 ZloyRafa
 
19.09.16
07:40
отладчиком пошел по выборке

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

    
    Выборка = РезультатЗапроса.Выбрать()//В Выборке ошибка чтения значения.
6 чувак
 
19.09.16
07:43
(5) В консоли отчета пробовал?
7 jsmith
 
19.09.16
07:46
Ошибка чтения значения это баг платформы
8 jsmith
 
19.09.16
07:47
В отладчике посмотри Запрос.Выполнить().Выгрузить()
9 Mauser
 
19.09.16
07:48
(5) По выборке ты пойдешь, когда выполнится первый раз .Следующий()
10 ZloyRafa
 
19.09.16
07:48
всем спасибо за отклики, проблему решил.
11 Mauser
 
19.09.16
07:49
(7) Точно-точно, в 8.1.76 только и починили
12 Mauser
 
19.09.16
07:49
(10) И что же там было?
13 ZloyRafa
 
19.09.16
07:59
(12) Движение только первое сработало, ошибка "Значение не является значением объектного типа(Услуга)"
Строка: Если НЕ Выборка.Номенклатура.Услуга=Истина Тогда