Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Ошибка при проведении документа

Ошибка при проведении документа
Я
   Lecowi
 
13.05.19 - 10:14
При попытке проведения пишет ошибку, что недостаточно товара для продажи. К примеру, я закупаю 10 валиков, они отображаются у меня в остатках, но когда я продаю валик хотя бы в одном количестве, пишет, что недостаточно.

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

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

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

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

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

на всех складах проверяете, что ли?
   sqr4
 
2 - 13.05.19 - 10:25
Пока ВыборкаТовары.Следующий() Цикл 
        Движение = Движения.ОстаткиНаСкладе.ДобавитьРасход(); 
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход; 
        Движение.Период = Дата; 
        Движение.Номенклатура = ВыборкаТовары.Номенклатура; 
        Движение.Количество = ВыборкаТовары.Количество; 
    КонецЦикла; 

ДА и тут что то складом и не пахнет. Как я понимаю, прихода на пустой склад у вас нет)
   Lecowi
 
3 - 13.05.19 - 10:35
Спасибо, заработало

Список тем форума
Рекламное место пустует  Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.