Имя: Пароль:
1C
 
Запрет на проведения при отрицательном и нулевом остатке
, ,
0 vadim1995
 
22.01.21
11:00
Добрый день, подскажите как мне поставить контроль в документ продажа товара. Там нужно что бы при минусовом или нулевом остатке во время проведения выходило сообщение и документ не проводился. Но проблема в том что он проводится в этих случаях и ни какого сообщения не выходит.

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

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

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

     Движения.Записать();
            
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПродажаТовараТовары.Товар КАК Товар
        |ПОМЕСТИТЬ ДокументТЧ
        |ИЗ
        |    Документ.ПродажаТовара.Товары КАК ПродажаТовараТовары
        |ГДЕ
        |    ПродажаТовараТовары.Ссылка = &Ссылка
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ТоварыНаСкладахОстатки.Товар.Представление КАК ТоварПредставление,
        |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток
        |ИЗ
        |    РегистрНакопления.ТоварыНаСкладах.Остатки(
        |            &Граница,
        |            Товар В
        |                    (ВЫБРАТЬ
        |                        ДокументТЧ.Товар КАК Товар
        |                    ИЗ
        |                        ДокументТЧ КАК ДокументТЧ)
        |                И Склад = &Склад) КАК ТоварыНаСкладахОстатки
        |ГДЕ
        |    ТоварыНаСкладахОстатки.КоличествоОстаток < 0";
    
    Запрос.УстановитьПараметр("Граница", Новый Граница(МоментВремени(),ВидГраницы.Включая));
    Запрос.УстановитьПараметр("Склад", Склад);
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Если ВыборкаДетальныеЗаписи.Количество() < 0 Тогда      
        
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить ("Недостаточно товара" + ВыборкаДетальныеЗаписи.ТоварПредставление +"! не хватает "+(-ВыборкаДетальныеЗаписи.КоличествоОстаток)+"шт.");
    КонецЦикла;
     Отказ = Истина;
    КонецЕсли;
КонецПроцедуры
1 Ненавижу 1С
 
гуру
22.01.21
11:21
Если ВыборкаДетальныеЗаписи.Количество() < 0 Тогда  //это мощное условие!!! ***проблема тут***
2 vadim1995
 
22.01.21
15:06
(1) Если вы имеете ввиду знак "<" то я его менял всё равно документ с минусовым и нулевым остатком выводился и сообщение которое я записал в коде не выходило
3 vadim1995
 
22.01.21
15:07
(2) * проводился
4 ChMikle
 
22.01.21
15:15
если это типовые конфигурации 1С , то в пользовательском меню попробуйте контроль остатков найти и выставить
5 DrShad
 
22.01.21
15:25
(2) оно вообще не нужно
6 vadim1995
 
22.01.21
15:26
(4) Это самописная конфигурация я сам её делаю
7 vadim1995
 
22.01.21
15:27
(5) Что не нужно ?
8 vadim1995
 
22.01.21
15:28
(5) Сообщение ?
9 DrShad
 
22.01.21
15:30
(8) условие
10 vadim1995
 
22.01.21
15:39
(9) А как же тогда без условия ?
11 DrShad
 
22.01.21
15:41
(10) легко, если в выборке не будет записей и то цикла не будет
12 del123
 
22.01.21
16:00
Главное отказ засунуть в цикл или сравнивать с пустой выборкой