Имя: Пароль:
1C
1С v8
Как адаптировать код из расходной накладной для перемещения между складами?
0 Саша Да Саша
 
31.12.19
12:01
Есть документ "перемещение между складами",есть реквизиты: склад-отправитель и склад-получатель.
Для отправителя организовал движение по регистру в расход,а для получателя соответственно-приход.
Для документа "расходная накладная" организовал контроль остатков,вопрос: как код из обработки проведения для расходной адаптировать под перемещение между складами?
Код:



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