Имя: Пароль:
1C
1С v8
Ошибка при проведении документа
,
0 Lecowi
 
12.05.19
21:33
При попытке проведении документа выкидывает ошибку. Не удается понять в чем причина.

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ОтпускМатериалов.МодульОбъекта(51)}: Поле объекта не обнаружено (ОстаткиНаСкладе)
    Движение.ОстаткиНаСкладе.Очистить();

Процедура из МодуляОбъекта Документ.ОтпускМатериалов

Процедура ОбработкаПроведения(Отказ, Режим)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

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

|////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Товары.Номенклатура КАК Номенклатура,
        |    Товары.Количество КАК Количество
        |ИЗ
        |    Товары КАК Товары";
    
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    РезультатЗапроса = Запрос.Выполнить();
    
    Движение.ОстаткиНаСкладе.Очистить();
    ВыборкаТовары = РезультатЗапроса.Выбрать();
    Пока ВыборкаТовары.Следующий() Цикл
        Движение = Движение.ОстаткиНаСкладе.ДобавитьРасход();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Номенклатура = ВыборкаТовары.Номенклатура;
        Движение.Количество = ВыборкаТовары.Количество;
    КонецЦикла;
    
    Движение.ОстаткиНаСкладе.Записывать = Истина;
    Движение.Записать();
    
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Остатки.Номенклатура КАК номенклатура,
        |    Остатки.Склад КАК склад,
        |    ПРЕДСТАВЛЕНИЕССЫЛКИ(Остатки.Номенклатура) КАК номенклатураПредставление,
        |    -Остатки.КоличествоОстаток КАК дефицит
        |ИЗ
        |    РегистрНакопления.ОстаткиНаСкладе.Остатки(
        |            &моментвремени,
        |            Номенклатура В
        |                (ВЫБРАТЬ
        |                    Товары.Номенклатура КАК Номенклатура
        |                ИЗ
        |                    Товары КАК Товары)) КАК Остатки
        |ГДЕ
        |    Остатки.КоличествоОстаток < 0";
    
    ГраницаКонтроля = Новый Граница(МоментВремени(), ВидГраницы.Включая);
    Запрос.УстановитьПараметр("моментвремени", ГраницаКонтроля);    
    РезультатЗапроса = Запрос.Выполнить();
    
    //
    Если Не РезультатЗапроса.Пустой()Тогда
        Отказ = Истина;
        ВыборкаОшибки = РезультатЗапроса.Выбрать();
        Пока ВыборкаОшибки.Следующий() Цикл
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "Номенклатуры " + ВыборкаОшибки.НоменклатураПредставление + "недостаточно в количество " +ВыборкаОшибки.Дефецит+" шт.";
            Сообщение.Сообщить();
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры
1 Beduin
 
12.05.19
21:35
(0) В список движений регистр накопления "ОстаткиНаСкладе" включен у документа?
2 Lecowi
 
12.05.19
21:38
Да
3 palsergeich
 
12.05.19
21:39
тебя опечатка
Движение.ОстаткиНаСкладе.Очистить
А надо
Движения.ОстаткиНаСкладе.Очистить
4 Lecowi
 
12.05.19
21:45
Все работает, спасибо
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой