Имя: Пароль:
1C
1С v8
Задача по сравнению остатка
,
0 Медвепут
 
04.06.14
12:05
Есть некий статус документа обработано ,не обработано

при изменении его таб часть выгружаем в регистр

при повторном изменении сравниваем таб часть с регистром поля

номен .колич


Как бы вы реализовали данный механизм ?
1 Господин ПЖ
 
04.06.14
12:09
если для уф - взять из БСП "версионность"
2 Медвепут
 
04.06.14
12:39
8/1 не уф к сожалению
3 Kalambur
 
04.06.14
12:42
ПередЗаписью сравнивают таблицу и записи регистра
4 Яйца 1С
 
04.06.14
12:52
(0) Запросом!
5 kosts
 
04.06.14
12:57
Цикл по строкам с вложенным циклом по колонкам, с вложенным условием. В 10 строк уложиться можно
6 МихаилМ
 
04.06.14
13:02
7 Медвепут
 
04.06.14
16:50
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
    // Данный фрагмент построен конструктором.
    Если  Статус = Перечисления.Статусы.Необработано Тогда    
          
    Для Каждого ТекСтрокаСписокТоваров Из СписокТоваров Цикл
        // регистр СтатусыР Расход
        Движение = Движения.СтатусыР.Добавить();
        //Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Номенклатура = ТекСтрокаСписокТоваров.Номенклатура;
        Движение.КоличФакт= ТекСтрокаСписокТоваров.Количество;
         Движения.СтатусыР.Записать();
     КонецЦикла;
     КонецЕсли;

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

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

                         
                    
        Конецесли;
    КонецЦикла;
    
    
  

КонецПроцедуры
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.