Имя: Пароль:
1C
1С v8
Регистр ОстаткиНоменклатуры
0 Юзер123
 
naïve
14.03.14
14:13
Всем доброго времени суток.

Подскажите в чем ошибка.

Есть док  ПриходНоменклатуры и Реализация.

1 документ  приходует  товар в определенном кол-ве по цене из документа  второй списывает  партионно.

У меня получается  ерунда. когда я делаю  первый приход - все ок.  есть Остаток например 10.

я делаю реализацию 2-х позиций. тож все верно показано что остаток 8.

если я делаю списание еще 4 позиций, то пишет что нет остатка. в отлодчике Остаток на момент проведения второго документа реализации =  2.   т.е. количество которое  списывалось в первый раз.



я понимаю что косяк бредовый) но уже залип. Вот код помогите плиз.


Функция ПровестиОстаткиТоваров(Конт) Экспорт
    Статус=0;
    
    ВидДок=Конт.Вид();
    
      
    // Поверяем приход или расход
    
    Если (ВидДок="РасходнаяНакладная") Тогда
        Операция="Расход";
    Иначе
        Операция="Приход";
    КонецЕсли;
              
    
    // Цикл по Таб части документа
    Конт.ВыбратьСтроки();
    Пока Конт.ПолучитьСтроку()=1 Цикл
        Если Конт.Товар.Выбран()=0 Тогда
            Сообщить("Не выбран товар в документе, строка "+Конт.НомерСтроки);
            Статус=1;
            Продолжить;
        КонецЕсли;      
        
        Товар=Конт.Товар;  
        
        Конт.Регистр.ОстаткиТМЦ.ПривязыватьСтроку(Конт.НомерСтроки);
        
        Товар.ИспользоватьДату(Конт.ДатаДок);
        
        Конт.Регистр.ОстаткиТМЦ.Товар=Товар;
        
        Колво=Конт.Количество;
        
        Цена  =  Конт.Цена;
        
        Остаток=Регистр.ОстаткиТМЦ.Остаток(Товар,"ОстатокТМЦ");
        
        
        
            
            
            Если Остаток<0 Тогда
            Сообщить("Отрицательный остаток товара"+Товар.Наименование+"");
            Статус=1;
            Продолжить;
            КонецЕсли;  

            
            Если Операция="Расход" Тогда  

            Если Остаток<Колво Тогда

            Сообщить("На складе меньше чем хотим списать!!!");    

            КонецЕсли;     
                
                
            КонецЕсли;     
        
        
        
        Конт.Регистр.ОстаткиТМЦ.Количество=Колво;
        Конт.Регистр.ОстаткиТМЦ.цена=Цена;    
        
        Если  Операция="Расход" Тогда
        Конт.Регистр.ОстаткиТМЦ.ОстатокТМЦ=Остаток -Колво  ;
                                                        
        иначе
        Конт.Регистр.ОстаткиТМЦ.ОстатокТМЦ=Остаток+Колво;
        КонецЕсли;            

  

        Остаток=Регистр.ОстаткиТМЦ.Остаток(Товар,"ОстатокТМЦ");

        
        
        Если Операция="Расход" Тогда
            Конт.Регистр.ОстаткиТМЦ.ДвижениеРасходВыполнить();
        Иначе
            Конт.Регистр.ОстаткиТМЦ.ДвижениеПриходВыполнить();
        КонецЕсли;

    КонецЦикла;
    
    Возврат Статус;
КонецФункции
1 vicof
 
14.03.14
14:23
(0) М..М..Может, посмотреть, как в типовых сделано?
2 Юзер123
 
naïve
14.03.14
14:25
Нет типовой)
3 Юзер123
 
naïve
14.03.14
14:41
fg
4 Юзер123
 
naïve
14.03.14
15:21
не актуально. Разобрался.