Имя: Пароль:
1C
1С v8
v8: ОбработкаПроведения и контроль остатка на складе
0 LehhaK
 
24.08.12
11:25
Добрый день!
Делаю контроль остатков на складе.
Получается ересь, хуже чем Пусси Риот:
Процедура ОбработкаПроведения(Отказ, Режим)


   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    РасхНаклТовары.Номенклатура,
                  |    РасхНаклТовары.Количество
                  |ПОМЕСТИТЬ ВТНоменклатура
                  |ИЗ
                  |    Документ.РасхНакл.Товары КАК РасхНаклТовары
                  |;
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |    ТоварыНаСкладеОстатки.Товар,
                  |    ТоварыНаСкладеОстатки.КоличествоОстаток,
                  |    ВТНоменклатура.Номенклатура КАК Номенклатура,
                  |    ВТНоменклатура.Количество
                  |ИЗ
                  |    ВТНоменклатура КАК ВТНоменклатура
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки  КАК ТоварыНаСкладеОстатки
                  |        ПО ВТНоменклатура.Номенклатура = ТоварыНаСкладеОстатки.Товар
                  |ГДЕ
                  |    ТоварыНаСкладеОстатки.КоличествоОстаток > 0
                  |
                  |СГРУППИРОВАТЬ ПО
                  |    ВТНоменклатура.Номенклатура,
                  |    ТоварыНаСкладеОстатки.Товар,
                  |    ТоварыНаСкладеОстатки.КоличествоОстаток,
                  |    ВТНоменклатура.Количество
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    Номенклатура";
                 
                  Результат = Запрос.Выполнить().Выгрузить();
                 
       Для каждого стр из Результат Цикл
                     
           Если стр.Количество > стр.КоличествоОстаток Тогда

           Сообщить("Недостаточно товара " + стр.Номенклатура + ", из необходимых " + стр.Количество + " в наличие есть только " + стр.КоличествоОстаток);

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

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

КонецЕсли;

КонецЦикла;
   
КонецПроцедуры

В стр.Количество попадает количество из всех проведенных ранее документов. Как с этим бороться?
1 mikecool
 
24.08.12
11:26
а чего ты хотел от этого
ВЫБРАТЬ
                  |    РасхНаклТовары.Номенклатура,
                  |    РасхНаклТовары.Количество
                  |ПОМЕСТИТЬ ВТНоменклатура
                  |ИЗ
                  |    Документ.РасхНакл.Товары КАК РасхНаклТовары
где условия?
2 Wobland
 
24.08.12
11:26
в первом выбрать условие про ссылку добавь
3 LehhaK
 
24.08.12
11:29
Блеин, вы гении :)
Спасибо!
Независимо от того, куда вы едете — это в гору и против ветра!